2017-07-21 07:43:36 -07:00
|
|
|
#**************************************************************************
|
|
|
|
#* *
|
|
|
|
#* OCaml *
|
|
|
|
#* *
|
|
|
|
#* Sebastien Hinderer, projet Gallium, INRIA Paris *
|
|
|
|
#* *
|
|
|
|
#* Copyright 2016 Institut National de Recherche en Informatique et *
|
|
|
|
#* en Automatique. *
|
|
|
|
#* *
|
|
|
|
#* All rights reserved. This file is distributed under the terms of *
|
|
|
|
#* the GNU Lesser General Public License version 2.1, with the *
|
|
|
|
#* special exception on linking described in the file LICENSE. *
|
|
|
|
#* *
|
|
|
|
#**************************************************************************
|
|
|
|
|
|
|
|
# The Makefile for ocamltest
|
|
|
|
|
|
|
|
include ../config/Makefile
|
|
|
|
|
|
|
|
ifeq "$(UNIX_OR_WIN32)" "win32"
|
|
|
|
ocamlsrcdir := $(shell echo "$(abspath $(shell pwd)/..)"|cygpath -m -f -)
|
|
|
|
else
|
|
|
|
ocamlsrcdir := $(abspath $(shell pwd)/..)
|
|
|
|
endif
|
|
|
|
|
|
|
|
CPPFLAGS += -I../byterun -DCAML_INTERNALS
|
|
|
|
|
|
|
|
run := run_$(UNIX_OR_WIN32)
|
|
|
|
|
|
|
|
# List of source files from which ocamltest is compiled
|
|
|
|
# (all the different sorts of files are derived from this)
|
|
|
|
|
|
|
|
sources := \
|
|
|
|
$(run).c \
|
|
|
|
run_stubs.c \
|
|
|
|
ocamltest_config.mli ocamltest_config.ml.in \
|
|
|
|
testlib.mli testlib.ml \
|
|
|
|
run_command.mli run_command.ml \
|
|
|
|
filetype.mli filetype.ml \
|
|
|
|
filecompare.mli filecompare.ml \
|
|
|
|
backends.mli backends.ml \
|
|
|
|
variables.mli variables.ml \
|
|
|
|
environments.mli environments.ml \
|
|
|
|
builtin_variables.mli builtin_variables.ml \
|
|
|
|
builtin_modifiers.mli builtin_modifiers.ml \
|
|
|
|
actions.mli actions.ml \
|
|
|
|
builtin_actions.mli builtin_actions.ml \
|
|
|
|
tests.mli tests.ml \
|
|
|
|
builtin_tests.mli builtin_tests.ml \
|
|
|
|
tsl_ast.mli tsl_ast.ml \
|
|
|
|
tsl_parser.mly \
|
|
|
|
tsl_lexer.mli tsl_lexer.mll \
|
|
|
|
tsl_semantics.mli tsl_semantics.ml \
|
|
|
|
options.mli options.ml \
|
|
|
|
main.mli main.ml
|
|
|
|
|
|
|
|
# List of .ml files used for ocamldep and to get the list of modules
|
|
|
|
|
|
|
|
ml_files := \
|
|
|
|
$(filter %.ml, \
|
|
|
|
$(subst .ml.in,.ml,$(subst .mll,.ml,$(subst .mly,.ml,$(sources)))) \
|
|
|
|
)
|
|
|
|
|
|
|
|
cmo_files := $(ml_files:.ml=.cmo)
|
|
|
|
|
|
|
|
cmx_files := $(ml_files:.ml=.cmx)
|
|
|
|
|
|
|
|
ocaml_objects := $(ml_files:.ml=.$(O))
|
|
|
|
|
|
|
|
# List of .mli files for ocamldep
|
|
|
|
mli_files := \
|
|
|
|
$(filter %.mli,$(subst .mly,.mli,$(sources)))
|
|
|
|
|
|
|
|
cmi_files := $(mli_files:.mli=.cmi)
|
|
|
|
|
|
|
|
c_files := $(filter %.c, $(sources))
|
|
|
|
|
|
|
|
o_files := $(c_files:.c=.$(O))
|
|
|
|
|
|
|
|
lexers := $(filter %.mll,$(sources))
|
|
|
|
|
|
|
|
parsers := $(filter %.mly,$(sources))
|
|
|
|
|
|
|
|
config_files := $(filter %.ml.in,$(sources))
|
|
|
|
|
|
|
|
dependencies_generated_prereqs := \
|
|
|
|
$(config_files:.ml.in=.ml) \
|
|
|
|
$(lexers:.mll=.ml) \
|
|
|
|
$(parsers:.mly=.mli) $(parsers:.mly=.ml)
|
|
|
|
|
|
|
|
generated := $(dependencies_generated_prereqs) $(parsers:.mly=.output)
|
|
|
|
|
|
|
|
bytecode_modules := $(o_files) $(cmo_files)
|
|
|
|
|
|
|
|
native_modules := $(o_files) $(cmx_files)
|
|
|
|
|
|
|
|
directories = ../utils ../parsing ../stdlib ../compilerlibs
|
|
|
|
|
|
|
|
include_directories = $(addprefix -I , $(directories))
|
|
|
|
|
|
|
|
flags = -g -nostdlib $(include_directories) \
|
|
|
|
-strict-sequence -safe-string -strict-formats \
|
|
|
|
-w +a-4-9-41-42-44-45-48 -warn-error A
|
|
|
|
|
|
|
|
ifeq "$(UNIX_OR_WIN32)" "unix"
|
|
|
|
FLEXLINK_ENV=
|
|
|
|
else # Windows
|
|
|
|
ifeq "$(wildcard ../flexdll/Makefile)" ""
|
|
|
|
FLEXLINK_ENV=
|
|
|
|
else
|
|
|
|
FLEXLINK_ENV=OCAML_FLEXLINK="../boot/ocamlrun ../flexdll/flexlink.exe"
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ocamlc := $(FLEXLINK_ENV) ../byterun/ocamlrun ../ocamlc $(flags)
|
|
|
|
|
|
|
|
ocamlopt := $(FLEXLINK_ENV) ../byterun/ocamlrun ../ocamlopt $(flags)
|
|
|
|
|
|
|
|
ocamldep := ../byterun/ocamlrun ../tools/ocamldep -slash
|
|
|
|
|
|
|
|
ocamllex := ../byterun/ocamlrun ../lex/ocamllex
|
|
|
|
|
|
|
|
ocamlyacc := ../yacc/ocamlyacc
|
|
|
|
|
|
|
|
ocamlcdefaultflags :=
|
|
|
|
|
|
|
|
ocamloptdefaultflags := $(shell ./getocamloptdefaultflags $(TARGET))
|
|
|
|
|
|
|
|
ocamltest$(EXE): $(bytecode_modules)
|
|
|
|
$(ocamlc) -custom ocamlcommon.cma -o $@ $^
|
|
|
|
|
|
|
|
%.cmo: %.ml
|
|
|
|
$(ocamlc) -c $<
|
|
|
|
|
|
|
|
ocamltest.opt$(EXE): $(native_modules)
|
|
|
|
$(ocamlopt) ocamlcommon.cmxa -o $@ $^
|
|
|
|
|
|
|
|
%.cmx: %.ml
|
|
|
|
$(ocamlopt) -c $<
|
|
|
|
|
|
|
|
%.cmi: %.mli
|
|
|
|
$(ocamlc) -c $<
|
|
|
|
|
|
|
|
%.ml %.mli: %.mly
|
|
|
|
$(ocamlyacc) $<
|
|
|
|
|
|
|
|
%.ml: %.mll
|
|
|
|
$(ocamllex) -q $<
|
|
|
|
|
|
|
|
%.$(O): %.c
|
|
|
|
$(CC) $(CFLAGS) $(CPPFLAGS) $(BYTECCCOMPOPTS) -c $<
|
|
|
|
|
|
|
|
ocamltest_config.ml: ocamltest_config.ml.in
|
|
|
|
sed \
|
2017-09-22 01:08:56 -07:00
|
|
|
-e 's|@@ARCH@@|$(ARCH)|' \
|
2017-07-21 07:43:36 -07:00
|
|
|
-e 's|@@CPP@@|$(CPP)|' \
|
|
|
|
-e 's|@@OCAMLCDEFAULTFLAGS@@|$(ocamlcdefaultflags)|' \
|
|
|
|
-e 's|@@OCAMLOPTDEFAULTFLAGS@@|$(ocamloptdefaultflags)|' \
|
|
|
|
-e 's|@@OCAMLSRCDIR@@|$(ocamlsrcdir)|' \
|
|
|
|
-e 's|@@FLAMBDA@@|$(FLAMBDA)|' \
|
2017-10-02 04:41:33 -07:00
|
|
|
-e 's|@@FORCE_SAFE_STRING@@|$(FORCE_SAFE_STRING)|' \
|
2017-07-21 07:43:36 -07:00
|
|
|
$< > $@
|
|
|
|
|
|
|
|
.PHONY: clean
|
|
|
|
clean:
|
|
|
|
rm -rf ocamltest$(EXE) ocamltest.opt$(EXE)
|
|
|
|
rm -rf $(o_files) $(ocaml_objects)
|
|
|
|
rm -rf $(cmi_files)
|
|
|
|
rm -rf $(cmo_files)
|
|
|
|
rm -rf $(cmx_files)
|
|
|
|
rm -rf $(generated)
|
|
|
|
|
|
|
|
ifneq "$(TOOLCHAIN)" "msvc"
|
|
|
|
.PHONY: depend
|
|
|
|
depend: $(dependencies_generated_prereqs)
|
|
|
|
$(CC) -MM $(CPPFLAGS) $(c_files) \
|
|
|
|
| sed -e 's/\.o/.$$(O)/' > .depend
|
|
|
|
$(ocamldep) $(mli_files) $(ml_files) >> .depend
|
|
|
|
endif
|
|
|
|
|
|
|
|
-include .depend
|