aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile.extr
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.extr')
-rw-r--r--Makefile.extr53
1 files changed, 48 insertions, 5 deletions
diff --git a/Makefile.extr b/Makefile.extr
index 6035eb9a..0d2ec61f 100644
--- a/Makefile.extr
+++ b/Makefile.extr
@@ -44,14 +44,14 @@ cparser/pre_parser_messages.ml:
# Directories containing plain Caml code
DIRS=extraction \
- lib common $(ARCH) backend cfrontend cparser driver \
- export debug
+ lib common $(ARCH) scheduling backend cfrontend cparser driver \
+ export debug kvx/unittest lib/Impure/ocaml
INCLUDES=$(patsubst %,-I %, $(DIRS))
# Control of warnings:
-WARNINGS=-w +a-4-9-27-70
+WARNINGS=-w +a-4-9-27-70-42
extraction/%.cmx: WARNINGS +=-w -20-27-32..34-39-41-44..45-60-67
extraction/%.cmo: WARNINGS +=-w -20-27-32..34-39-41-44..45-60-67
cparser/pre_parser.cmx: WARNINGS += -w -41
@@ -77,6 +77,9 @@ endif
OCAMLC=ocamlc$(DOTOPT) $(COMPFLAGS)
OCAMLOPT=ocamlopt$(DOTOPT) $(COMPFLAGS)
OCAMLDEP=ocamldep$(DOTOPT) -slash $(INCLUDES)
+OCAMLFIND=ocamlfind
+LMFLAGS_LINK=-package landmarks -linkpkg
+LMFLAGS_COMP=-package landmarks -package landmarks-ppx -ppxopt landmarks-ppx,--auto
OCAMLLEX=ocamllex -q
MODORDER=tools/modorder .depend.extr
@@ -99,25 +102,47 @@ ifeq ($(wildcard .depend.extr),.depend.extr)
CCOMP_OBJS:=$(shell $(MODORDER) driver/Driver.cmx)
ifeq ($(OCAML_NATIVE_COMP),true)
+ifeq ($(OCAML_LM_PROF), true)
+ccomp: $(CCOMP_OBJS)
+ @echo "Linking $@ with landmarks profiling"
+ @$(OCAMLFIND) opt $(COMPFLAGS) -o $@ $(LMFLAGS_LINK) $(LIBS) $(LINK_OPT) $+
+else
ccomp: $(CCOMP_OBJS)
@echo "Linking $@"
@$(OCAMLOPT) -o $@ $(LIBS) $(LINK_OPT) $+
+endif
else
ccomp: ccomp.byte
@echo "Copying to $@"
@$(COPY) $+ $@
endif
+# DM force compilation without checking dependencies
+ccomp.force:
+ $(OCAMLOPT) -o $@ $(LIBS) $(LINK_OPT) $(CCOMP_OBJS)
+
+ifeq ($(OCAML_LM_PROF), true)
+ccomp.byte: $(CCOMP_OBJS:.cmx=.cmo)
+ @echo "Linking $@ with landmarks profiling"
+ @$(OCAMLFIND) ocamlc $(COMPFLAGS) -o $@ $(LMFLAGS_LINK) $(LIBS_BYTE) $+
+else
ccomp.byte: $(CCOMP_OBJS:.cmx=.cmo)
@echo "Linking $@"
@$(OCAMLC) -o $@ $(LIBS_BYTE) $+
+endif
CLIGHTGEN_OBJS:=$(shell $(MODORDER) export/ExportDriver.cmx)
ifeq ($(OCAML_NATIVE_COMP),true)
+ifeq ($(OCAML_LM_PROF), true)
+clightgen: $(CLIGHTGEN_OBJS)
+ @echo "Linking $@ with landmarks profiling"
+ @$(OCAMLFIND) opt $(COMPFLAGS) -o $@ $(LMFLAGS_LINK) $(LIBS) $(LINK_OPT) $+
+else
clightgen: $(CLIGHTGEN_OBJS)
@echo "Linking $@"
@$(OCAMLOPT) -o $@ $(LIBS) $(LINK_OPT) $+
+endif
else
clightgen: clightgen.byte
@echo "Copying to $@"
@@ -134,15 +159,33 @@ endif
# End of part that assumes .depend.extr already exists
+ifeq ($(OCAML_LM_PROF), true)
%.cmi: %.mli
- @echo "OCAMLC $<"
+ @echo "OCAMLC $< with landmarks profiling"
+ @$(OCAMLFIND) ocamlc $(COMPFLAGS) -c $(LMFLAGS_COMP) $<
+else
+%.cmi: %.mli
+ @echo "OCAMLC $<"
@$(OCAMLC) -c $<
+endif
+ifeq ($(OCAML_LM_PROF), true)
+%.cmo: %.ml
+ @echo "OCAMLC $< with landmarks profiling"
+ @$(OCAMLFIND) ocamlc $(COMPFLAGS) -c $(LMFLAGS_COMP) $<
+else
%.cmo: %.ml
- @echo "OCAMLC $<"
+ @echo "OCAMLC $<"
@$(OCAMLC) -c $<
+endif
+ifeq ($(OCAML_LM_PROF), true)
+%.cmx: %.ml
+ @echo "OCAMLOPT $< with landmarks profiling"
+ @$(OCAMLFIND) opt $(COMPFLAGS) -c $(LMFLAGS_COMP) $<
+else
%.cmx: %.ml
@echo "OCAMLOPT $<"
@$(OCAMLOPT) -c $<
+endif
%.ml: %.mll
$(OCAMLLEX) $<