summaryrefslogtreecommitdiff
path: root/bindings/ocaml/backends/Makefile
diff options
context:
space:
mode:
authorPeter Zotov <whitequark@whitequark.org>2013-11-14 06:34:21 +0000
committerPeter Zotov <whitequark@whitequark.org>2013-11-14 06:34:21 +0000
commit2bdf881ee403c0493acdb3253bc697f3bd914cca (patch)
tree12257ea158a8ec31b4af2f2fbfa19b32f7fce5c4 /bindings/ocaml/backends/Makefile
parenta69773cead6dea09ade34342eafacf848ec41367 (diff)
downloadllvm-2bdf881ee403c0493acdb3253bc697f3bd914cca.tar.gz
llvm-2bdf881ee403c0493acdb3253bc697f3bd914cca.tar.bz2
llvm-2bdf881ee403c0493acdb3253bc697f3bd914cca.tar.xz
[OCaml] Build stub OCaml libraries for all configured targets
This allows to only link in the needed targets, reducing binary size and more importantly link time. Note that this is an incomplete implementation: currently, LLVM does not have the plumbing which would allow to conditionally link in AsmPrinter, AsmParser and Disassembler for the targets which support them. This should be improved in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194670 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings/ocaml/backends/Makefile')
-rw-r--r--bindings/ocaml/backends/Makefile56
1 files changed, 56 insertions, 0 deletions
diff --git a/bindings/ocaml/backends/Makefile b/bindings/ocaml/backends/Makefile
new file mode 100644
index 0000000000..7698d6e028
--- /dev/null
+++ b/bindings/ocaml/backends/Makefile
@@ -0,0 +1,56 @@
+##===- bindings/ocaml/backends/Makefile --------------------*- Makefile -*-===##
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+#
+##===----------------------------------------------------------------------===##
+#
+# This is the master makefile for backend-specific bindings. It works by
+# creating a stub makefile for each configured target, e.g. Makefile.ARM, and
+# invoking it to compile the corresponding library, e.g. Llvm_ARM.
+#
+# This scheme allows to keep changes to Makefile.ocaml minimal.
+#
+##===----------------------------------------------------------------------===##
+
+LEVEL := ../../..
+ExtraMakefiles = $(PROJ_OBJ_DIR)/Makefile.common
+
+include $(LEVEL)/Makefile.config
+include $(LEVEL)/Makefile.common
+
+all-local:: all-backends
+clean-local:: clean-backends
+install-local:: install-backends
+uninstall-local:: uninstall-backends
+
+stubs:
+ $(Verb) for i in $(TARGETS_TO_BUILD); do \
+ $(ECHO) "TARGET := $$i" > Makefile.$$i; \
+ $(ECHO) "include Makefile.common" >> Makefile.$$i; \
+ done
+
+all-backends: stubs
+ $(Verb) for i in $(TARGETS_TO_BUILD); do \
+ $(MAKE) -f Makefile.$$i all; \
+ done
+
+clean-backends: stubs
+ $(Verb) for i in $(TARGETS_TO_BUILD); do \
+ $(MAKE) -f Makefile.$$i clean; \
+ $(RM) -f Makefile.$$i; \
+ done
+
+install-backends: stubs
+ $(Verb) for i in $(TARGETS_TO_BUILD); do \
+ $(MAKE) -f Makefile.$$i install; \
+ done
+
+uninstall-backends: stubs
+ $(Verb) for i in $(TARGETS_TO_BUILD); do \
+ $(MAKE) -f Makefile.$$i uninstall; \
+ done
+
+.PHONY: all-backends clean-backends install-backends uninstall-backends