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
|