summaryrefslogtreecommitdiff
path: root/ocamlbuild
diff options
context:
space:
mode:
authorDamien Doligez <damien.doligez-inria.fr>2014-03-31 17:58:53 +0000
committerDamien Doligez <damien.doligez-inria.fr>2014-03-31 17:58:53 +0000
commit8643356b8542e0dcab358716f1e04d47b08b1a6d (patch)
treee10cc5a03f7ead69a2d4ed563cbd021df5770ef2 /ocamlbuild
parentcd1bf4b9fc898cee2f4886ed18ddf6271ec522e8 (diff)
parent989ac0b2635443b9c0f183ee6343b663c854f4ea (diff)
downloadocaml-ephemeron.tar.gz
merge with trunk at rev 14512ephemeron
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/ephemeron@14514 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'ocamlbuild')
-rw-r--r--ocamlbuild/.depend99
-rw-r--r--ocamlbuild/Makefile303
-rw-r--r--ocamlbuild/Makefile.noboot5
-rw-r--r--ocamlbuild/ocaml_specific.ml6
-rw-r--r--ocamlbuild/ocamlbuild_where.ml4
-rw-r--r--ocamlbuild/options.ml8
-rw-r--r--ocamlbuild/plugin.ml3
-rw-r--r--ocamlbuild/testsuite/findlibonly.ml7
-rw-r--r--ocamlbuild/testsuite/internal.ml12
9 files changed, 275 insertions, 172 deletions
diff --git a/ocamlbuild/.depend b/ocamlbuild/.depend
index 5344160e84..5e0c7e6607 100644
--- a/ocamlbuild/.depend
+++ b/ocamlbuild/.depend
@@ -13,7 +13,8 @@ glob_ast.cmi : bool.cmi
glob_lexer.cmi : glob_ast.cmi
hooks.cmi :
hygiene.cmi : slurp.cmi
-lexers.cmi : glob.cmi
+lexers.cmi : loc.cmi glob.cmi
+loc.cmi :
log.cmi : tags.cmi signatures.cmi
main.cmi :
my_std.cmi : signatures.cmi
@@ -31,7 +32,7 @@ ocamlbuild_unix_plugin.cmi :
ocamlbuild_where.cmi :
ocamlbuildlight.cmi :
options.cmi : slurp.cmi signatures.cmi command.cmi
-param_tags.cmi : tags.cmi
+param_tags.cmi : tags.cmi loc.cmi
pathname.cmi : signatures.cmi
plugin.cmi :
ppcache.cmi :
@@ -49,11 +50,11 @@ bool.cmx : bool.cmi
command.cmo : tags.cmi shell.cmi param_tags.cmi my_unix.cmi my_std.cmi \
log.cmi lexers.cmi command.cmi
command.cmx : tags.cmx shell.cmx param_tags.cmx my_unix.cmx my_std.cmx \
- log.cmx lexers.cmi command.cmi
-configuration.cmo : tags.cmi param_tags.cmi my_std.cmi log.cmi lexers.cmi \
- glob.cmi configuration.cmi
-configuration.cmx : tags.cmx param_tags.cmx my_std.cmx log.cmx lexers.cmi \
- glob.cmx configuration.cmi
+ log.cmx lexers.cmx command.cmi
+configuration.cmo : tags.cmi param_tags.cmi my_std.cmi log.cmi loc.cmi \
+ lexers.cmi glob.cmi configuration.cmi
+configuration.cmx : tags.cmx param_tags.cmx my_std.cmx log.cmx loc.cmx \
+ lexers.cmx glob.cmx configuration.cmi
digest_cache.cmo : shell.cmi pathname.cmi options.cmi my_unix.cmi my_std.cmi \
digest_cache.cmi
digest_cache.cmx : shell.cmx pathname.cmx options.cmx my_unix.cmx my_std.cmx \
@@ -67,31 +68,39 @@ exit_codes.cmx : exit_codes.cmi
fda.cmo : pathname.cmi options.cmi log.cmi hygiene.cmi fda.cmi
fda.cmx : pathname.cmx options.cmx log.cmx hygiene.cmx fda.cmi
findlib.cmo : my_unix.cmi my_std.cmi lexers.cmi command.cmi findlib.cmi
-findlib.cmx : my_unix.cmx my_std.cmx lexers.cmi command.cmx findlib.cmi
-flags.cmo : tags.cmi param_tags.cmi command.cmi bool.cmi flags.cmi
-flags.cmx : tags.cmx param_tags.cmx command.cmx bool.cmx flags.cmi
+findlib.cmx : my_unix.cmx my_std.cmx lexers.cmx command.cmx findlib.cmi
+flags.cmo : tags.cmi param_tags.cmi log.cmi command.cmi bool.cmi flags.cmi
+flags.cmx : tags.cmx param_tags.cmx log.cmx command.cmx bool.cmx flags.cmi
glob.cmo : my_std.cmi glob_lexer.cmi glob_ast.cmi bool.cmi glob.cmi
-glob.cmx : my_std.cmx glob_lexer.cmi glob_ast.cmx bool.cmx glob.cmi
+glob.cmx : my_std.cmx glob_lexer.cmx glob_ast.cmx bool.cmx glob.cmi
glob_ast.cmo : bool.cmi glob_ast.cmi
glob_ast.cmx : bool.cmx glob_ast.cmi
+glob_lexer.cmo : glob_ast.cmi bool.cmi glob_lexer.cmi
+glob_lexer.cmx : glob_ast.cmx bool.cmx glob_lexer.cmi
hooks.cmo : hooks.cmi
hooks.cmx : hooks.cmi
hygiene.cmo : slurp.cmi shell.cmi pathname.cmi options.cmi my_std.cmi \
log.cmi hygiene.cmi
hygiene.cmx : slurp.cmx shell.cmx pathname.cmx options.cmx my_std.cmx \
log.cmx hygiene.cmi
+lexers.cmo : my_std.cmi loc.cmi glob_ast.cmi glob.cmi bool.cmi lexers.cmi
+lexers.cmx : my_std.cmx loc.cmx glob_ast.cmx glob.cmx bool.cmx lexers.cmi
+loc.cmo : loc.cmi
+loc.cmx : loc.cmi
log.cmo : my_unix.cmi my_std.cmi display.cmi log.cmi
log.cmx : my_unix.cmx my_std.cmx display.cmx log.cmi
main.cmo : tools.cmi tags.cmi solver.cmi slurp.cmi shell.cmi rule.cmi \
resource.cmi report.cmi plugin.cmi pathname.cmi param_tags.cmi \
options.cmi ocaml_utils.cmi ocaml_specific.cmi ocaml_dependencies.cmi \
- my_unix.cmi my_std.cmi log.cmi lexers.cmi hooks.cmi flags.cmi fda.cmi \
- exit_codes.cmi digest_cache.cmi configuration.cmi command.cmi main.cmi
+ my_unix.cmi my_std.cmi log.cmi loc.cmi lexers.cmi hooks.cmi flags.cmi \
+ fda.cmi exit_codes.cmi digest_cache.cmi configuration.cmi command.cmi \
+ main.cmi
main.cmx : tools.cmx tags.cmx solver.cmx slurp.cmx shell.cmx rule.cmx \
resource.cmx report.cmx plugin.cmx pathname.cmx param_tags.cmx \
options.cmx ocaml_utils.cmx ocaml_specific.cmx ocaml_dependencies.cmx \
- my_unix.cmx my_std.cmx log.cmx lexers.cmi hooks.cmx flags.cmx fda.cmx \
- exit_codes.cmx digest_cache.cmx configuration.cmx command.cmx main.cmi
+ my_unix.cmx my_std.cmx log.cmx loc.cmx lexers.cmx hooks.cmx flags.cmx \
+ fda.cmx exit_codes.cmx digest_cache.cmx configuration.cmx command.cmx \
+ main.cmi
my_std.cmo : my_std.cmi
my_std.cmx : my_std.cmi
my_unix.cmo : my_std.cmi my_unix.cmi
@@ -109,11 +118,13 @@ ocaml_dependencies.cmo : tools.cmi resource.cmi pathname.cmi ocaml_utils.cmi \
ocaml_dependencies.cmx : tools.cmx resource.cmx pathname.cmx ocaml_utils.cmx \
my_std.cmx log.cmx ocaml_dependencies.cmi
ocaml_specific.cmo : tools.cmi tags.cmi rule.cmi pathname.cmi options.cmi \
- ocaml_utils.cmi ocaml_tools.cmi ocaml_compiler.cmi my_std.cmi log.cmi \
- flags.cmi findlib.cmi configuration.cmi command.cmi ocaml_specific.cmi
+ ocamlbuild_config.cmo ocaml_utils.cmi ocaml_tools.cmi ocaml_compiler.cmi \
+ my_std.cmi log.cmi flags.cmi findlib.cmi configuration.cmi command.cmi \
+ ocaml_specific.cmi
ocaml_specific.cmx : tools.cmx tags.cmx rule.cmx pathname.cmx options.cmx \
- ocaml_utils.cmx ocaml_tools.cmx ocaml_compiler.cmx my_std.cmx log.cmx \
- flags.cmx findlib.cmx configuration.cmx command.cmx ocaml_specific.cmi
+ ocamlbuild_config.cmx ocaml_utils.cmx ocaml_tools.cmx ocaml_compiler.cmx \
+ my_std.cmx log.cmx flags.cmx findlib.cmx configuration.cmx command.cmx \
+ ocaml_specific.cmi
ocaml_tools.cmo : tools.cmi tags.cmi rule.cmi pathname.cmi options.cmi \
ocaml_utils.cmi ocaml_compiler.cmi my_std.cmi flags.cmi command.cmi \
ocaml_tools.cmi
@@ -123,11 +134,11 @@ ocaml_tools.cmx : tools.cmx tags.cmx rule.cmx pathname.cmx options.cmx \
ocaml_utils.cmo : tools.cmi tags.cmi pathname.cmi param_tags.cmi options.cmi \
my_std.cmi log.cmi lexers.cmi flags.cmi command.cmi ocaml_utils.cmi
ocaml_utils.cmx : tools.cmx tags.cmx pathname.cmx param_tags.cmx options.cmx \
- my_std.cmx log.cmx lexers.cmi flags.cmx command.cmx ocaml_utils.cmi
+ my_std.cmx log.cmx lexers.cmx flags.cmx command.cmx ocaml_utils.cmi
ocamlbuild.cmo : ocamlbuild_unix_plugin.cmi ocamlbuild.cmi
ocamlbuild.cmx : ocamlbuild_unix_plugin.cmx ocamlbuild.cmi
-ocamlbuild_Myocamlbuild_config.cmo :
-ocamlbuild_Myocamlbuild_config.cmx :
+ocamlbuild_config.cmo :
+ocamlbuild_config.cmx :
ocamlbuild_executor.cmo : ocamlbuild_executor.cmi
ocamlbuild_executor.cmx : ocamlbuild_executor.cmi
ocamlbuild_plugin.cmo : ocamlbuild_plugin.cmi
@@ -136,30 +147,28 @@ ocamlbuild_unix_plugin.cmo : ocamlbuild_executor.cmi my_unix.cmi my_std.cmi \
exit_codes.cmi ocamlbuild_unix_plugin.cmi
ocamlbuild_unix_plugin.cmx : ocamlbuild_executor.cmx my_unix.cmx my_std.cmx \
exit_codes.cmx ocamlbuild_unix_plugin.cmi
-ocamlbuild_where.cmo : ocamlbuild_Myocamlbuild_config.cmo \
- ocamlbuild_where.cmi
-ocamlbuild_where.cmx : ocamlbuild_Myocamlbuild_config.cmx \
- ocamlbuild_where.cmi
+ocamlbuild_where.cmo : ocamlbuild_config.cmo ocamlbuild_where.cmi
+ocamlbuild_where.cmx : ocamlbuild_config.cmx ocamlbuild_where.cmi
ocamlbuildlight.cmo : ocamlbuildlight.cmi
ocamlbuildlight.cmx : ocamlbuildlight.cmi
-options.cmo : shell.cmi ocamlbuild_where.cmi \
- ocamlbuild_Myocamlbuild_config.cmo my_std.cmi log.cmi lexers.cmi \
- command.cmi options.cmi
-options.cmx : shell.cmx ocamlbuild_where.cmx \
- ocamlbuild_Myocamlbuild_config.cmx my_std.cmx log.cmx lexers.cmi \
- command.cmx options.cmi
-param_tags.cmo : my_std.cmi log.cmi lexers.cmi param_tags.cmi
-param_tags.cmx : my_std.cmx log.cmx lexers.cmi param_tags.cmi
+options.cmo : shell.cmi ocamlbuild_where.cmi ocamlbuild_config.cmo \
+ my_std.cmi log.cmi lexers.cmi command.cmi options.cmi
+options.cmx : shell.cmx ocamlbuild_where.cmx ocamlbuild_config.cmx \
+ my_std.cmx log.cmx lexers.cmx command.cmx options.cmi
+param_tags.cmo : tags.cmi my_std.cmi log.cmi loc.cmi lexers.cmi \
+ param_tags.cmi
+param_tags.cmx : tags.cmx my_std.cmx log.cmx loc.cmx lexers.cmx \
+ param_tags.cmi
pathname.cmo : shell.cmi options.cmi my_unix.cmi my_std.cmi log.cmi glob.cmi \
pathname.cmi
pathname.cmx : shell.cmx options.cmx my_unix.cmx my_std.cmx log.cmx glob.cmx \
pathname.cmi
-plugin.cmo : tools.cmi tags.cmi shell.cmi rule.cmi pathname.cmi options.cmi \
- ocamlbuild_where.cmi my_unix.cmi my_std.cmi log.cmi command.cmi \
- plugin.cmi
-plugin.cmx : tools.cmx tags.cmx shell.cmx rule.cmx pathname.cmx options.cmx \
- ocamlbuild_where.cmx my_unix.cmx my_std.cmx log.cmx command.cmx \
- plugin.cmi
+plugin.cmo : tools.cmi tags.cmi shell.cmi rule.cmi pathname.cmi \
+ param_tags.cmi options.cmi ocamlbuild_where.cmi my_unix.cmi my_std.cmi \
+ log.cmi command.cmi plugin.cmi
+plugin.cmx : tools.cmx tags.cmx shell.cmx rule.cmx pathname.cmx \
+ param_tags.cmx options.cmx ocamlbuild_where.cmx my_unix.cmx my_std.cmx \
+ log.cmx command.cmx plugin.cmi
ppcache.cmo : shell.cmi pathname.cmi my_std.cmi log.cmi command.cmi \
ppcache.cmi
ppcache.cmx : shell.cmx pathname.cmx my_std.cmx log.cmx command.cmx \
@@ -170,12 +179,12 @@ resource.cmo : slurp.cmi shell.cmi pathname.cmi options.cmi my_unix.cmi \
my_std.cmi log.cmi lexers.cmi glob_ast.cmi glob.cmi digest_cache.cmi \
command.cmi resource.cmi
resource.cmx : slurp.cmx shell.cmx pathname.cmx options.cmx my_unix.cmx \
- my_std.cmx log.cmx lexers.cmi glob_ast.cmx glob.cmx digest_cache.cmx \
+ my_std.cmx log.cmx lexers.cmx glob_ast.cmx glob.cmx digest_cache.cmx \
command.cmx resource.cmi
-rule.cmo : tags.cmi shell.cmi resource.cmi pathname.cmi options.cmi \
- my_std.cmi log.cmi digest_cache.cmi command.cmi rule.cmi
-rule.cmx : tags.cmx shell.cmx resource.cmx pathname.cmx options.cmx \
- my_std.cmx log.cmx digest_cache.cmx command.cmx rule.cmi
+rule.cmo : shell.cmi resource.cmi pathname.cmi options.cmi my_std.cmi \
+ log.cmi digest_cache.cmi command.cmi rule.cmi
+rule.cmx : shell.cmx resource.cmx pathname.cmx options.cmx my_std.cmx \
+ log.cmx digest_cache.cmx command.cmx rule.cmi
shell.cmo : tags.cmi my_unix.cmi my_std.cmi log.cmi shell.cmi
shell.cmx : tags.cmx my_unix.cmx my_std.cmx log.cmx shell.cmi
slurp.cmo : my_unix.cmi my_std.cmi slurp.cmi
diff --git a/ocamlbuild/Makefile b/ocamlbuild/Makefile
index fe011bd688..ec3b999ea6 100644
--- a/ocamlbuild/Makefile
+++ b/ocamlbuild/Makefile
@@ -10,119 +10,190 @@
# #
#########################################################################
-.PHONY: all byte native profile debug ppcache doc
-
-ifndef INSTALL_PREFIX
-INSTALL_PREFIX := $(PWD)/_install
-endif
-
-ifndef INSTALL_LIB
-INSTALL_LIB := $(INSTALL_PREFIX)/lib/ocamlbuild
-endif
-
-ifndef INSTALL_BIN
-INSTALL_BIN := $(INSTALL_PREFIX)/bin
-endif
-
-ifndef BUILDDIR
-BUILDDIR := "_build"
-endif
-
-ifndef OCAMLBUILDCMD
-OCAMLBUILDCMD := ./boot/ocamlbuild
-endif
-
-ifdef O
-OCAMLBUILD_OPTIONS := $(OCAMLBUILD_OPTIONS) $(O)
-endif
-
-ifeq ($(wildcard ./ocamlbuild_Myocamlbuil*_config.ml),./ocamlbuild_Myocamlbuild_config.ml)
-ifeq ($(wildcard ./boot/oc*build),./boot/ocamlbuild)
-OCAMLBUILD=INSTALL_LIB=$(INSTALL_LIB) INSTALL_BIN=$(INSTALL_BIN) $(OCAMLBUILDCMD) -build-dir $(BUILDDIR) -no-links $(OCAMLBUILD_OPTIONS)
-LIBS=ocamlbuildlib ocamlbuildlightlib
-PROGRAMS=ocamlbuild ocamlbuildlight
-BYTE=$(LIBS:=.cma) $(PROGRAMS:=.byte)
-NATIVE=$(LIBS:=.cmxa) $(PROGRAMS:=.native)
-
-all:
- $(OCAMLBUILD) $(BYTE) $(NATIVE)
-byte:
- $(OCAMLBUILD) $(BYTE)
-native:
- $(OCAMLBUILD) $(NATIVE)
-profile:
- $(OCAMLBUILD) $(LIBS:=.p.cmxa) $(PROGRAMS:=.p.native)
-debug:
- $(OCAMLBUILD) $(LIBS:=.d.cma) $(PROGRAMS:=.d.byte)
-ppcache:
- $(OCAMLBUILD) ppcache.byte ppcache.native
-doc:
- $(OCAMLBUILD) ocamlbuild.docdir/index.html
- ln -s -f $(BUILDDIR)/ocamlbuild.docdir doc
-else
-all byte native: ocamlbuild.byte.start
- mkdir -p boot
- cp ocamlbuild.byte.start boot/ocamlbuild
- $(MAKE) $(MFLAGS) $(MAKECMDGOALS)
- cp $(BUILDDIR)/ocamlbuild.native boot/ocamlbuild
- $(MAKE) $(MFLAGS) $(MAKECMDGOALS) OCAMLBUILD_OPTIONS="-nothing-should-be-rebuilt -verbose -1"
-endif
-else
-all byte native:
- @echo "Please copy the myocamlbuild_config.ml of the OCaml source distribution"
- @echo " as ocamlbuild_Myocamlbuild_config.ml"
- @echo
- @echo "$$ cp ../myocamlbuild_config.ml ocamlbuild_Myocamlbuild_config.ml"
-endif
-
-ocamlbuild.byte.start:
- ./start.sh
-
-promote:
- cp $(BUILDDIR)/ocamlbuild.native boot/ocamlbuild
-
-clean:
- rm -rf $(BUILDDIR)
-
-distclean: clean
- rm -rf _log _start ocamlbuild.byte.start boot/ocamlbuild
-
-install: all
- mkdir -p $(INSTALL_BIN)
- mkdir -p $(INSTALL_LIB)
- install $(BUILDDIR)/ocamlbuild.byte \
- $(BUILDDIR)/ocamlbuild.native \
- $(BUILDDIR)/ocamlbuildlight.byte \
- $(BUILDDIR)/ocamlbuildlight.native \
- $(INSTALL_BIN)
- install $(BUILDDIR)/ocamlbuild.native $(INSTALL_BIN)/ocamlbuild
- install $(BUILDDIR)/ocamlbuildlight.byte $(INSTALL_BIN)/ocamlbuildlight
- install -m 644 \
- $(BUILDDIR)/ocamlbuildlib.cmxa \
- $(BUILDDIR)/ocamlbuildlib.a \
- $(BUILDDIR)/ocamlbuildlib.cma \
- $(BUILDDIR)/ocamlbuildlightlib.cmxa \
- $(BUILDDIR)/ocamlbuildlightlib.a \
- $(BUILDDIR)/ocamlbuildlightlib.cma \
- $(BUILDDIR)/ocamlbuild_unix_plugin.cmx \
- $(BUILDDIR)/ocamlbuild_unix_plugin.o \
- $(BUILDDIR)/ocamlbuild_unix_plugin.cmo \
- $(BUILDDIR)/ocamlbuild_unix_plugin.cmi \
- $(BUILDDIR)/ocamlbuild_executor.cmi \
- $(BUILDDIR)/ocamlbuild_executor.cmo \
- $(BUILDDIR)/ocamlbuild_executor.cmx \
- $(BUILDDIR)/ocamlbuild_executor.o \
- $(BUILDDIR)/ocamlbuild_pack.cmi \
- $(BUILDDIR)/ocamlbuild_pack.cmo \
- $(BUILDDIR)/ocamlbuild_pack.cmx \
- $(BUILDDIR)/ocamlbuild_pack.o \
- $(BUILDDIR)/ocamlbuild.cmi \
- $(BUILDDIR)/ocamlbuild_plugin.cmi \
- $(BUILDDIR)/ocamlbuild.cmx \
- $(BUILDDIR)/ocamlbuild.o \
- $(BUILDDIR)/ocamlbuild.cmo \
- $(BUILDDIR)/ocamlbuildlight.cmx \
- $(BUILDDIR)/ocamlbuildlight.o \
- $(BUILDDIR)/ocamlbuildlight.cmo $(INSTALL_LIB)
- ranlib $(INSTALL_LIB)/ocamlbuildlib.a
- ranlib $(INSTALL_LIB)/ocamlbuildlightlib.a
+include ../config/Makefile
+
+OCAMLRUN = ../boot/ocamlrun
+OCAMLC = ../ocamlcomp.sh
+OCAMLOPT = ../ocamlcompopt.sh
+OCAMLDEP = $(OCAMLRUN) ../tools/ocamldep
+OCAMLLEX = $(OCAMLRUN) ../boot/ocamllex
+CP = cp
+COMPFLAGS= -warn-error A -w L -w R -w Z -I ../otherlibs/$(UNIXLIB)
+LINKFLAGS= -I ../otherlibs/$(UNIXLIB)
+
+PACK_CMO=\
+ loc.cmo \
+ discard_printf.cmo \
+ signatures.cmi \
+ my_std.cmo \
+ my_unix.cmo \
+ tags.cmo \
+ display.cmo \
+ log.cmo \
+ shell.cmo \
+ bool.cmo \
+ glob_ast.cmo \
+ glob_lexer.cmo \
+ glob.cmo \
+ lexers.cmo \
+ param_tags.cmo \
+ command.cmo \
+ ocamlbuild_config.cmo \
+ ocamlbuild_where.cmo \
+ slurp.cmo \
+ options.cmo \
+ pathname.cmo \
+ configuration.cmo \
+ flags.cmo \
+ hygiene.cmo \
+ digest_cache.cmo \
+ resource.cmo \
+ rule.cmo \
+ solver.cmo \
+ report.cmo \
+ tools.cmo \
+ fda.cmo \
+ findlib.cmo \
+ ocaml_arch.cmo \
+ ocaml_utils.cmo \
+ ocaml_dependencies.cmo \
+ ocaml_compiler.cmo \
+ ocaml_tools.cmo \
+ ocaml_specific.cmo \
+ plugin.cmo \
+ exit_codes.cmo \
+ hooks.cmo \
+ main.cmo
+
+EXTRA_CMO=\
+ ocamlbuild_plugin.cmo \
+ ocamlbuild_executor.cmo \
+ ocamlbuild_unix_plugin.cmo
+
+PACK_CMX=$(PACK_CMO:.cmo=.cmx)
+EXTRA_CMX=$(EXTRA_CMO:.cmo=.cmx)
+
+INSTALL_LIB=\
+ ocamlbuildlib.cma \
+ ocamlbuild.cmo \
+ ocamlbuild_pack.cmi \
+ $(EXTRA_CMO:.cmo=.cmi)
+
+INSTALL_LIB_OPT=\
+ ocamlbuildlib.cmxa ocamlbuildlib.$(A) \
+ ocamlbuild.cmx ocamlbuild.$(O) \
+ ocamlbuild_pack.cmx \
+ $(EXTRA_CMO:.cmo=.cmx) $(EXTRA_CMO:.cmo=.$(O))
+
+all: ocamlbuild.byte ocamlbuildlib.cma
+ # ocamlbuildlight.byte ocamlbuildlightlib.cma
+allopt: ocamlbuild.native ocamlbuildlib.cmxa
+
+# The executables
+
+ocamlbuild.byte: ocamlbuild_pack.cmo $(EXTRA_CMO) ocamlbuild.cmo
+ $(OCAMLC) $(LINKFLAGS) -o ocamlbuild.byte \
+ unix.cma ocamlbuild_pack.cmo $(EXTRA_CMO) ocamlbuild.cmo
+
+ocamlbuildlight.byte: ocamlbuild_pack.cmo ocamlbuildlight.cmo
+ $(OCAMLC) $(LINKFLAGS) -o ocamlbuildlight.byte \
+ ocamlbuild_pack.cmo ocamlbuildlight.cmo
+
+ocamlbuild.native: ocamlbuild_pack.cmx $(EXTRA_CMX) ocamlbuild.cmx
+ $(OCAMLOPT) $(LINKFLAGS) -o ocamlbuild.native \
+ unix.cmxa ocamlbuild_pack.cmx $(EXTRA_CMX) ocamlbuild.cmx
+
+# The libraries
+
+ocamlbuildlib.cma: ocamlbuild_pack.cmo $(EXTRA_CMO)
+ $(OCAMLC) -a -o ocamlbuildlib.cma \
+ ocamlbuild_pack.cmo $(EXTRA_CMO)
+
+ocamlbuildlightlib.cma: ocamlbuild_pack.cmo ocamlbuildlight.cmo
+ $(OCAMLC) -a -o ocamlbuildlightlib.cma \
+ ocamlbuild_pack.cmo ocamlbuildlight.cmo
+
+ocamlbuildlib.cmxa: ocamlbuild_pack.cmx $(EXTRA_CMX)
+ $(OCAMLOPT) -a -o ocamlbuildlib.cmxa \
+ ocamlbuild_pack.cmx $(EXTRA_CMX)
+
+# The packs
+
+ocamlbuild_pack.cmo ocamlbuild_pack.cmi: $(PACK_CMO)
+ $(OCAMLC) -pack $(PACK_CMO) -o ocamlbuild_pack.cmo
+
+ocamlbuild_pack.cmx: $(PACK_CMX)
+ $(OCAMLOPT) -pack $(PACK_CMX) -o ocamlbuild_pack.cmx
+
+# The config file
+
+ocamlbuild_config.ml: ../config/Makefile
+ (echo 'let bindir = "$(BINDIR)"'; \
+ echo 'let libdir = "$(LIBDIR)"'; \
+ echo 'let supports_shared_libraries = $(SUPPORTS_SHARED_LIBRARIES)';\
+ echo 'let a = "$(A)"'; \
+ echo 'let o = "$(O)"'; \
+ echo 'let so = "$(SO)"'; \
+ echo 'let exe = "$(EXE)"'; \
+ ) > ocamlbuild_config.ml
+clean::
+ rm -f ocamlbuild_config.ml
+beforedepend:: ocamlbuild_config.ml
+
+# The lexers
+
+lexers.ml: lexers.mll
+ $(OCAMLLEX) lexers.mll
+clean::
+ rm -f lexers.ml
+beforedepend:: lexers.ml
+
+glob_lexer.ml: glob_lexer.mll
+ $(OCAMLLEX) glob_lexer.mll
+clean::
+ rm -f glob_lexer.ml
+beforedepend:: glob_lexer.ml
+
+# Installation
+
+install:
+ $(CP) ocamlbuild.byte $(BINDIR)/ocamlbuild$(EXE)
+ $(CP) ocamlbuild.byte $(BINDIR)/ocamlbuild.byte$(EXE)
+ mkdir -p $(LIBDIR)/ocamlbuild
+ $(CP) $(INSTALL_LIB) $(LIBDIR)/ocamlbuild/
+
+installopt:
+ if test -f ocamlbuild.native; then $(MAKE) installopt_really; fi
+
+installopt_really:
+ $(CP) ocamlbuild.native $(BINDIR)/ocamlbuild$(EXE)
+ $(CP) ocamlbuild.native $(BINDIR)/ocamlbuild.native$(EXE)
+ mkdir -p $(LIBDIR)/ocamlbuild
+ $(CP) $(INSTALL_LIB_OPT) $(LIBDIR)/ocamlbuild/
+
+# The generic rules
+
+.SUFFIXES: .ml .mli .cmo .cmi .cmx
+
+.ml.cmo:
+ $(OCAMLC) $(COMPFLAGS) -c $<
+
+.mli.cmi:
+ $(OCAMLC) $(COMPFLAGS) -c $<
+
+.ml.cmx:
+ $(OCAMLOPT) -for-pack Ocamlbuild_pack $(COMPFLAGS) -c $<
+
+clean::
+ rm -f *.cm? *.$(O) *.cmxa *.$(A)
+ rm -f *.byte *.native
+
+# The dependencies
+
+depend: beforedepend
+ $(OCAMLDEP) *.mli *.ml > .depend
+
+include .depend
+
+.PHONY: all allopt clean beforedepend
+.PHONY: install installopt installopt_really depend
diff --git a/ocamlbuild/Makefile.noboot b/ocamlbuild/Makefile.noboot
index 2543c585e1..0679e0ccd7 100644
--- a/ocamlbuild/Makefile.noboot
+++ b/ocamlbuild/Makefile.noboot
@@ -17,8 +17,9 @@ include ../config/Makefile
# Various commands and dir
##########################
-OCAMLC = $(CAMLC_BIN) -nostdlib -I ../stdlib
-OCAMLOPT = $(CAMLOPT_BIN) -nostdlib -I ../stdlib
+CAMLRUN = ../boot/ocamlrun
+OCAMLC = ../ocamlcomp.sh
+OCAMLOPT = ../ocamlcompopt.sh
OCAMLDEP = $(CAMLRUN) ../tools/ocamldep
OCAMLLEX = $(CAMLRUN) ../boot/ocamllex
OCAMLLIB = $(LIBDIR)
diff --git a/ocamlbuild/ocaml_specific.ml b/ocamlbuild/ocaml_specific.ml
index cd852f6264..1b41c0842b 100644
--- a/ocamlbuild/ocaml_specific.ml
+++ b/ocamlbuild/ocaml_specific.ml
@@ -269,7 +269,7 @@ rule "ocaml: cmo* -> cma"
rule "ocaml C stubs: clib & (o|obj)* -> (a|lib) & (so|dll)"
~prods:(["%(path:<**/>)lib%(libname:<*> and not <*.*>)"-.-ext_lib] @
- if Ocamlbuild_Myocamlbuild_config.supports_shared_libraries then
+ if Ocamlbuild_config.supports_shared_libraries then
["%(path:<**/>)dll%(libname:<*> and not <*.*>)"-.-ext_dll]
else
[])
@@ -573,7 +573,9 @@ let () =
(* tags package(X), predicate(X) and syntax(X) *)
List.iter begin fun tags ->
pflag tags "package" (fun pkg -> S [A "-package"; A pkg]);
- pflag tags "predicate" (fun pkg -> S [A "-predicates"; A pkg]);
+ if not (List.mem "ocamldep" tags) then
+ (* PR#6184: 'ocamlfind ocamldep' does not support -predicate *)
+ pflag tags "predicate" (fun pkg -> S [A "-predicates"; A pkg]);
pflag tags "syntax" (fun pkg -> S [A "-syntax"; A pkg])
end all_tags
end else begin
diff --git a/ocamlbuild/ocamlbuild_where.ml b/ocamlbuild/ocamlbuild_where.ml
index a05230a51a..6cea4fdff1 100644
--- a/ocamlbuild/ocamlbuild_where.ml
+++ b/ocamlbuild/ocamlbuild_where.ml
@@ -10,10 +10,10 @@
(* *)
(***********************************************************************)
-let bindir = ref Ocamlbuild_Myocamlbuild_config.bindir;;
+let bindir = ref Ocamlbuild_config.bindir;;
let libdir = ref begin
Filename.concat
(try Sys.getenv "OCAMLLIB"
- with Not_found -> Ocamlbuild_Myocamlbuild_config.libdir)
+ with Not_found -> Ocamlbuild_config.libdir)
"ocamlbuild"
end;;
diff --git a/ocamlbuild/options.ml b/ocamlbuild/options.ml
index 4c9d45c09c..78cee63734 100644
--- a/ocamlbuild/options.ml
+++ b/ocamlbuild/options.ml
@@ -98,10 +98,10 @@ let program_to_execute = ref false
let must_clean = ref false
let show_documentation = ref false
let recursive = ref false
-let ext_lib = ref Ocamlbuild_Myocamlbuild_config.a
-let ext_obj = ref Ocamlbuild_Myocamlbuild_config.o
-let ext_dll = ref Ocamlbuild_Myocamlbuild_config.so
-let exe = ref Ocamlbuild_Myocamlbuild_config.exe
+let ext_lib = ref Ocamlbuild_config.a
+let ext_obj = ref Ocamlbuild_config.o
+let ext_dll = ref Ocamlbuild_config.so
+let exe = ref Ocamlbuild_config.exe
let targets_internal = ref []
let ocaml_libs_internal = ref []
diff --git a/ocamlbuild/plugin.ml b/ocamlbuild/plugin.ml
index 6e533bb902..eb831e7223 100644
--- a/ocamlbuild/plugin.ml
+++ b/ocamlbuild/plugin.ml
@@ -248,6 +248,9 @@ module Make(U:sig end) =
let rc = sys_command (Command.string_of_command_spec spec) in
raise (Exit_silently_with_code rc);
end
+ else if not (sys_file_exists plugin_file) && !Options.plugin_tags <> [] then
+ eprintf "Warning: option -plugin-tag(s) has no effect \
+ in absence of plugin file %S" plugin_file
else
()
end
diff --git a/ocamlbuild/testsuite/findlibonly.ml b/ocamlbuild/testsuite/findlibonly.ml
index aea0168e38..7be8b0fddf 100644
--- a/ocamlbuild/testsuite/findlibonly.ml
+++ b/ocamlbuild/testsuite/findlibonly.ml
@@ -25,4 +25,11 @@ let () = test "SyntaxFlag"
~matching:[M.f "dummy.native"]
~targets:("dummy.native",[]) ();;
+let () = test "PredicateFlag"
+ ~description:"ocamlfind ocamldep does not support the -predicate option"
+ ~options:[`use_ocamlfind; `tag "\"predicate(byte)\""]
+ ~tree:[T.f "test.ml" ~content:"let x = List.map"]
+ ~matching:[_build [M.f "test.ml.depends"]]
+ ~targets:("test.ml.depends", []) ();;
+
run ~root:"_test_findlibonly";;
diff --git a/ocamlbuild/testsuite/internal.ml b/ocamlbuild/testsuite/internal.ml
index b25594f888..5d3c288400 100644
--- a/ocamlbuild/testsuite/internal.ml
+++ b/ocamlbuild/testsuite/internal.ml
@@ -239,6 +239,16 @@ let () = test "PluginCompilation3"
T.f "myocamlbuild.ml" ~content:"print_endline \"foo\";;"]
(* if the plugin were executed we'd get "foo" in failing_msg *)
~failing_msg:""
- ~targets:("main,byte", []) ();;
+ ~targets:("main.byte", []) ();;
+
+let () = test "PluginTagsWarning"
+ ~description:"check that a warning is raised if -plugin-tags \
+ is used without a plugin file"
+ ~options:[`no_ocamlfind; `plugin_tag "use_str"]
+ ~tree:[T.f "main.ml" ~content:""]
+ ~matching:[_build [M.f "main.cmo"]]
+ ~failing_msg:"Warning: option -plugin-tag(s) has no effect \
+ in absence of plugin file \"myocamlbuild.ml\""
+ ~targets:("main.ml", []) ();;
run ~root:"_test_internal";;