Initial commit of parser.
[goals.git] / parsing / Goalfile.in
1 # Goalfile parser
2 # Copyright (C) 2019 Richard W.M. Jones
3 # Copyright (C) 2019 Red Hat Inc.
4 #
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License along
16 # with this program; if not, write to the Free Software Foundation, Inc.,
17 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
19 let objects = ["ast.cmx", "parser.cmx", "lexer.cmx", "main.cmx"]
20
21 goal all = : file("goals")
22
23 goal clean = {
24         rm -f *~
25         rm -f *.cmi *.cmo *.cmx *.o
26         rm -f parser.ml parser.mli lexer.ml parser.conflicts
27         rm -f goals
28 }
29
30 file("goals"): objects {
31         @OCAMLFIND@ opt %^ -o %@
32 }
33
34 let OCAMLFLAGS = "-g -safe-string -warn-error CDEFLMPSUVYZX+52-3"
35
36 goal compile_cmi (name) = "%name.cmi": "%name.mli" {
37         @OCAMLFIND@ c %OCAMLFLAGS -c %< -o %@
38 }
39 goal compile_cmo (name) = "%name.cmo": "%name.ml" {
40         @OCAMLFIND@ c %OCAMLFLAGS -c %< -o %@
41 }
42 goal compile_cmx (name) = "%name.cmx": "%name.ml" {
43         @OCAMLFIND@ opt %OCAMLFLAGS -c %< -o %@
44 }
45
46 "parser.ml", "parser.mli": "parser.mly" {
47         @MENHIR@ --explain %<
48 }
49
50 "lexer.ml": "lexer.mll", "lexer.cmi", "parser.ml" {
51         @OCAMLLEX@ %<
52 }
53
54 # depend: .depend
55
56 # .depend: parser.mly lexer.mll *.mli
57 #       rm -f $@ $@-t
58 #       @MENHIR@ --depend parser.mly > $@-t
59 #       ocamldep lexer.mll *.mli >> $@-t
60 #       mv $@-t $@
61
62 # -include .depend
63
64 # .PHONY: all clean depend