diff options
-rw-r--r-- | Makefile | 38 | ||||
-rw-r--r-- | Makefile.nt | 25 | ||||
-rw-r--r-- | config/Makefile.mingw | 2 | ||||
-rw-r--r-- | config/Makefile.mingw64 | 2 | ||||
-rw-r--r-- | config/Makefile.msvc | 2 | ||||
-rw-r--r-- | config/Makefile.msvc64 | 2 | ||||
-rw-r--r-- | ocamlbuild/.depend | 99 | ||||
-rw-r--r-- | ocamlbuild/Makefile | 303 | ||||
-rw-r--r-- | ocamlbuild/ocaml_specific.ml | 2 | ||||
-rw-r--r-- | ocamlbuild/ocamlbuild_where.ml | 4 | ||||
-rw-r--r-- | ocamlbuild/options.ml | 8 |
11 files changed, 284 insertions, 203 deletions
@@ -31,7 +31,6 @@ MKDIR=mkdir -p OCAMLBUILDBYTE=$(WITH_OCAMLBUILD:=.byte) OCAMLBUILDNATIVE=$(WITH_OCAMLBUILD:=.native) -OCAMLBUILDLIBNATIVE=$(WITH_OCAMLBUILD:=lib.native) OCAMLDOC_OPT=$(WITH_OCAMLDOC:=.opt) @@ -324,12 +323,12 @@ install: (cd otherlibs/$$i; $(MAKE) install) || exit $$?; \ done if test -n "$(WITH_OCAMLDOC)"; then (cd ocamldoc; $(MAKE) install); else :; fi - if test -f ocamlopt; then $(MAKE) installopt; else :; fi - if test -n "$(WITH_OCAMLDEBUG)"; then (cd debugger; $(MAKE) install); \ + if test -n "$(WITH_DEBUGGER)"; then (cd debugger; $(MAKE) install); \ + else :; fi + if test -n "$(WITH_OCAMLBUILD)"; then (cd ocamlbuild; $(MAKE) install); \ else :; fi cp config/Makefile $(LIBDIR)/Makefile.config - BINDIR=$(BINDIR) LIBDIR=$(LIBDIR) PREFIX=$(PREFIX) \ - ./build/partial-install.sh + if test -f ocamlopt; then $(MAKE) installopt; else :; fi # Installation of the native-code compiler installopt: @@ -340,6 +339,8 @@ installopt: cp compilerlibs/ocamloptcomp.cma $(OPTSTART) $(COMPLIBDIR) if test -n "$(WITH_OCAMLDOC)"; then (cd ocamldoc; $(MAKE) installopt); \ else :; fi + if test -n "$(WITH_OCAMLBUILD)"; then (cd ocamlbuild; $(MAKE) installopt); \ + else :; fi for i in $(OTHERLIBRARIES); \ do (cd otherlibs/$$i; $(MAKE) installopt) || exit $$?; done if test -f ocamlopt.opt ; then $(MAKE) installoptopt; fi @@ -763,25 +764,18 @@ alldepend:: cd debugger; $(MAKE) depend # Ocamlbuild -#ifeq ($(OCAMLBUILD_NOBOOT),"yes") -#ocamlbuild.byte: ocamlc -# $(MAKE) -C ocamlbuild -f Makefile.noboot -#else -ocamlbuild.byte: ocamlc ocamlbuild-mixed-boot - ./build/ocamlbuild-byte-only.sh -#endif - -ocamlbuild.native: ocamlopt ocamlbuild-mixed-boot otherlibrariesopt - ./build/ocamlbuild-native-only.sh -ocamlbuildlib.native: ocamlopt ocamlbuild-mixed-boot otherlibrariesopt - ./build/ocamlbuildlib-native-only.sh - -ocamlbuild-mixed-boot: ocamlc - ./build/mixed-boot.sh - touch ocamlbuild-mixed-boot + +ocamlbuild.byte: ocamlc otherlibraries + cd ocamlbuild && $(MAKE) all + +ocamlbuild.native: ocamlopt otherlibrariesopt + cd ocamlbuild && $(MAKE) allopt partialclean:: - rm -rf _build ocamlbuild-mixed-boot + cd ocamlbuild && $(MAKE) clean + +alldepend:: + cd ocamlbuild && $(MAKE) depend # Check that the stack limit is reasonable. diff --git a/Makefile.nt b/Makefile.nt index f9cbceace..b16a3e0f7 100644 --- a/Makefile.nt +++ b/Makefile.nt @@ -202,8 +202,6 @@ opt-core: opt: $(MAKE) -f Makefile.nt opt-core $(MAKE) -f Makefile.nt otherlibrariesopt - if test -n "$(WITH_OCAMLBUILD)"; then \ - $(MAKE) -f Makefile.nt ocamlbuildlib.native; else :; fi # Native-code versions of the tools opt.opt: core opt-core ocamlc.opt all ocamlopt.opt ocamllex.opt \ @@ -242,7 +240,8 @@ installbyt: for i in $(OTHERLIBRARIES); do $(MAKEREC) -C otherlibs/$$i install; done if test -n "$(WITH_OCAMLDEBUG)"; then (cd debugger; $(MAKEREC) install); \ else :; fi - ./build/partial-install.sh + if test -n "$(WITH_OCAMLBUILD)"; then (cd ocamlbuild; $(MAKE) install); \ + else :; fi cp config/Makefile $(LIBDIR)/Makefile.config cp README $(DISTRIB)/Readme.general.txt cp README.win32 $(DISTRIB)/Readme.windows.txt @@ -257,6 +256,8 @@ installopt: cp asmcomp/*.cmi driver/*.cmi $(COMPLIBDIR) cp compilerlibs/ocamloptcomp.cma $(OPTSTART) $(COMPLIBDIR) if test -n "$(WITH_OCAMLDOC)"; then (cd ocamldoc; $(MAKEREC) installopt); fi + if test -n "$(WITH_OCAMLBUILD)"; then (cd ocamlbuild; $(MAKE) installopt); \ + else :; fi for i in $(OTHERLIBRARIES); do $(MAKEREC) -C otherlibs/$$i installopt; done if test -f ocamlopt.opt ; then $(MAKEREC) installoptopt; fi @@ -657,19 +658,17 @@ alldepend:: # Ocamlbuild -ocamlbuild.byte: ocamlc otherlibraries ocamlbuild-mixed-boot - ./build/ocamlbuild-byte-only.sh -ocamlbuild.native: ocamlopt otherlibrariesopt ocamlbuild-mixed-boot - ./build/ocamlbuild-native-only.sh -ocamlbuildlib.native: ocamlopt otherlibrariesopt ocamlbuild-mixed-boot - ./build/ocamlbuildlib-native-only.sh +ocamlbuild.byte: ocamlc otherlibraries + cd ocamlbuild && $(MAKE) all +ocamlbuild.native: ocamlopt otherlibrariesopt + cd ocamlbuild && $(MAKE) allopt -.PHONY: ocamlbuild-mixed-boot -ocamlbuild-mixed-boot: - ./build/mixed-boot.sh partialclean:: - rm -rf _build + cd ocamlbuild && $(MAKE) clean + +alldepend:: + cd ocamlbuild && $(MAKE) depend # Make clean in the test suite diff --git a/config/Makefile.mingw b/config/Makefile.mingw index 0589e59bb..63030dd1f 100644 --- a/config/Makefile.mingw +++ b/config/Makefile.mingw @@ -84,6 +84,8 @@ NATDYNLINK=true CMXS=cmxs RUNTIMED=noruntimed ASM_CFI_SUPPORTED=false +UNIXLIB=win32unix +GRAPHLIB=win32graph ########## Configuration for the bytecode compiler diff --git a/config/Makefile.mingw64 b/config/Makefile.mingw64 index cb470e3f7..44784b68a 100644 --- a/config/Makefile.mingw64 +++ b/config/Makefile.mingw64 @@ -84,6 +84,8 @@ NATDYNLINK=true CMXS=cmxs RUNTIMED=noruntimed ASM_CFI_SUPPORTED=false +UNIXLIB=win32unix +GRAPHLIB=win32graph ########## Configuration for the bytecode compiler diff --git a/config/Makefile.msvc b/config/Makefile.msvc index ede394c22..3ab6c6ebf 100644 --- a/config/Makefile.msvc +++ b/config/Makefile.msvc @@ -75,6 +75,8 @@ CMXS=cmxs NATDYNLINK=true RUNTIMED=noruntimed ASM_CFI_SUPPORTED=false +UNIXLIB=win32unix +GRAPHLIB=win32graph ########## Configuration for the bytecode compiler diff --git a/config/Makefile.msvc64 b/config/Makefile.msvc64 index e3f45949d..8437cf4bd 100644 --- a/config/Makefile.msvc64 +++ b/config/Makefile.msvc64 @@ -74,6 +74,8 @@ CMXS=cmxs NATDYNLINK=true RUNTIMED=noruntimed ASM_CFI_SUPPORTED=false +UNIXLIB=win32unix +GRAPHLIB=win32graph ########## Configuration for the bytecode compiler diff --git a/ocamlbuild/.depend b/ocamlbuild/.depend index 5344160e8..5e0c7e660 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 fe011bd68..5790673ae 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) ocamlbuild.cmo + $(OCAMLC) -a -o ocamlbuildlib.cma \ + ocamlbuild_pack.cmo $(EXTRA_CMO) ocamlbuild.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) ocamlbuild.cmx + $(OCAMLOPT) -a -o ocamlbuildlib.cmxa \ + ocamlbuild_pack.cmx $(EXTRA_CMX) ocamlbuild.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/ocaml_specific.ml b/ocamlbuild/ocaml_specific.ml index cd852f626..7b304a1da 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 []) diff --git a/ocamlbuild/ocamlbuild_where.ml b/ocamlbuild/ocamlbuild_where.ml index a05230a51..6cea4fdff 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 4c9d45c09..78cee6373 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 [] |