Commit | Line | Data |
---|---|---|
7f918cf1 CE |
1 | ## Copyright (C) 2009,2013,2018 Matthew Fluet. |
2 | # Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh | |
3 | # Jagannathan, and Stephen Weeks. | |
4 | # Copyright (C) 1997-2000 NEC Research Institute. | |
5 | # | |
6 | # MLton is released under a BSD-style license. | |
7 | # See the file MLton-LICENSE for details. | |
8 | ## | |
9 | ||
10 | MLTON_RUNTIME_ARGS := | |
11 | MLTON_COMPILE_ARGS := | |
12 | ||
13 | DIFF := diff | |
14 | ||
15 | ###################################################################### | |
16 | ###################################################################### | |
17 | ||
18 | SRC := $(shell cd .. && pwd) | |
19 | BUILD := $(SRC)/build | |
20 | BIN := $(BUILD)/bin | |
21 | ||
22 | PATH := $(BIN):$(shell echo $$PATH) | |
23 | ||
24 | TARGET := self | |
25 | ||
26 | ###################################################################### | |
27 | ||
28 | MLTON := mlton | |
29 | NAME := mlyacc | |
30 | ||
31 | all: $(NAME) | |
32 | ||
33 | $(NAME): $(NAME).mlb $(shell PATH="$(BIN):$$PATH" && "$(MLTON)" -stop f $(NAME).mlb) | |
34 | @echo 'Compiling $(NAME)' | |
35 | "$(MLTON)" @MLton $(MLTON_RUNTIME_ARGS) -- $(MLTON_COMPILE_ARGS) -target $(TARGET) $(NAME).mlb | |
36 | ||
37 | .PHONY: clean | |
38 | clean: | |
39 | ../bin/clean | |
40 | ||
41 | ||
42 | ifeq (mllex, $(shell if mllex >/dev/null 2>&1 || [ $$? != 127 ] ; then echo mllex; fi)) | |
43 | MLLEX := mllex | |
44 | else | |
45 | ifeq (ml-lex, $(shell if ml-lex >/dev/null 2>&1 || [ $$? != 127 ] ; then echo ml-lex; fi)) | |
46 | MLLEX := ml-lex | |
47 | else | |
48 | MLLEX := no-mllex | |
49 | endif | |
50 | endif | |
51 | ||
52 | src/yacc.lex.sml: src/yacc.lex | |
53 | rm -f src/yacc.lex.sml && \ | |
54 | $(MLLEX) src/yacc.lex && \ | |
55 | chmod -w src/yacc.lex.sml | |
56 | ||
57 | ||
58 | ifeq (mlyacc, $(shell if mlyacc >/dev/null 2>&1 || [ $$? != 127 ] ; then echo mlyacc; fi)) | |
59 | MLYACC := mlyacc | |
60 | else | |
61 | ifeq (ml-yacc, $(shell if ml-lex >/dev/null 2>&1 || [ $$? != 127 ] ; then echo ml-yacc; fi)) | |
62 | MLYACC := ml-yacc | |
63 | else | |
64 | MLYACC := no-mlyacc | |
65 | endif | |
66 | endif | |
67 | ||
68 | src/%.grm.sig src/%.grm.sml: src/%.grm | |
69 | rm -f $<.* | |
70 | $(MLYACC) $< | |
71 | chmod -w $<.* | |
72 | ||
73 | ||
74 | PDFLATEX := pdflatex | |
75 | ||
76 | doc/mlyacc.pdf: | |
77 | $(MAKE) -C doc mlyacc.pdf | |
78 | ||
79 | mlyacc.pdf: doc/mlyacc.pdf | |
80 | cp doc/mlyacc.pdf . | |
81 | ||
82 | DOCS := | |
83 | ifneq ($(shell which $(PDFLATEX) 2> /dev/null),) | |
84 | DOCS += mlyacc.pdf | |
85 | endif | |
86 | ||
87 | .PHONY: docs | |
88 | docs: $(DOCS) | |
89 | ||
90 | ||
91 | .PHONY: test | |
92 | test: $(NAME) | |
93 | cp -p ../mlton/front-end/ml.grm . \ | |
94 | $(NAME) ml.grm && \ | |
95 | $(DIFF) ml.grm.sig ../mlton/front-end/ml.grm.sig && \ | |
96 | $(DIFF) ml.grm.sml ../mlton/front-end/ml.grm.sml \ | |
97 | rm -f ml.grm ml.grm.sig ml.grm.sml ml.grm.desc |