|
|
HOST_ARCH := $(shell "$(SRC)/bin/host-arch") | HOST_ARCH := $(shell "$(SRC)/bin/host-arch") |
HOST_OS := $(shell "$(SRC)/bin/host-os") | HOST_OS := $(shell "$(SRC)/bin/host-os") |
LIB := $(BUILD)/lib | LIB := $(BUILD)/lib |
MLTON := mlton |
MLTON := ../../usr/bin/mlton |
TARGET := self | TARGET := self |
AOUT := mlton-compile | AOUT := mlton-compile |
UP := upgrade-basis.sml | UP := upgrade-basis.sml |
|
|
endif | endif |
endif | endif |
| |
ifeq (new,$(shell PATH="$(BIN):$$PATH"; mlton -target self >/dev/null 2>&1 && echo new)) |
ifeq (new,$(shell PATH="$(BIN):$$PATH"; $(MLTON) -target self >/dev/null 2>&1 && echo new)) |
FLAGS += -target $(TARGET) | FLAGS += -target $(TARGET) |
else | else |
FLAGS += -host $(TARGET) | FLAGS += -host $(TARGET) |
endif | endif |
ifeq (new,$(shell PATH="$(BIN):$$PATH"; mlton -verbose 1 >/dev/null 2>&1 && echo new)) |
ifeq (new,$(shell PATH="$(BIN):$$PATH"; $(MLTON) -verbose 1 >/dev/null 2>&1 && echo new)) |
FLAGS += -verbose 2 -output "$(AOUT)" | FLAGS += -verbose 2 -output "$(AOUT)" |
else | else |
FLAGS += -v -o "$(AOUT)" | FLAGS += -v -o "$(AOUT)" |
|
|
front-end/mlb.lex.sml \ | front-end/mlb.lex.sml \ |
front-end/mlb.grm.sig \ | front-end/mlb.grm.sig \ |
front-end/mlb.grm.sml \ | front-end/mlb.grm.sml \ |
$(shell if [ -r $(FILE) ]; then mlton -stop f $(FILE); fi) |
$(shell if [ -r $(FILE) ]; then $(MLTON) -stop f $(FILE); fi) |
| |
.PHONY: all | .PHONY: all |
all: $(AOUT) | all: $(AOUT) |
|
|
rm -f $(UP) | rm -f $(UP) |
$(MAKE) $(UP) | $(MAKE) $(UP) |
@echo 'Compiling mlton (takes a while)' | @echo 'Compiling mlton (takes a while)' |
mlton $(FLAGS) $(FILE) |
$(MLTON) $(FLAGS) $(FILE) |
| |
#! Pass $(PATH) to upgrade-basis because it is run via #!/usr/bin/env | #! Pass $(PATH) to upgrade-basis because it is run via #!/usr/bin/env |
# bash, which resets the path. | # bash, which resets the path. |
|
|
"$(SRC)/bin/upgrade-basis" '$(PATH)' "$(HOST_ARCH)" "$(HOST_OS)" >$(UP) | "$(SRC)/bin/upgrade-basis" '$(PATH)' "$(HOST_ARCH)" "$(HOST_OS)" >$(UP) |
| |
mlton.sml: $(SOURCES) | mlton.sml: $(SOURCES) |
rm -f mlton.sml && mlton -stop sml mlton.cm && chmod -w mlton.sml |
rm -f mlton.sml && $(MLTON) -stop sml mlton.cm && chmod -w mlton.sml |
| |
.PHONY: def-use | .PHONY: def-use |
def-use: | def-use: |
mlton -stop tc -prefer-abs-paths true -show-def-use mlton.def-use $(FILE) |
$(MLTON) -stop tc -prefer-abs-paths true -show-def-use mlton.def-use $(FILE) |
| |
.PHONY: clean | .PHONY: clean |
clean: | clean: |
|
|
| |
.PHONY: warn | .PHONY: warn |
warn: | warn: |
mlton -stop tc -default-ann 'warnUnused true' $(FILE) \ |
$(MLTON) -stop tc -default-ann 'warnUnused true' $(FILE) \ |
>/tmp/z.warn 2>&1 | >/tmp/z.warn 2>&1 |