| 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" |