8baf3e7a3f3d2f9ed4fb3cb49d98ae0b5564043f
[hcoop/debian/mlton.git] / Makefile.binary
1 # Specify C compiler and binutils.
2 # Can be used for alternative tools (e.g., `CC=clang` or `CC=gcc-7`).
3 CC := gcc
4
5 # Specify GMP include and library paths, if not on default search paths.
6 WITH_GMP_DIR :=
7 ifneq ($(WITH_GMP_DIR),)
8 WITH_GMP_INC_DIR := $(WITH_GMP_DIR)/include
9 WITH_GMP_LIB_DIR := $(WITH_GMP_DIR)/lib
10 endif
11
12 # Specify installation prefix and staged install destination.
13 PREFIX := /usr/local
14
15 SED := sed
16
17 ######################################################################
18 ######################################################################
19
20 ROOT := $(shell pwd)
21
22 CP := cp -fpR
23 MKDIR := mkdir -p
24
25 ######################################################################
26
27 SBIN := $(ROOT)/bin
28 SLIB := $(ROOT)/lib/mlton
29 SMAN := $(ROOT)/share/man/man1
30 SDOC := $(ROOT)/share/doc/mlton
31
32 prefix := $(PREFIX)
33 exec_prefix := $(prefix)
34 bindir := $(exec_prefix)/bin
35 datarootdir := $(prefix)/share
36 docdir := $(datarootdir)/doc/mlton
37 libdir := $(exec_prefix)/lib
38 mandir := $(datarootdir)/man
39 man1dir := $(mandir)/man1
40
41 TBIN := $(bindir)
42 TLIB := $(libdir)/mlton
43 TMAN := $(man1dir)
44 TDOC := $(docdir)
45 TEXM := $(TDOC)/examples
46
47 .PHONY: install
48 install:
49 mkdir -p "$(TBIN)" "$(TLIB)" "$(TMAN)" "$(TDOC)"
50 $(CP) "$(SBIN)/." "$(TBIN)/"
51 $(CP) "$(SLIB)/." "$(TLIB)/"
52 $(CP) "$(SMAN)/." "$(TMAN)/"
53 if [ -d "$(SDOC)" ]; then $(CP) "$(SDOC)/." "$(TDOC)/"; fi
54
55 .PHONY: update
56 update:
57 $(CP) "$(SBIN)/mlton" "$(SBIN)/mlton.bak"
58 $(SED) \
59 -e "s;^CC=.*;CC=\"$(CC)\";" \
60 -e "s;^GMP_INC_DIR=.*;GMP_INC_DIR=\"$(WITH_GMP_INC_DIR)\";" \
61 -e "s;^GMP_LIB_DIR=.*;GMP_LIB_DIR=\"$(WITH_GMP_LIB_DIR)\";" \
62 < "$(SBIN)/mlton.bak" > "$(SBIN)/mlton"
63 chmod a+x "$(SBIN)/mlton"
64 $(RM) "$(SBIN)/mlton.bak"