File: Makefile

package info (click to toggle)
js-of-ocaml 2.2-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 7,612 kB
  • ctags: 10,589
  • sloc: ml: 36,459; makefile: 665; lisp: 41; sh: 14; ruby: 4; perl: 4
file content (101 lines) | stat: -rw-r--r-- 2,844 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101

include ../Makefile.conf

all: $(COMPILER) $(MINIFIER)

lib: compiler.cma $(if $(wildcard /usr/bin/ocamlopt),compiler.cmxa) $(if $(wildcard /usr/lib/ocaml/dynlink.cmxa),compiler.cmxs)

PACKAGES=findlib

OBJS=compiler_version.cmx \
     pretty_print.cmx util.cmx option.cmx reserved.cmx varPrinter.cmx \
     dgraph.cmx code.cmx javascript.cmx vlq64.cmx source_map.cmx \
     js_output.cmx js_simpl.cmx parse_info.cmx js_token.cmx js_parser.cmx \
     js_lexer.cmx parse_js.cmx annot_parser.cmx annot_lexer.cmx \
     instr.cmx primitive.cmx subst.cmx pure_fun.cmx deadcode.cmx \
     flow.cmx specialize.cmx specialize_js.cmx eval.cmx inline.cmx \
     tailcall.cmx freevars.cmx phisimpl.cmx \
     js_traverse.cmx js_assign.cmx js_tailcall.cmx \
     linker.cmx generate.cmx parse_bytecode.cmx driver.cmx \
     pseudoFs.cmx

COMPOBJS=$(OBJS) compile.cmx

$(COMPILER): compile.$(BEST)
	mv -f $< $@

$(MINIFIER): minify.$(BEST)
	mv -f $< $@

.INTERMEDIATE: compile.byte compile.opt minify.byte minify.opt

compile.byte: $(COMPOBJS:cmx=cmo)
	ocamlfind ocamlc -package $(PACKAGES) -linkpkg -o $@ $^
compile.opt: $(COMPOBJS)
	ocamlfind ocamlopt -package $(PACKAGES) -linkpkg -g -o $@ $^

minify.byte: $(OBJS:cmx=cmo) minify.cmo
	ocamlfind ocamlc -package $(PACKAGES) -linkpkg -o $@ $^
minify.opt: $(OBJS:cmx=cmx) minify.cmx
	ocamlfind ocamlopt -package $(PACKAGES) -linkpkg -g -o $@ $^


compiler.cmo: $(OBJS:cmx=cmo)
	ocamlfind ocamlc -pack -o $@ $^

compiler.cma: compiler.cmo
	ocamlfind ocamlc -a -o $@ $^

local/compiler.cma: compiler.cma
	mkdir -p local
	cp compiler.cma compiler.cmi local/

compiler.cmx: $(OBJS)
	ocamlfind ocamlopt -pack -g -o $@ $^

compiler.cmxa: compiler.cmx
	ocamlfind ocamlopt -a -o $@ $^

compiler.cmxs: compiler.cmxa
	ocamlfind ocamlopt -shared -g -o $@ $^

VERSION := $(shell head -n 1 ../VERSION)

compiler_version.ml: compiler_version.ml.tmp
	if cmp -s $^ $@; then rm $^; else mv $^ $@; fi

.PHONY: compiler_version.ml.tmp
compiler_version.ml.tmp:
	echo "let s = \"${VERSION}\"" > $@
	echo "let git_version = \"${VERSION_GIT}\"" >> $@

%.cmx: %.ml
	ocamlfind ocamlopt -package $(PACKAGES) -for-pack Compiler -g -c $<

%.cmo: %.ml
	ocamlfind ocamlc -package $(PACKAGES) -c $<

%.cmi: %.mli
	ocamlfind ocamlc -package $(PACKAGES) -c $<

%.ml %.mli: %.mly
	menhir --explain $<

js_parser.ml js_parser.mli: js_parser.mly
	menhir --external-tokens Js_token --explain $<

%.ml: %.mll
	ocamllex $<
clean:
	rm -f *.cm[aiox] *.cmxa *.cmxs *.o *.a *.conflicts
	rm -f compile.opt compile.byte minify.opt minify.byte
	rm -f $(MINIFIER) $(COMPILER)
	rm -f compiler_version.ml
	rm -f annot_lexer.ml annot_parser.ml annot_parser.mli
	rm -f js_lexer.ml js_parser.ml js_parser.mli

.PHONY: depend
depend: compiler_version.ml annot_lexer.ml js_lexer.ml js_parser.ml annot_parser.ml
	ocamldep *.ml *.mli > .depend

include .depend