diff options
Diffstat (limited to 'bindings/ocaml/Makefile.ocaml')
-rw-r--r-- | bindings/ocaml/Makefile.ocaml | 415 |
1 files changed, 0 insertions, 415 deletions
diff --git a/bindings/ocaml/Makefile.ocaml b/bindings/ocaml/Makefile.ocaml deleted file mode 100644 index 40ecc9c08e09..000000000000 --- a/bindings/ocaml/Makefile.ocaml +++ /dev/null @@ -1,415 +0,0 @@ -##===- tools/ml/Makefile -----------------------------------*- Makefile -*-===## -# -# The LLVM Compiler Infrastructure -# -# This file is distributed under the University of Illinois Open Source -# License. See LICENSE.TXT for details. -# -##===----------------------------------------------------------------------===## -# -# An ocaml library is a unique project type in the context of LLVM, so rules are -# here rather than in Makefile.rules. -# -# Reference materials on installing ocaml libraries: -# -# https://fedoraproject.org/wiki/Packaging/OCaml -# http://pkg-ocaml-maint.alioth.debian.org/ocaml_packaging_policy.txt -# -##===----------------------------------------------------------------------===## - -include $(LEVEL)/Makefile.config - -# CFLAGS needs to be set before Makefile.rules is included. -CXX.Flags += -I"$(shell $(OCAMLC) -where)" -C.Flags += -I"$(shell $(OCAMLC) -where)" - -include $(LEVEL)/Makefile.common - -# Intentionally ignore PROJ_prefix here. We want the ocaml stdlib. However, the -# user can override this with OCAML_LIBDIR or configure --with-ocaml-libdir=. -PROJ_libocamldir := $(DESTDIR)$(OCAML_LIBDIR) -OcamlDir := $(LibDir)/ocaml - -# Info from llvm-config and similar -ifndef IS_CLEANING_TARGET -ifdef UsedComponents -UsedLibs = $(shell $(LLVM_CONFIG) --libs $(UsedComponents)) -UsedLibNames = $(shell $(LLVM_CONFIG) --libnames $(UsedComponents)) -endif -endif - -# Tools -OCAMLCFLAGS += -I $(ObjDir) -I $(OcamlDir) -ifndef IS_CLEANING_TARGET -ifneq ($(ObjectsO),) -OCAMLAFLAGS += $(patsubst %,-cclib %, \ - $(filter-out -L$(LibDir),-l$(LIBRARYNAME) \ - $(shell $(LLVM_CONFIG) --ldflags)) \ - $(UsedLibs)) -else -OCAMLAFLAGS += $(patsubst %,-cclib %, \ - $(filter-out -L$(LibDir),$(shell $(LLVM_CONFIG) --ldflags)) \ - $(UsedLibs)) -endif -endif - -# -g was introduced in 3.10.0. -#ifneq ($(ENABLE_OPTIMIZED),1) -# OCAMLDEBUGFLAG := -g -#endif - -Compile.CMI := $(strip $(OCAMLC) -c $(OCAMLCFLAGS) $(OCAMLDEBUGFLAG) -o) -Compile.CMO := $(strip $(OCAMLC) -c $(OCAMLCFLAGS) $(OCAMLDEBUGFLAG) -o) -Archive.CMA := $(strip $(OCAMLC) -a -custom $(OCAMLAFLAGS) $(OCAMLDEBUGFLAG) \ - -o) - -Compile.CMX := $(strip $(OCAMLOPT) -c $(OCAMLCFLAGS) $(OCAMLDEBUGFLAG) -o) -Archive.CMXA := $(strip $(OCAMLOPT) -a $(OCAMLAFLAGS) $(OCAMLDEBUGFLAG) -o) - -ifdef OCAMLOPT -Archive.EXE := $(strip $(OCAMLOPT) -cc $(CXX) $(OCAMLCFLAGS) $(UsedOcamLibs:%=%.cmxa) $(OCAMLDEBUGFLAG) -o) -else -Archive.EXE := $(strip $(OCAMLC) -cc $(CXX) $(OCAMLCFLAGS) $(OCAMLDEBUGFLAG:%=%.cma) -o) -endif - -# Source files -ifndef OcamlSources1 -OcamlSources1 := $(sort $(wildcard $(PROJ_SRC_DIR)/*.ml)) -endif - -ifndef OcamlHeaders1 -OcamlHeaders1 := $(sort $(wildcard $(PROJ_SRC_DIR)/*.mli)) -endif - -OcamlSources2 := $(filter-out $(ExcludeSources),$(OcamlSources1)) -OcamlHeaders2 := $(filter-out $(ExcludeHeaders),$(OcamlHeaders1)) - -OcamlSources := $(OcamlSources2:$(PROJ_SRC_DIR)/%=$(ObjDir)/%) -OcamlHeaders := $(OcamlHeaders2:$(PROJ_SRC_DIR)/%=$(ObjDir)/%) - -# Intermediate files -ObjectsCMI := $(OcamlSources:%.ml=%.cmi) -ObjectsCMO := $(OcamlSources:%.ml=%.cmo) -ObjectsCMX := $(OcamlSources:%.ml=%.cmx) - -ifdef LIBRARYNAME -LibraryCMA := $(ObjDir)/$(LIBRARYNAME).cma -LibraryCMXA := $(ObjDir)/$(LIBRARYNAME).cmxa -endif - -ifdef TOOLNAME -ToolEXE := $(ObjDir)/$(TOOLNAME)$(EXEEXT) -endif - -# Output files -# The .cmo files are the only intermediates; all others are to be installed. -OutputsCMI := $(ObjectsCMI:$(ObjDir)/%.cmi=$(OcamlDir)/%.cmi) -OutputsCMX := $(ObjectsCMX:$(ObjDir)/%.cmx=$(OcamlDir)/%.cmx) -OutputLibs := $(UsedLibNames:%=$(OcamlDir)/%) - -ifdef LIBRARYNAME -LibraryA := $(OcamlDir)/lib$(LIBRARYNAME).a -OutputCMA := $(LibraryCMA:$(ObjDir)/%.cma=$(OcamlDir)/%.cma) -OutputCMXA := $(LibraryCMXA:$(ObjDir)/%.cmxa=$(OcamlDir)/%.cmxa) -endif - -ifdef TOOLNAME -ifdef EXAMPLE_TOOL -OutputEXE := $(ExmplDir)/$(strip $(TOOLNAME))$(EXEEXT) -else -OutputEXE := $(ToolDir)/$(strip $(TOOLNAME))$(EXEEXT) -endif -endif - -# Installation targets -DestLibs := $(UsedLibNames:%=$(PROJ_libocamldir)/%) - -ifdef LIBRARYNAME -DestA := $(PROJ_libocamldir)/lib$(LIBRARYNAME).a -DestCMA := $(PROJ_libocamldir)/$(LIBRARYNAME).cma -DestCMXA := $(PROJ_libocamldir)/$(LIBRARYNAME).cmxa -endif - -##===- Dependencies -------------------------------------------------------===## -# Copy the sources into the intermediate directory because older ocamlc doesn't -# support -o except when linking (outputs are placed next to inputs). - -$(ObjDir)/%.mli: $(PROJ_SRC_DIR)/%.mli $(ObjDir)/.dir - $(Verb) $(CP) -f $< $@ - -$(ObjDir)/%.ml: $(PROJ_SRC_DIR)/%.ml $(ObjDir)/.dir - $(Verb) $(CP) -f $< $@ - -$(ObjectsCMI): $(UsedOcamlInterfaces:%=$(OcamlDir)/%.cmi) - -ifdef LIBRARYNAME -$(ObjDir)/$(LIBRARYNAME).ocamldep: $(OcamlSources) $(OcamlHeaders) \ - $(OcamlDir)/.dir $(ObjDir)/.dir - $(Verb) $(OCAMLDEP) $(OCAMLCFLAGS) $(OcamlSources) $(OcamlHeaders) > $@ - --include $(ObjDir)/$(LIBRARYNAME).ocamldep -endif - -ifdef TOOLNAME -$(ObjDir)/$(TOOLNAME).ocamldep: $(OcamlSources) $(OcamlHeaders) \ - $(OcamlDir)/.dir $(ObjDir)/.dir - $(Verb) $(OCAMLDEP) $(OCAMLCFLAGS) $(OcamlSources) $(OcamlHeaders) > $@ - --include $(ObjDir)/$(TOOLNAME).ocamldep -endif - -##===- Build static library from C sources --------------------------------===## - -ifdef LibraryA -all-local:: $(LibraryA) -clean-local:: clean-a -install-local:: install-a -uninstall-local:: uninstall-a - -$(LibraryA): $(ObjectsO) $(OcamlDir)/.dir - $(Echo) "Building $(BuildMode) $(notdir $@)" - -$(Verb) $(RM) -f $@ - $(Verb) $(Archive) $@ $(ObjectsO) - $(Verb) $(Ranlib) $@ - -clean-a:: - -$(Verb) $(RM) -f $(LibraryA) - -install-a:: $(LibraryA) - $(Echo) "Installing $(BuildMode) $(DestA)" - $(Verb) $(MKDIR) $(PROJ_libocamldir) - $(Verb) $(INSTALL) $(LibraryA) $(DestA) - $(Verb) - -uninstall-a:: - $(Echo) "Uninstalling $(DestA)" - -$(Verb) $(RM) -f $(DestA) -endif - - -##===- Deposit dependent libraries adjacent to Ocaml libs -----------------===## - -all-local:: build-deplibs -clean-local:: clean-deplibs -install-local:: install-deplibs -uninstall-local:: uninstall-deplibs - -build-deplibs: $(OutputLibs) - -$(OcamlDir)/%.a: $(LibDir)/%.a - $(Verb) ln -sf $< $@ - -$(OcamlDir)/%.o: $(LibDir)/%.o - $(Verb) ln -sf $< $@ - -clean-deplibs: - $(Verb) $(RM) -f $(OutputLibs) - -install-deplibs: - $(Verb) $(MKDIR) $(PROJ_libocamldir) - $(Verb) for i in $(DestLibs:$(PROJ_libocamldir)/%=%); do \ - ln -sf "$(PROJ_libdir)/$$i" "$(PROJ_libocamldir)/$$i"; \ - done - -uninstall-deplibs: - $(Verb) $(RM) -f $(DestLibs) - - -##===- Build ocaml interfaces (.mli's -> .cmi's) --------------------------===## - -ifneq ($(OcamlHeaders),) -all-local:: build-cmis -clean-local:: clean-cmis -install-local:: install-cmis -uninstall-local:: uninstall-cmis - -build-cmis: $(OutputsCMI) - -$(OcamlDir)/%.cmi: $(ObjDir)/%.cmi $(OcamlDir)/.dir - $(Verb) $(CP) -f $< $@ - -$(ObjDir)/%.cmi: $(ObjDir)/%.mli $(ObjDir)/.dir - $(Echo) "Compiling $(notdir $<) for $(BuildMode) build" - $(Verb) $(Compile.CMI) $@ $< - -clean-cmis:: - -$(Verb) $(RM) -f $(OutputsCMI) - -# Also install the .mli's (headers) as documentation. -install-cmis: $(OutputsCMI) $(OcamlHeaders) - $(Verb) $(MKDIR) $(PROJ_libocamldir) - $(Verb) for i in $(OutputsCMI:$(OcamlDir)/%=%); do \ - $(EchoCmd) "Installing $(BuildMode) $(PROJ_libocamldir)/$$i"; \ - $(DataInstall) $(OcamlDir)/$$i "$(PROJ_libocamldir)/$$i"; \ - done - $(Verb) for i in $(OcamlHeaders:$(ObjDir)/%=%); do \ - $(EchoCmd) "Installing $(BuildMode) $(PROJ_libocamldir)/$$i"; \ - $(DataInstall) $(ObjDir)/$$i "$(PROJ_libocamldir)/$$i"; \ - done - -uninstall-cmis:: - $(Verb) for i in $(OutputsCMI:$(OcamlDir)/%=%); do \ - $(EchoCmd) "Uninstalling $(PROJ_libocamldir)/$$i"; \ - $(RM) -f "$(PROJ_libocamldir)/$$i"; \ - done - $(Verb) for i in $(OcamlHeaders:$(ObjDir)/%=%); do \ - $(EchoCmd) "Uninstalling $(PROJ_libocamldir)/$$i"; \ - $(RM) -f "$(PROJ_libocamldir)/$$i"; \ - done -endif - - -##===- Build ocaml bytecode archive (.ml's -> .cmo's -> .cma) -------------===## - -$(ObjDir)/%.cmo: $(ObjDir)/%.ml - $(Echo) "Compiling $(notdir $<) for $(BuildMode) build" - $(Verb) $(Compile.CMO) $@ $< - -ifdef LIBRARYNAME -all-local:: $(OutputCMA) -clean-local:: clean-cma -install-local:: install-cma -uninstall-local:: uninstall-cma - -$(OutputCMA): $(LibraryCMA) $(OcamlDir)/.dir - $(Verb) $(CP) -f $< $@ - -$(LibraryCMA): $(ObjectsCMO) $(OcamlDir)/.dir - $(Echo) "Archiving $(notdir $@) for $(BuildMode) build" - $(Verb) $(Archive.CMA) $@ $(ObjectsCMO) - -clean-cma:: - $(Verb) $(RM) -f $(OutputCMA) $(UsedLibNames:%=$(OcamlDir)/%) - -install-cma:: $(OutputCMA) - $(Echo) "Installing $(BuildMode) $(DestCMA)" - $(Verb) $(MKDIR) $(PROJ_libocamldir) - $(Verb) $(DataInstall) $(OutputCMA) "$(DestCMA)" - -uninstall-cma:: - $(Echo) "Uninstalling $(DestCMA)" - -$(Verb) $(RM) -f $(DestCMA) -endif - -##===- Build optimized ocaml archive (.ml's -> .cmx's -> .cmxa, .a) -------===## - -# The ocamlopt compiler is supported on a set of targets disjoint from LLVM's. -# If unavailable, 'configure' will not define OCAMLOPT in Makefile.config. -ifdef OCAMLOPT - -$(OcamlDir)/%.cmx: $(ObjDir)/%.cmx - $(Verb) $(CP) -f $< $@ - -$(ObjDir)/%.cmx: $(ObjDir)/%.ml - $(Echo) "Compiling optimized $(notdir $<) for $(BuildMode) build" - $(Verb) $(Compile.CMX) $@ $< - -ifdef LIBRARYNAME -all-local:: $(OutputCMXA) $(OutputsCMX) -clean-local:: clean-cmxa -install-local:: install-cmxa -uninstall-local:: uninstall-cmxa - -$(OutputCMXA): $(LibraryCMXA) - $(Verb) $(CP) -f $< $@ - $(Verb) $(CP) -f $(<:.cmxa=.a) $(@:.cmxa=.a) - -$(LibraryCMXA): $(ObjectsCMX) - $(Echo) "Archiving $(notdir $@) for $(BuildMode) build" - $(Verb) $(Archive.CMXA) $@ $(ObjectsCMX) - $(Verb) $(RM) -f $(@:.cmxa=.o) - -clean-cmxa:: - $(Verb) $(RM) -f $(OutputCMXA) $(OutputCMXA:.cmxa=.a) $(OutputsCMX) - -install-cmxa:: $(OutputCMXA) $(OutputsCMX) - $(Verb) $(MKDIR) $(PROJ_libocamldir) - $(Echo) "Installing $(BuildMode) $(DestCMXA)" - $(Verb) $(DataInstall) $(OutputCMXA) $(DestCMXA) - $(Echo) "Installing $(BuildMode) $(DestCMXA:.cmxa=.a)" - $(Verb) $(DataInstall) $(OutputCMXA:.cmxa=.a) $(DestCMXA:.cmxa=.a) - $(Verb) for i in $(OutputsCMX:$(OcamlDir)/%=%); do \ - $(EchoCmd) "Installing $(BuildMode) $(PROJ_libocamldir)/$$i"; \ - $(DataInstall) $(OcamlDir)/$$i "$(PROJ_libocamldir)/$$i"; \ - done - -uninstall-cmxa:: - $(Echo) "Uninstalling $(DestCMXA)" - $(Verb) $(RM) -f $(DestCMXA) - $(Echo) "Uninstalling $(DestCMXA:.cmxa=.a)" - $(Verb) $(RM) -f $(DestCMXA:.cmxa=.a) - $(Verb) for i in $(OutputsCMX:$(OcamlDir)/%=%); do \ - $(EchoCmd) "Uninstalling $(PROJ_libocamldir)/$$i"; \ - $(RM) -f $(PROJ_libocamldir)/$$i; \ - done -endif -endif - -##===- Build executables --------------------------------------------------===## - -ifdef TOOLNAME -all-local:: $(OutputEXE) -clean-local:: clean-exe - -$(OutputEXE): $(ToolEXE) $(OcamlDir)/.dir - $(Verb) $(CP) -f $< $@ - -ifndef OCAMLOPT -$(ToolEXE): $(ObjectsCMO) $(OcamlDir)/.dir - $(Echo) "Archiving $(notdir $@) for $(BuildMode) build" - $(Verb) $(Archive.EXE) $@ $(ObjectsCMO) -else -$(ToolEXE): $(ObjectsCMX) $(OcamlDir)/.dir - $(Echo) "Archiving $(notdir $@) for $(BuildMode) build" - $(Verb) $(Archive.EXE) $@ $(ObjectsCMX) -endif -endif - -##===- Generate documentation ---------------------------------------------===## - -$(ObjDir)/$(LIBRARYNAME).odoc: $(ObjectsCMI) - $(Echo) "Documenting $(notdir $@)" - $(Verb) $(OCAMLDOC) -I $(ObjDir) -I $(OcamlDir) -dump $@ $(OcamlHeaders) - -ocamldoc: $(ObjDir)/$(LIBRARYNAME).odoc - -##===- Debugging gunk -----------------------------------------------------===## -printvars:: printcamlvars - -printcamlvars:: - $(Echo) "LLVM_CONFIG : " '$(LLVM_CONFIG)' - $(Echo) "OCAMLCFLAGS : " '$(OCAMLCFLAGS)' - $(Echo) "OCAMLAFLAGS : " '$(OCAMLAFLAGS)' - $(Echo) "OCAMLC : " '$(OCAMLC)' - $(Echo) "OCAMLOPT : " '$(OCAMLOPT)' - $(Echo) "OCAMLDEP : " '$(OCAMLDEP)' - $(Echo) "Compile.CMI : " '$(Compile.CMI)' - $(Echo) "Compile.CMO : " '$(Compile.CMO)' - $(Echo) "Archive.CMA : " '$(Archive.CMA)' - $(Echo) "Compile.CMX : " '$(Compile.CMX)' - $(Echo) "Archive.CMXA : " '$(Archive.CMXA)' - $(Echo) "CAML_LIBDIR : " '$(CAML_LIBDIR)' - $(Echo) "LibraryCMA : " '$(LibraryCMA)' - $(Echo) "LibraryCMXA : " '$(LibraryCMXA)' - $(Echo) "OcamlSources1: " '$(OcamlSources1)' - $(Echo) "OcamlSources2: " '$(OcamlSources2)' - $(Echo) "OcamlSources : " '$(OcamlSources)' - $(Echo) "OcamlHeaders1: " '$(OcamlHeaders1)' - $(Echo) "OcamlHeaders2: " '$(OcamlHeaders2)' - $(Echo) "OcamlHeaders : " '$(OcamlHeaders)' - $(Echo) "ObjectsCMI : " '$(ObjectsCMI)' - $(Echo) "ObjectsCMO : " '$(ObjectsCMO)' - $(Echo) "ObjectsCMX : " '$(ObjectsCMX)' - $(Echo) "OCAML_LIBDIR : " '$(OCAML_LIBDIR)' - $(Echo) "DestA : " '$(DestA)' - $(Echo) "DestCMA : " '$(DestCMA)' - $(Echo) "DestCMXA : " '$(DestCMXA)' - $(Echo) "UsedLibs : " '$(UsedLibs)' - $(Echo) "UsedLibNames : " '$(UsedLibNames)' - -.PHONY: printcamlvars build-cmis \ - clean-a clean-cmis clean-cma clean-cmxa \ - install-a install-cmis install-cma install-cmxa \ - install-exe \ - uninstall-a uninstall-cmis uninstall-cma uninstall-cmxa \ - uninstall-exe |