-
Notifications
You must be signed in to change notification settings - Fork 37
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
28 changed files
with
295 additions
and
770 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,134 +1,47 @@ | ||
# Commands: | ||
# make -- to compile elpi | ||
# make install -- to install elpi using findlib | ||
# make install-bin BIN=path -- to install the elpi REPL in $BIN | ||
# make uninstall -- to remove elpi using findlib | ||
# make uninstall-bin BIN=path -- to remove the elpi REPL in $BIN | ||
# ... BYTE=yes -- to compile/install/remove byte code | ||
# | ||
# make git/V -- to compile elpi.git.V out of git's commit/branch/tag V | ||
# such binary is then picked up automatically by the bench | ||
# system as an elpi like runner | ||
# make runners -- foreach git tag runner-V, do something like make git/V | ||
|
||
BASE=$(shell pwd) | ||
include Makefile.common | ||
|
||
all: check-ocaml-ver elpi$(EXE) builtin.elpi | ||
|
||
byte: | ||
$(H)$(MAKE) BYTE=1 all | ||
|
||
trace_ppx: trace_ppx.ml | ||
$(H)$(call pp,OCAMLOPT,-o,$@) | ||
$(H)ocamlfind ocamlopt \ | ||
-package ppx_tools_versioned \ | ||
-package ppx_tools_versioned.metaquot_402 \ | ||
-package ocaml-migrate-parsetree.driver-main \ | ||
-open Ast_402 \ | ||
-c $< | ||
$(H)ocamlfind ocamlopt \ | ||
-package ppx_tools_versioned \ | ||
-package ppx_tools_versioned.metaquot_402 \ | ||
-package ocaml-migrate-parsetree \ | ||
-predicates custom_ppx,ppx_driver \ | ||
-linkpkg -linkall \ | ||
trace_ppx.cmx \ | ||
`ocamlfind query -predicates native \ | ||
ocaml-migrate-parsetree.driver-main -a-format` \ | ||
-o $@ | ||
$(H)cp .merlin.in .merlin | ||
$(H)echo "FLG -ppx '$(shell pwd)/trace_ppx --as-ppx'" >> .merlin | ||
help: | ||
@echo 'Known targets:' | ||
@echo | ||
@echo ' tests runs the entire test suite' | ||
@echo ' tests ONLY=rex runs only tests matching rex' | ||
@echo | ||
@echo ' git/treeish checkout treeish and build elpi.git.treeish' | ||
@echo | ||
|
||
INSTALL=_build/install/default | ||
BUILD=_build/default | ||
SHELL:=/bin/bash | ||
TIMEOUT=60.0 | ||
RUNNERS=\ | ||
$(shell pwd)/$(INSTALL)/bin/elpi \ | ||
$(addprefix $(shell pwd)/,$(wildcard elpi.git.*)) \ | ||
$(shell if type tjsim >/dev/null 2>&1; then type -P tjsim; else echo; fi) | ||
TIME=$(shell if type -P gtime >/dev/null 2>&1; then type -P gtime; else echo /usr/bin/time; fi) | ||
STACK=32768 | ||
|
||
tests: | ||
dune build $(INSTALL)/bin/elpi | ||
dune build $(BUILD)/tests/test.exe | ||
ulimit -s $(STACK); \ | ||
$(BUILD)/tests/test.exe \ | ||
--seed $$RANDOM \ | ||
--timeout $(TIMEOUT) \ | ||
--time=$(TIME) \ | ||
--sources=$$PWD/tests/sources/ \ | ||
--plot=$$PWD/tests/plot \ | ||
$(addprefix --name-match ,$(ONLY)) \ | ||
$(addprefix --runner , $(RUNNERS)) | ||
|
||
git/%: | ||
$(H)rm -rf "$$PWD/elpi-$*" | ||
$(H)mkdir "elpi-$*" | ||
$(H)git clone -l . "elpi-$*" | ||
$(H)cd "elpi-$*" && git checkout "$*" && make | ||
$(H)cp "elpi-$*/elpi" "elpi.git.$*" | ||
$(H)rm -rf "$$PWD/elpi-$*" | ||
|
||
runners: | ||
$(H)true $(foreach t,$(shell git branch --list 'runner*' | cut -c 3-),\ | ||
&& $(MAKE) git/$(t) && \ | ||
mv elpi.git.$(t) elpi.git.$(t:runner-%=%)) | ||
|
||
clean: | ||
$(H)rm -f $(addprefix src/, $(TRASH)) | ||
$(H)rm -f $(TRASH) | ||
$(H)rm -f trace_ppx.cmx elpi_config.ml | ||
$(H)rm -f elpi.git.* trace_ppx elpi elpi.byte | ||
$(H)rm -f src/.depends src/.depends.parser | ||
$(H)rm -f src/.depends.byte src/.depends.parser.byte | ||
$(H)rm -rf findlib/ | ||
|
||
dist: | ||
$(H)git archive --format=tar --prefix=elpi-$(V)/ HEAD . \ | ||
| gzip > ../elpi-$(V).tgz | ||
|
||
# compilation of elpi | ||
|
||
OC_OPTIONS = -linkpkg $(OCAMLOPTIONS) $(FLAGS) | ||
|
||
ELPI_LIBS = \ | ||
elpi_quoted_syntax.elpi elpi-checker.elpi \ | ||
utils/elpi2html.elpi | ||
|
||
ELPI_DIST = \ | ||
$(addprefix src/,elpi_API.cmi elpi_API.mli elpi_builtin.cmi elpi_builtin.mli elpi.cmi) | ||
|
||
ELPI_DIST_OPT = \ | ||
$(addprefix src/,elpi.cma elpi.cmxa elpi.a elpi_builtin.cmti elpi_API.cmti elpi_API.cmx elpi_API.cmo elpi_builtin.cmo elpi_builtin.cmx) | ||
|
||
elpi$(EXE): elpi_REPL.ml elpi_config.$(CMX) findlib/elpi/META | ||
$(H)$(call pp,$(OCNAME),-package elpi elpi_config.$(CMX) -o $@,$<) | ||
$(H)$(OC) $(OC_OPTIONS) -package elpi elpi_config.$(CMX) -o $@ $< | ||
|
||
elpi_config.$(CMX): elpi_config.ml elpi_config.cmi | ||
$(H)$(call pp,$(OCNAME),-c, $<) | ||
$(H)$(OC) $(OC_OPTIONS) -c $< | ||
|
||
elpi_config.cmi: elpi_config.mli | ||
$(H)$(call pp,$(OCNAME),-c, $<) | ||
$(H)$(OC) $(OC_OPTIONS) -c $< | ||
|
||
builtin.elpi: elpi$(EXE) | ||
$(H)echo '%% File generated by elpi -document-builtins, do not edit' > $@ | ||
$(H)./elpi -document-builtins -q >> $@ | ||
|
||
elpi_config.ml: | ||
$(H)echo 'let install_dir = "$(shell ocamlfind printconf destdir)/elpi"' > $@ | ||
|
||
src/%: | trace_ppx | ||
$(H)$(MAKE) --no-print-directory -C src/ $* | ||
|
||
src/elpi.$(CMXA): $(wildcard src/*.ml) $(wildcard src/*.mli) | ||
findlib/elpi/META: src/elpi.$(CMXA) Makefile | ||
$(H)rm -rf findlib/; mkdir findlib | ||
$(H)$(MAKE) --no-print-directory -C src/ elpi.cmi # needed by ELPI_DIST | ||
$(H)ocamlfind install -destdir $(BASE)/findlib -patch-archives \ | ||
elpi META $(ELPI_DIST) $(ELPI_LIBS) \ | ||
-optional $(ELPI_DIST_OPT) | ||
|
||
install: | ||
$(H)ocamlfind install -patch-archives \ | ||
elpi META $(ELPI_DIST) $(ELPI_LIBS) \ | ||
-optional $(ELPI_DIST_OPT) elpi elpi.byte | ||
install-bin: | ||
$(H)cp elpi$(EXE) $(BIN) | ||
|
||
uninstall: | ||
$(H)ocamlfind remove elpi | ||
uninstall-bin: | ||
$(H)rm -f $(BIN)/elpi$(EXE) | ||
|
||
|
||
# required OCaml package | ||
check-ocaml-ver: | ||
$(H)ocamlfind query camlp5 > /dev/null | ||
$(H)ocamlfind query ppx_tools_versioned > /dev/null | ||
$(H)ocamlfind query ppx_deriving > /dev/null | ||
$(H)ocamlfind query ocaml-migrate-parsetree.driver-main > /dev/null | ||
$(H)ocamlfind query re.str > /dev/null | ||
rm -rf "$$PWD/elpi-$*" | ||
mkdir "elpi-$*" | ||
git clone -l . "elpi-$*" | ||
cd "elpi-$*" && git checkout "$*" | ||
cd "elpi-$*" && \ | ||
if [ -f dune ]; then dune build --root . @install; else make; fi | ||
cp "elpi-$*/elpi" "elpi.git.$*" || \ | ||
cp "elpi-$*/$(INSTALL)/bin/elpi" "elpi.git.$*" | ||
rm -rf "$$PWD/elpi-$*" | ||
|
||
.PHONY: tests all install uninstall help | ||
|
||
.NOTPARALLEL: |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
(executable | ||
(name elpi_REPL) | ||
(public_name elpi) | ||
(libraries elpi) | ||
(modules elpi_REPL) | ||
) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
(lang dune 1.6) | ||
(name "elpi") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
lib: [ | ||
"_build/install/default/lib/elpi/META" {"META"} | ||
"_build/install/default/lib/elpi/builtin.elpi" | ||
"_build/install/default/lib/elpi/elpi-checker.elpi" | ||
"_build/install/default/lib/elpi/elpi.a" {"elpi.a"} | ||
"_build/install/default/lib/elpi/elpi.cma" {"elpi.cma"} | ||
"_build/install/default/lib/elpi/elpi.cmi" {"elpi.cmi"} | ||
"_build/install/default/lib/elpi/elpi.cmt" {"elpi.cmt"} | ||
"_build/install/default/lib/elpi/elpi.cmx" {"elpi.cmx"} | ||
"_build/install/default/lib/elpi/elpi.cmxa" {"elpi.cmxa"} | ||
"_build/install/default/lib/elpi/elpi.cmxs" {"elpi.cmxs"} | ||
"_build/install/default/lib/elpi/elpi.dune" {"elpi.dune"} | ||
"_build/install/default/lib/elpi/elpi.ml" {"elpi.ml"} | ||
"_build/install/default/lib/elpi/elpi2html.elpi" | ||
"_build/install/default/lib/elpi/elpi_API.ml" {"elpi_API.ml"} | ||
"_build/install/default/lib/elpi/elpi_API.mli" {"elpi_API.mli"} | ||
"_build/install/default/lib/elpi/elpi__.cmi" {"elpi__.cmi"} | ||
"_build/install/default/lib/elpi/elpi__.cmt" {"elpi__.cmt"} | ||
"_build/install/default/lib/elpi/elpi__.cmx" {"elpi__.cmx"} | ||
"_build/install/default/lib/elpi/elpi__.ml" {"elpi__.ml"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_API.cmi" {"elpi__Elpi_API.cmi"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_API.cmt" {"elpi__Elpi_API.cmt"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_API.cmti" {"elpi__Elpi_API.cmti"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_API.cmx" {"elpi__Elpi_API.cmx"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_ast.cmi" {"elpi__Elpi_ast.cmi"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_ast.cmt" {"elpi__Elpi_ast.cmt"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_ast.cmti" {"elpi__Elpi_ast.cmti"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_ast.cmx" {"elpi__Elpi_ast.cmx"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_builtin.cmi" {"elpi__Elpi_builtin.cmi"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_builtin.cmt" {"elpi__Elpi_builtin.cmt"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_builtin.cmti" {"elpi__Elpi_builtin.cmti"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_builtin.cmx" {"elpi__Elpi_builtin.cmx"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_compiler.cmi" {"elpi__Elpi_compiler.cmi"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_compiler.cmt" {"elpi__Elpi_compiler.cmt"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_compiler.cmti" {"elpi__Elpi_compiler.cmti"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_compiler.cmx" {"elpi__Elpi_compiler.cmx"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_data.cmi" {"elpi__Elpi_data.cmi"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_data.cmt" {"elpi__Elpi_data.cmt"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_data.cmx" {"elpi__Elpi_data.cmx"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_parser.cmi" {"elpi__Elpi_parser.cmi"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_parser.cmt" {"elpi__Elpi_parser.cmt"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_parser.cmti" {"elpi__Elpi_parser.cmti"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_parser.cmx" {"elpi__Elpi_parser.cmx"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_ptmap.cmi" {"elpi__Elpi_ptmap.cmi"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_ptmap.cmt" {"elpi__Elpi_ptmap.cmt"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_ptmap.cmti" {"elpi__Elpi_ptmap.cmti"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_ptmap.cmx" {"elpi__Elpi_ptmap.cmx"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_runtime_trace_off.cmi" {"elpi__Elpi_runtime_trace_off.cmi"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_runtime_trace_off.cmt" {"elpi__Elpi_runtime_trace_off.cmt"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_runtime_trace_off.cmti" {"elpi__Elpi_runtime_trace_off.cmti"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_runtime_trace_off.cmx" {"elpi__Elpi_runtime_trace_off.cmx"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_runtime_trace_on.cmi" {"elpi__Elpi_runtime_trace_on.cmi"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_runtime_trace_on.cmt" {"elpi__Elpi_runtime_trace_on.cmt"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_runtime_trace_on.cmti" {"elpi__Elpi_runtime_trace_on.cmti"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_runtime_trace_on.cmx" {"elpi__Elpi_runtime_trace_on.cmx"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_util.cmi" {"elpi__Elpi_util.cmi"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_util.cmt" {"elpi__Elpi_util.cmt"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_util.cmti" {"elpi__Elpi_util.cmti"} | ||
"_build/install/default/lib/elpi/elpi__Elpi_util.cmx" {"elpi__Elpi_util.cmx"} | ||
"_build/install/default/lib/elpi/elpi_ast.ml" {"elpi_ast.ml"} | ||
"_build/install/default/lib/elpi/elpi_ast.mli" {"elpi_ast.mli"} | ||
"_build/install/default/lib/elpi/elpi_builtin.ml" {"elpi_builtin.ml"} | ||
"_build/install/default/lib/elpi/elpi_builtin.mli" {"elpi_builtin.mli"} | ||
"_build/install/default/lib/elpi/elpi_compiler.ml" {"elpi_compiler.ml"} | ||
"_build/install/default/lib/elpi/elpi_compiler.mli" {"elpi_compiler.mli"} | ||
"_build/install/default/lib/elpi/elpi_data.ml" {"elpi_data.ml"} | ||
"_build/install/default/lib/elpi/elpi_parser.ml" {"elpi_parser.ml"} | ||
"_build/install/default/lib/elpi/elpi_parser.mli" {"elpi_parser.mli"} | ||
"_build/install/default/lib/elpi/elpi_ptmap.ml" {"elpi_ptmap.ml"} | ||
"_build/install/default/lib/elpi/elpi_ptmap.mli" {"elpi_ptmap.mli"} | ||
"_build/install/default/lib/elpi/elpi_quoted_syntax.elpi" | ||
"_build/install/default/lib/elpi/elpi_runtime_trace_off.ml" {"elpi_runtime_trace_off.ml"} | ||
"_build/install/default/lib/elpi/elpi_runtime_trace_off.mli" {"elpi_runtime_trace_off.mli"} | ||
"_build/install/default/lib/elpi/elpi_runtime_trace_on.ml" {"elpi_runtime_trace_on.ml"} | ||
"_build/install/default/lib/elpi/elpi_runtime_trace_on.mli" {"elpi_runtime_trace_on.mli"} | ||
"_build/install/default/lib/elpi/elpi_trace/elpi.elpi_trace.dune" {"elpi_trace/elpi.elpi_trace.dune"} | ||
"_build/install/default/lib/elpi/elpi_trace/elpi_trace.a" {"elpi_trace/elpi_trace.a"} | ||
"_build/install/default/lib/elpi/elpi_trace/elpi_trace.cma" {"elpi_trace/elpi_trace.cma"} | ||
"_build/install/default/lib/elpi/elpi_trace/elpi_trace.cmi" {"elpi_trace/elpi_trace.cmi"} | ||
"_build/install/default/lib/elpi/elpi_trace/elpi_trace.cmt" {"elpi_trace/elpi_trace.cmt"} | ||
"_build/install/default/lib/elpi/elpi_trace/elpi_trace.cmti" {"elpi_trace/elpi_trace.cmti"} | ||
"_build/install/default/lib/elpi/elpi_trace/elpi_trace.cmx" {"elpi_trace/elpi_trace.cmx"} | ||
"_build/install/default/lib/elpi/elpi_trace/elpi_trace.cmxa" {"elpi_trace/elpi_trace.cmxa"} | ||
"_build/install/default/lib/elpi/elpi_trace/elpi_trace.cmxs" {"elpi_trace/elpi_trace.cmxs"} | ||
"_build/install/default/lib/elpi/elpi_trace/elpi_trace.ml" {"elpi_trace/elpi_trace.ml"} | ||
"_build/install/default/lib/elpi/elpi_trace/elpi_trace.mli" {"elpi_trace/elpi_trace.mli"} | ||
"_build/install/default/lib/elpi/elpi_util.ml" {"elpi_util.ml"} | ||
"_build/install/default/lib/elpi/elpi_util.mli" {"elpi_util.mli"} | ||
"_build/install/default/lib/elpi/opam" {"opam"} | ||
] | ||
bin: [ | ||
"_build/install/default/bin/elpi" {"elpi"} | ||
] | ||
doc: [ | ||
"_build/install/default/doc/elpi/LICENSE" | ||
"_build/install/default/doc/elpi/README.md" | ||
] |
Oops, something went wrong.