Backport from sid to buster
[hcoop/debian/mlton.git] / mlyacc / Makefile
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