# make all: compile to bytecode # make opt: compile to native code # make install: install bytecode and/or native code # # See Makefile.config for configurable variables. # Runtime configurations might also be necessary in the site-lib/*/META # files. #---------------------------------------------------------------------- TOP=../.. NAME = findlib OCAMLC = ocamlc OCAMLOPT = ocamlopt OCAMLDEP = ocamldep OCAMLLEX = ocamllex CAMLP4O = camlp4 pa_o.cmo pa_op.cmo pr_o.cmo -- #CAMLP4O = camlp4 pa_o.cmo pa_op.cmo pr_dump.cmo -- OBJECTS = findlib_config.cmo fl_split.cmo fl_metatoken.cmo fl_meta.cmo \ fl_metascanner.cmo fl_topo.cmo fl_package_base.cmo \ findlib.cmo TOBJECTS = topfind.cmo XOBJECTS = $(OBJECTS:.cmo=.cmx) OCAMLFIND_OBJECTS = ocaml_args.cmo frontend.cmo OCAMLFIND_XOBJECTS = ocaml_args.cmx frontend.cmx NUMTOP_OBJECTS = num_top_printers.cmo num_top.cmo all: ocamlfind$(EXEC_SUFFIX) findlib.cma findlib_top.cma topfind num_top.cma opt: ocamlfind_opt$(EXEC_SUFFIX) findlib.cmxa topfind ocamlfind$(EXEC_SUFFIX): findlib.cma $(OCAMLFIND_OBJECTS) $(OCAMLC) -custom -o ocamlfind$(EXEC_SUFFIX) findlib.cma unix.cma \ $(OCAMLFIND_OBJECTS) ocamlfind_opt$(EXEC_SUFFIX): findlib.cmxa $(OCAMLFIND_XOBJECTS) $(OCAMLOPT) -o ocamlfind_opt$(EXEC_SUFFIX) findlib.cmxa unix.cmxa \ $(OCAMLFIND_XOBJECTS) findlib.cma: $(OBJECTS) $(OCAMLC) -a -o findlib.cma $(OBJECTS) findlib_top.cma: $(TOBJECTS) $(OCAMLC) -a -o findlib_top.cma $(TOBJECTS) findlib.cmxa: $(XOBJECTS) $(OCAMLOPT) -a -o findlib.cmxa $(XOBJECTS) findlib_config.ml: findlib_config.mlp USE_CYGPATH="$(USE_CYGPATH)"; \ export USE_CYGPATH; \ cat findlib_config.mlp | \ $(TOP)/tools/patch '@CONFIGFILE@' '$(OCAMLFIND_CONF)' | \ $(TOP)/tools/patch '@STDLIB@' '$(OCAML_CORE_STDLIB)' | \ sed -e 's;@AUTOLINK@;$(OCAML_AUTOLINK);g' \ -e 's;@SYSTEM@;$(SYSTEM);g' \ >findlib_config.ml topfind: topfind.p USE_CYGPATH="$(USE_CYGPATH)"; \ export USE_CYGPATH; \ cat topfind.p | \ $(TOP)/tools/patch '@SITELIB@' '$(OCAML_SITELIB)' \ >topfind num_top.cma: $(NUMTOP_OBJECTS) $(OCAMLC) -a -o num_top.cma $(NUMTOP_OBJECTS) clean: rm -f *.cmi *.cmo *.cma *.cmx *.a *.o *.cmxa \ fl_meta.ml findlib_config.ml findlib.mml topfind \ ocamlfind$(EXEC_SUFFIX) ocamlfind_opt$(EXEC_SUFFIX) install: all mkdir -p $(prefix)$(OCAML_SITELIB)/$(NAME) mkdir -p $(prefix)$(OCAMLFIND_BIN) test $(INSTALL_TOPFIND) -eq 0 || cp topfind $(prefix)$(OCAML_CORE_STDLIB) files=`$(TOP)/tools/collect_files $(TOP)/Makefile.config findlib.cmi findlib.mli findlib.cma topfind.cmi topfind.mli fl_package_base.mli fl_package_base.cmi fl_metascanner.mli fl_metascanner.cmi findlib_top.cma findlib.cmxa findlib.a META` && \ cp $$files $(prefix)$(OCAML_SITELIB)/$(NAME) f="ocamlfind$(EXEC_SUFFIX)"; { test -f ocamlfind_opt$(EXEC_SUFFIX) && f="ocamlfind_opt$(EXEC_SUFFIX)"; }; \ cp $$f $(prefix)$(OCAMLFIND_BIN)/ocamlfind$(EXEC_SUFFIX) install-num-top: mkdir -p $(prefix)$(OCAML_SITELIB)/num-top cp num_top.cma num_top.cmi num_top_printers.cmi \ $(prefix)$(OCAML_SITELIB)/num-top # Note: uninstall-num-top is part of the removal of the META files. uninstall: rm -f $(prefix)$(OCAML_CORE_STDLIB)/findlib rm -rf $(prefix)$(OCAML_SITELIB)/$(NAME) rm -f $(prefix)$(OCAMLFIND_BIN)/ocamlfind$(EXEC_SUFFIX) depend: *.ml *.mli fl_meta.ml fl_metascanner.ml $(OCAMLDEP) *.ml *.mli >depend # Some 'make' implementations require that .SUFFIXES must occur before # the first suffix rule. (E.g. AIX) .SUFFIXES: .mll .cmo .cmi .cmx .ml .mli .mml .src .mml.cmo: $(OCAMLC) -g -vmthread -c -impl $< .mml.cmx: $(OCAMLOPT) -thread -c -impl $< .ml.cmx: $(OCAMLOPT) -c $< .ml.cmo: $(OCAMLC) -g -c $< .mli.cmi: $(OCAMLC) -c $< .src.ml: $(CAMLP4O) -impl $< -o $@ # Solaris make does not like the suffix rule .mll.ml, # so I replaced it by its single application: fl_meta.ml: fl_meta.mll $(OCAMLLEX) fl_meta.mll # Don't remove fl_metascanner.ml: .PRECIOUS: fl_metascanner.ml include $(TOP)/Makefile.config include depend