Makefile.ocaml revision 57360d1f1cede3b26744d0ce3ade814fcc0f332d
10908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen##===- tools/ml/Makefile -----------------------------------*- Makefile -*-===## 20908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# 30908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# The LLVM Compiler Infrastructure 40908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# 557360d1f1cede3b26744d0ce3ade814fcc0f332dChris Lattner# This file is distributed under the University of Illinois Open Source 657360d1f1cede3b26744d0ce3ade814fcc0f332dChris Lattner# License. See LICENSE.TXT for details. 70908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# 80908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen##===----------------------------------------------------------------------===## 90908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# 100908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# An ocaml library is a unique project type in the context of LLVM, so rules are 110908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# here rather than in Makefile.rules. 120908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# 13c0491ac8b6c24a7d0db8c0a60f76cfb1d66f84abGordon Henriksen# Reference materials on installing ocaml libraries: 14c0491ac8b6c24a7d0db8c0a60f76cfb1d66f84abGordon Henriksen# 15c0491ac8b6c24a7d0db8c0a60f76cfb1d66f84abGordon Henriksen# https://fedoraproject.org/wiki/Packaging/OCaml 16c0491ac8b6c24a7d0db8c0a60f76cfb1d66f84abGordon Henriksen# http://pkg-ocaml-maint.alioth.debian.org/ocaml_packaging_policy.txt 17c0491ac8b6c24a7d0db8c0a60f76cfb1d66f84abGordon Henriksen# 180908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen##===----------------------------------------------------------------------===## 190908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 200908d49c22775d20a88f595845b515f669d528f7Gordon Henrikseninclude $(LEVEL)/Makefile.config 210908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 223b802476d24a6b8c7d1e645f99b4c25ef6e97809Gordon Henriksen# CFLAGS needs to be set before Makefile.rules is included. 233b802476d24a6b8c7d1e645f99b4c25ef6e97809Gordon HenriksenCFLAGS += -I$(shell $(OCAMLC) -where) 240908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 250908d49c22775d20a88f595845b515f669d528f7Gordon Henrikseninclude $(LEVEL)/Makefile.common 260908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 270908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# Intentionally ignore PROJ_prefix here. We want the ocaml stdlib. However, the 281d4e0782ba9761e3c664de53b837b74c0c818ff1Gordon Henriksen# user can override this with OCAML_LIBDIR or configure --with-ocaml-libdir=. 290908d49c22775d20a88f595845b515f669d528f7Gordon HenriksenPROJ_libocamldir := $(DESTDIR)$(OCAML_LIBDIR) 300908d49c22775d20a88f595845b515f669d528f7Gordon HenriksenOcamlDir := $(LibDir)/ocaml 310908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 320908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# Info from llvm-config and similar 330908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenifdef UsedComponents 340908d49c22775d20a88f595845b515f669d528f7Gordon HenriksenUsedLibs = $(shell $(LLVM_CONFIG) --libs $(UsedComponents)) 350908d49c22775d20a88f595845b515f669d528f7Gordon HenriksenUsedLibNames = $(shell $(LLVM_CONFIG) --libnames $(UsedComponents)) 360908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenendif 370908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 380908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# Tools 39a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenOCAMLCFLAGS += -I $(OcamlDir) -I $(ObjDir) 400908d49c22775d20a88f595845b515f669d528f7Gordon HenriksenOCAMLAFLAGS += $(patsubst %,-cclib %, \ 41ed29a28464d1b19d3e043a4cf1e95eedca745842Gordon Henriksen $(filter-out -L$(LibDir),-l$(LIBRARYNAME) \ 42ed29a28464d1b19d3e043a4cf1e95eedca745842Gordon Henriksen $(shell $(LLVM_CONFIG) --ldflags)) \ 43ed29a28464d1b19d3e043a4cf1e95eedca745842Gordon Henriksen $(UsedLibs)) 442e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 454e20a09b6fcf616f1a7bbe0dba4b5fa133b8a5e5Gordon Henriksen# -g was introduced in 3.10.0. 464e20a09b6fcf616f1a7bbe0dba4b5fa133b8a5e5Gordon Henriksen#ifneq ($(ENABLE_OPTIMIZED),1) 474e20a09b6fcf616f1a7bbe0dba4b5fa133b8a5e5Gordon Henriksen# OCAMLDEBUGFLAG := -g 484e20a09b6fcf616f1a7bbe0dba4b5fa133b8a5e5Gordon Henriksen#endif 490908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 502e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenCompile.CMI := $(strip $(OCAMLC) -c $(OCAMLCFLAGS) $(OCAMLDEBUGFLAG) -o) 512e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenCompile.CMO := $(strip $(OCAMLC) -c $(OCAMLCFLAGS) $(OCAMLDEBUGFLAG) -o) 522e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenArchive.CMA := $(strip $(OCAMLC) -a -custom $(OCAMLAFLAGS) $(OCAMLDEBUGFLAG) \ 532e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen -o) 540908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 552e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenCompile.CMX := $(strip $(OCAMLOPT) -c $(OCAMLCFLAGS) $(OCAMLDEBUGFLAG) -o) 562e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenArchive.CMXA := $(strip $(OCAMLOPT) -a $(OCAMLAFLAGS) $(OCAMLDEBUGFLAG) -o) 570908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 580908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# Source files 59a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenOcamlSources1 := $(sort $(wildcard $(PROJ_SRC_DIR)/*.ml)) 60a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenOcamlHeaders1 := $(OcamlSources1:.ml=.mli) 61a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 62a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenOcamlSources := $(OcamlSources1:$(PROJ_SRC_DIR)/%=$(ObjDir)/%) 63a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenOcamlHeaders := $(OcamlHeaders1:$(PROJ_SRC_DIR)/%=$(ObjDir)/%) 64a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 65a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen# Intermediate files 66a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenLibraryCMA := $(ObjDir)/$(LIBRARYNAME).cma 67a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenLibraryCMXA := $(ObjDir)/$(LIBRARYNAME).cmxa 68a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenObjectsCMI := $(OcamlSources:%.ml=%.cmi) 69a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenObjectsCMO := $(OcamlSources:%.ml=%.cmo) 70a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenObjectsCMX := $(OcamlSources:%.ml=%.cmx) 71a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 72a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen# Output files 73a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen# The .cmo files are the only intermediates; all others are to be installed. 74a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenLibraryA := $(OcamlDir)/lib$(LIBRARYNAME).a 75a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenOutputCMA := $(LibraryCMA:$(ObjDir)/%.cma=$(OcamlDir)/%.cma) 76a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenOutputCMXA := $(LibraryCMXA:$(ObjDir)/%.cmxa=$(OcamlDir)/%.cmxa) 77a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenOutputsCMI := $(ObjectsCMI:$(ObjDir)/%.cmi=$(OcamlDir)/%.cmi) 78a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon HenriksenOutputsCMX := $(ObjectsCMX:$(ObjDir)/%.cmx=$(OcamlDir)/%.cmx) 79516276edd4adadf8d521ae6ba29713dacc353c0aGordon HenriksenOutputLibs := $(UsedLibNames:%=$(OcamlDir)/%) 800908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 810908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# Installation targets 820908d49c22775d20a88f595845b515f669d528f7Gordon HenriksenDestA := $(PROJ_libocamldir)/lib$(LIBRARYNAME).a 830908d49c22775d20a88f595845b515f669d528f7Gordon HenriksenDestCMA := $(PROJ_libocamldir)/$(LIBRARYNAME).cma 840908d49c22775d20a88f595845b515f669d528f7Gordon HenriksenDestCMXA := $(PROJ_libocamldir)/$(LIBRARYNAME).cmxa 85516276edd4adadf8d521ae6ba29713dacc353c0aGordon HenriksenDestLibs := $(UsedLibNames:%=$(PROJ_libocamldir)/%) 860908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 870908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 88a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen##===- Dependencies -------------------------------------------------------===## 89a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen# Copy the sources into the intermediate directory because older ocamlc doesn't 90a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen# support -o except when linking (outputs are placed next to inputs). 91a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 92a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen$(ObjDir)/%.mli: $(PROJ_SRC_DIR)/%.mli $(ObjDir)/.dir 93a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(CP) -f $< $@ 94a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 95a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen$(ObjDir)/%.ml: $(PROJ_SRC_DIR)/%.ml $(ObjDir)/.dir 96a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(CP) -f $< $@ 97a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 98ab4456f10a72f3a7c73dac0e95578b9b7e4250b8Gordon Henriksen$(ObjDir)/$(LIBRARYNAME).ocamldep: $(OcamlSources) $(OcamlHeaders) \ 99ab4456f10a72f3a7c73dac0e95578b9b7e4250b8Gordon Henriksen $(OcamlDir)/.dir $(ObjDir)/.dir 100a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(OCAMLDEP) $(OCAMLCFLAGS) $(OcamlSources) $(OcamlHeader) > $@ 101a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 10246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen$(ObjectsCMI): $(UsedOcamlInterfaces:%=$(OcamlDir)/%.cmi) 10346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 104a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen-include $(ObjDir)/$(LIBRARYNAME).ocamldep 105a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 106a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 1070908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen##===- Build static library from C sources --------------------------------===## 1080908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 1090908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenall-local:: $(LibraryA) 1100908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenclean-local:: clean-a 1110908d49c22775d20a88f595845b515f669d528f7Gordon Henrikseninstall-local:: install-a 1120908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenuninstall-local:: uninstall-a 1130908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 1140908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen$(LibraryA): $(ObjectsO) $(OcamlDir)/.dir 1150908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Building $(BuildMode) $(notdir $@)" 1160908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen -$(Verb) $(RM) -f $@ 1170908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(Archive) $@ $(ObjectsO) 1180908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(Ranlib) $@ 1190908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 1200908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenclean-a:: 1210908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen -$(Verb) $(RM) -f $(LibraryA) 1220908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 1230908d49c22775d20a88f595845b515f669d528f7Gordon Henrikseninstall-a:: $(LibraryA) 1240908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Installing $(BuildMode) $(DestA)" 1250908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(MKDIR) $(PROJ_libocamldir) 1260908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(LTInstall) $(LibraryA) $(DestA) 1270908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) 1280908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 1290908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenuninstall-a:: 1300908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Uninstalling $(DestA)" 1310908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen -$(Verb) $(RM) -f $(DestA) 1320908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 1330908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 134516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen##===- Deposit dependent libraries adjacent to Ocaml libs -----------------===## 135516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen 136516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksenall-local:: build-deplibs 137516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksenclean-local:: clean-deplibs 138516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henrikseninstall-local:: install-deplibs 139516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksenuninstall-local:: uninstall-deplibs 140516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen 141516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksenbuild-deplibs: $(OutputLibs) 142516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen 143516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen$(OcamlDir)/%.a: $(LibDir)/%.a 144516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen $(Verb) ln -sf $< $@ 145516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen 1462e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen$(OcamlDir)/%.o: $(LibDir)/%.o 1472e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen $(Verb) ln -sf $< $@ 1482e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 149516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksenclean-deplibs: 150516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen $(Verb) rm -f $(OutputLibs) 151516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen 152516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henrikseninstall-deplibs: 153516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen $(Verb) for i in $(DestLibs:$(PROJ_libocamldir)/%=%); do \ 154516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen ln -sf "$(PROJ_libdir)/$$i" "$(PROJ_libocamldir)/$$i"; \ 155516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen done 156516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen 157516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksenuninstall-deplibs: 158516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen $(Verb) rm -f $(DestLibs) 159516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen 160516276edd4adadf8d521ae6ba29713dacc353c0aGordon Henriksen 1610908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen##===- Build ocaml interfaces (.mli's -> .cmi's) --------------------------===## 1620908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 1630908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenall-local:: build-cmis 1640908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenclean-local:: clean-cmis 1650908d49c22775d20a88f595845b515f669d528f7Gordon Henrikseninstall-local:: install-cmis 1660908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenuninstall-local:: uninstall-cmis 1670908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 168a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksenbuild-cmis: $(OutputsCMI) 169a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 170a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen$(OcamlDir)/%.cmi: $(ObjDir)/%.cmi $(OcamlDir)/.dir 171a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(CP) -f $< $@ 1720908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 173a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen$(ObjDir)/%.cmi: $(ObjDir)/%.mli $(ObjDir)/.dir 1740908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Compiling $(notdir $<) for $(BuildMode) build" 1750908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(Compile.CMI) $@ $< 1760908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 1770908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenclean-cmis:: 178a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen -$(Verb) $(RM) -f $(OutputsCMI) 1790908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 1800908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# Also install the .mli's (headers) as documentation. 181a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henrikseninstall-cmis: $(OutputsCMI) $(OcamlHeaders) 1820908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(MKDIR) $(PROJ_libocamldir) 183a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) for i in $(OutputsCMI:$(OcamlDir)/%=%); do \ 1840908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(EchoCmd) "Installing $(BuildMode) $(PROJ_libocamldir)/$$i"; \ 1850908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(DataInstall) $(OcamlDir)/$$i "$(PROJ_libocamldir)/$$i"; \ 1860908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen done 187a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) for i in $(OcamlHeaders:$(ObjDir)/%=%); do \ 1880908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(EchoCmd) "Installing $(BuildMode) $(PROJ_libocamldir)/$$i"; \ 189a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(DataInstall) $(ObjDir)/$$i "$(PROJ_libocamldir)/$$i"; \ 1900908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen done 1910908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 1920908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenuninstall-cmis:: 193a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) for i in $(OutputsCMI:$(OcamlDir)/%=%); do \ 1940908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(EchoCmd) "Uninstalling $(PROJ_libocamldir)/$$i"; \ 1950908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(RM) -f "$(PROJ_libocamldir)/$$i"; \ 1960908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen done 197a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) for i in $(OcamlHeaders:$(ObjDir)/%=%); do \ 1980908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(EchoCmd) "Uninstalling $(PROJ_libocamldir)/$$i"; \ 1990908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(RM) -f "$(PROJ_libocamldir)/$$i"; \ 2000908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen done 2010908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 2020908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 2030908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen##===- Build ocaml bytecode archive (.ml's -> .cmo's -> .cma) -------------===## 2040908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 205a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksenall-local:: $(OutputCMA) 2060908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenclean-local:: clean-cma 2070908d49c22775d20a88f595845b515f669d528f7Gordon Henrikseninstall-local:: install-cma 2080908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenuninstall-local:: uninstall-cma 2090908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 210a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen$(OutputCMA): $(LibraryCMA) $(OcamlDir)/.dir 211a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(CP) -f $< $@ 212a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 2130908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen$(LibraryCMA): $(ObjectsCMO) $(OcamlDir)/.dir 2140908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Archiving $(notdir $@) for $(BuildMode) build" 2150908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(Archive.CMA) $@ $(ObjectsCMO) 2160908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 217a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen$(ObjDir)/%.cmo: $(ObjDir)/%.ml 2180908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Compiling $(notdir $<) for $(BuildMode) build" 2190908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(Compile.CMO) $@ $< 2200908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 2210908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenclean-cma:: 222a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(RM) -f $(OutputCMA) $(UsedLibNames:%=$(OcamlDir)/%) 2230908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 224a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henrikseninstall-cma:: $(OutputCMA) 2250908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Installing $(BuildMode) $(DestCMA)" 2260908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(MKDIR) $(PROJ_libocamldir) 227a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(DataInstall) $(OutputCMA) "$(DestCMA)" 2280908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 2290908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenuninstall-cma:: 2300908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Uninstalling $(DestCMA)" 2310908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen -$(Verb) $(RM) -f $(DestCMA) 2320908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 2330908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 2340908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen##===- Build optimized ocaml archive (.ml's -> .cmx's -> .cmxa, .a) -------===## 2350908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 2360908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# The ocamlopt compiler is supported on a set of targets disjoint from LLVM's. 2370908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen# If unavailable, 'configure' will not define OCAMLOPT in Makefile.config. 2380908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenifdef OCAMLOPT 2390908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 240a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksenall-local:: $(OutputCMXA) $(OutputsCMX) 2410908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenclean-local:: clean-cmxa 2420908d49c22775d20a88f595845b515f669d528f7Gordon Henrikseninstall-local:: install-cmxa 2430908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenuninstall-local:: uninstall-cmxa 2440908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 245a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen$(OutputCMXA): $(LibraryCMXA) 246a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(CP) -f $< $@ 247a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(CP) -f $(<:.cmxa=.a) $(@:.cmxa=.a) 248a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 249a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen$(OcamlDir)/%.cmx: $(ObjDir)/%.cmx 250a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(CP) -f $< $@ 251a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen 2520908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen$(LibraryCMXA): $(ObjectsCMX) 2530908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Archiving $(notdir $@) for $(BuildMode) build" 2540908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(Archive.CMXA) $@ $(ObjectsCMX) 2550908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(RM) -f $(@:.cmxa=.o) 2560908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 257a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen$(ObjDir)/%.cmx: $(ObjDir)/%.ml 2580908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Compiling optimized $(notdir $<) for $(BuildMode) build" 2590908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(Compile.CMX) $@ $< 2600908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 2610908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenclean-cmxa:: 262a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(RM) -f $(OutputCMXA) $(OutputCMXA:.cmxa=.o) $(OutputsCMX) 2630908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 264a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henrikseninstall-cmxa:: $(OutputCMXA) $(OutputsCMX) 2650908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(MKDIR) $(PROJ_libocamldir) 2660908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Installing $(BuildMode) $(DestCMXA)" 267a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(DataInstall) $(OutputCMXA) $(DestCMXA) 2680908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Installing $(BuildMode) $(DestCMXA:.cmxa=.a)" 269a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) $(DataInstall) $(OutputCMXA:.cmxa=.a) $(DestCMXA:.cmxa=.a) 270a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) for i in $(OutputsCMX:$(OcamlDir)/%=%); do \ 2710908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(EchoCmd) "Installing $(BuildMode) $(PROJ_libocamldir)/$$i"; \ 2720908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(DataInstall) $(OcamlDir)/$$i "$(PROJ_libocamldir)/$$i"; \ 2730908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen done 2740908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 275a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksenuninstall-cmxa:: 2760908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Uninstalling $(DestCMXA)" 2770908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(RM) -f $(DestCMXA) 2780908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Uninstalling $(DestCMXA:.cmxa=.a)" 2790908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Verb) $(RM) -f $(DestCMXA:.cmxa=.a) 280a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Verb) for i in $(OutputsCMX:$(OcamlDir)/%=%); do \ 2810908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(EchoCmd) "Uninstalling $(PROJ_libocamldir)/$$i"; \ 2820908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(RM) -f $(PROJ_libocamldir)/$$i; \ 2830908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen done 2840908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 2850908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenendif 2860908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 2870908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 2880908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen##===- Debugging gunk -----------------------------------------------------===## 2890908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenprintvars:: printcamlvars 2900908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 2910908d49c22775d20a88f595845b515f669d528f7Gordon Henriksenprintcamlvars:: 2920908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "LLVM_CONFIG : " '$(LLVM_CONFIG)' 2930908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "OCAMLCFLAGS : " '$(OCAMLCFLAGS)' 2940908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "OCAMLAFLAGS : " '$(OCAMLAFLAGS)' 2950908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "OCAMLC : " '$(OCAMLC)' 2960908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "OCAMLOPT : " '$(OCAMLOPT)' 297a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Echo) "OCAMLDEP : " '$(OCAMLDEP)' 2980908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Compile.CMI : " '$(Compile.CMI)' 2990908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Compile.CMO : " '$(Compile.CMO)' 3000908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Archive.CMA : " '$(Archive.CMA)' 3010908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Compile.CMX : " '$(Compile.CMX)' 3020908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "Archive.CMXA : " '$(Archive.CMXA)' 3030908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "CAML_LIBDIR : " '$(CAML_LIBDIR)' 3040908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "LibraryCMA : " '$(LibraryCMA)' 3050908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "LibraryCMXA : " '$(LibraryCMXA)' 306a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Echo) "OcamlSources1: " '$(OcamlSources1)' 3070908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "OcamlSources : " '$(OcamlSources)' 308a8c3660c1a4be5d4887f1899bc3c8e62b875c6c0Gordon Henriksen $(Echo) "OcamlHeaders : " '$(OcamlHeaders)' 3090908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "ObjectsCMI : " '$(ObjectsCMI)' 3100908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "ObjectsCMO : " '$(ObjectsCMO)' 3110908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "ObjectsCMX : " '$(ObjectsCMX)' 3120908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "OCAML_LIBDIR : " '$(OCAML_LIBDIR)' 3130908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "DestA : " '$(DestA)' 3140908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "DestCMA : " '$(DestCMA)' 3150908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "DestCMXA : " '$(DestCMXA)' 3160908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "UsedLibs : " '$(UsedLibs)' 3170908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen $(Echo) "UsedLibNames : " '$(UsedLibNames)' 3180908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen 3190908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen.PHONY: printcamlvars build-cmis \ 3200908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen clean-a clean-cmis clean-cma clean-cmxa \ 3210908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen install-a install-cmis install-cma install-cmxa \ 3220908d49c22775d20a88f595845b515f669d528f7Gordon Henriksen uninstall-a uninstall-cmis uninstall-cma uninstall-cmxa 323