Makefile revision 2ae19553980ac99a8881445623f55cc8f153cce3
16d5ab866fc1492c12b1f2531bbe7dcdb55ac9e15Misha Brukman#===- ./Makefile -------------------------------------------*- Makefile -*--===#
2e488e9360b1a865ba604330965edcf139e590b65John Criswell# 
3e488e9360b1a865ba604330965edcf139e590b65John Criswell#                     The LLVM Compiler Infrastructure
4e488e9360b1a865ba604330965edcf139e590b65John Criswell#
557360d1f1cede3b26744d0ce3ade814fcc0f332dChris Lattner# This file is distributed under the University of Illinois Open Source
657360d1f1cede3b26744d0ce3ade814fcc0f332dChris Lattner# License. See LICENSE.TXT for details.
7e488e9360b1a865ba604330965edcf139e590b65John Criswell# 
86d5ab866fc1492c12b1f2531bbe7dcdb55ac9e15Misha Brukman#===------------------------------------------------------------------------===#
922033b2a4e0330b24fd601ef36e36bb1e544bf9dChris Lattner
105720be4138bba4fafb72a0f3034cfe47af40b696Chris LattnerLEVEL := .
1187b5101248ad861db5298aad8ceb3a7e407707c5Chris Lattner
1287b5101248ad861db5298aad8ceb3a7e407707c5Chris Lattner# Top-Level LLVM Build Stages:
1387b5101248ad861db5298aad8ceb3a7e407707c5Chris Lattner#   1. Build lib/System and lib/Support, which are used by utils (tblgen).
1487b5101248ad861db5298aad8ceb3a7e407707c5Chris Lattner#   2. Build utils, which is used by VMCore.
1587b5101248ad861db5298aad8ceb3a7e407707c5Chris Lattner#   3. Build VMCore, which builds the Intrinsics.inc file used by libs.
1687b5101248ad861db5298aad8ceb3a7e407707c5Chris Lattner#   4. Build libs, which are needed by llvm-config.
1787b5101248ad861db5298aad8ceb3a7e407707c5Chris Lattner#   5. Build llvm-config, which determines inter-lib dependencies for tools.
188b2e1419cf24a33df5a87c99e367528b44dc28cfReid Spencer#   6. Build tools, runtime, docs.
1987b5101248ad861db5298aad8ceb3a7e407707c5Chris Lattner#
2087b5101248ad861db5298aad8ceb3a7e407707c5Chris LattnerDIRS := lib/System lib/Support utils lib/VMCore lib tools/llvm-config \
218b2e1419cf24a33df5a87c99e367528b44dc28cfReid Spencer        tools runtime docs
22df93e579757961d9a43c3fee9b97b43da8fb652cDavid Greene
238ef426baa36639458f6777309db25c1768dc9c8aGordon HenriksenOPTIONAL_DIRS := examples projects bindings
245720be4138bba4fafb72a0f3034cfe47af40b696Chris LattnerEXTRA_DIST := test llvm.spec include win32 Xcode
25009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner
2606a801a38c43716564b3b9fb6c7a04ed242ecb61Reid Spencerinclude $(LEVEL)/Makefile.config 
2793bc3cdd43a7f4e764049d12bd6aad019b834432Reid Spencer
28c6b66ebba9e77ecc766780f4c860ec554f963855Chris Lattner# llvm-gcc4 doesn't need runtime libs.  llvm-gcc4 is the only supported one.
29c6b66ebba9e77ecc766780f4c860ec554f963855Chris Lattner# FIXME: Remove runtime entirely once we have an understanding of where
30c6b66ebba9e77ecc766780f4c860ec554f963855Chris Lattner# libprofile etc should go.
31c6b66ebba9e77ecc766780f4c860ec554f963855Chris Lattner#ifeq ($(LLVMGCC_MAJVERS),4)
328b2e1419cf24a33df5a87c99e367528b44dc28cfReid Spencer  DIRS := $(filter-out runtime, $(DIRS))
33c6b66ebba9e77ecc766780f4c860ec554f963855Chris Lattner#endif
348b2e1419cf24a33df5a87c99e367528b44dc28cfReid Spencer
355720be4138bba4fafb72a0f3034cfe47af40b696Chris Lattnerifeq ($(MAKECMDGOALS),libs-only)
368b2e1419cf24a33df5a87c99e367528b44dc28cfReid Spencer  DIRS := $(filter-out tools runtime docs, $(DIRS))
375720be4138bba4fafb72a0f3034cfe47af40b696Chris Lattner  OPTIONAL_DIRS :=
385720be4138bba4fafb72a0f3034cfe47af40b696Chris Lattnerendif
3922033b2a4e0330b24fd601ef36e36bb1e544bf9dChris Lattner
40544f83db6b124d042cdb4eba1c83528056e81f09Nate Begemanifeq ($(MAKECMDGOALS),install-libs)
41544f83db6b124d042cdb4eba1c83528056e81f09Nate Begeman  DIRS := $(filter-out tools runtime docs, $(DIRS))
42544f83db6b124d042cdb4eba1c83528056e81f09Nate Begeman  OPTIONAL_DIRS := $(filter bindings, $(OPTIONAL_DIRS))
43544f83db6b124d042cdb4eba1c83528056e81f09Nate Begemanendif
44544f83db6b124d042cdb4eba1c83528056e81f09Nate Begeman
458b1f7676bddcf099e30b849f511ad5a6a86ea8a0Reid Spencerifeq ($(MAKECMDGOALS),tools-only)
468b2e1419cf24a33df5a87c99e367528b44dc28cfReid Spencer  DIRS := $(filter-out runtime docs, $(DIRS))
475720be4138bba4fafb72a0f3034cfe47af40b696Chris Lattner  OPTIONAL_DIRS :=
486a8c2907b0721ce53ad6887be5b10eef50dac060Chris Lattnerendif
4922033b2a4e0330b24fd601ef36e36bb1e544bf9dChris Lattner
50122c05571141b695d9683b3fb4ce060e1ea1c009Chris Lattner# Don't install utils, examples, or projects they are only used to 
51122c05571141b695d9683b3fb4ce060e1ea1c009Chris Lattner# build LLVM.
52122c05571141b695d9683b3fb4ce060e1ea1c009Chris Lattnerifeq ($(MAKECMDGOALS),install)
53122c05571141b695d9683b3fb4ce060e1ea1c009Chris Lattner  DIRS := $(filter-out utils, $(DIRS))
548ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen  OPTIONAL_DIRS := $(filter bindings, $(OPTIONAL_DIRS))
55122c05571141b695d9683b3fb4ce060e1ea1c009Chris Lattnerendif
56122c05571141b695d9683b3fb4ce060e1ea1c009Chris Lattner
5722033b2a4e0330b24fd601ef36e36bb1e544bf9dChris Lattner# Include the main makefile machinery.
5806a801a38c43716564b3b9fb6c7a04ed242ecb61Reid Spencerinclude $(LLVM_SRC_ROOT)/Makefile.rules
5906a801a38c43716564b3b9fb6c7a04ed242ecb61Reid Spencer
6045eeed9b359eba3a69fd0911c543feed3d112d15Reid Spencer# Specify options to pass to configure script when we're
6145eeed9b359eba3a69fd0911c543feed3d112d15Reid Spencer# running the dist-check target
6245eeed9b359eba3a69fd0911c543feed3d112d15Reid SpencerDIST_CHECK_CONFIG_OPTIONS = --with-llvmgccdir=$(LLVMGCCDIR)
6345eeed9b359eba3a69fd0911c543feed3d112d15Reid Spencer
64df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer.PHONY: debug-opt-prof
65df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencerdebug-opt-prof:
66df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	$(Echo) Building Debug Version
67df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	$(Verb) $(MAKE)
68df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	$(Echo)
69df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	$(Echo) Building Optimized Version
70df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	$(Echo)
71df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	$(Verb) $(MAKE) ENABLE_OPTIMIZED=1
72df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	$(Echo)
73df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	$(Echo) Building Profiling Version
74df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	$(Echo)
75df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	$(Verb) $(MAKE) ENABLE_PROFILING=1
76df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer
77151f8ba3645defc371eb4b68427384e411305734Reid Spencerdist-hook::
78cc2d1e25f37d0d00c7f7f3ec562be61bc34e54caReid Spencer	$(Echo) Eliminating files constructed by configure
79cc2d1e25f37d0d00c7f7f3ec562be61bc34e54caReid Spencer	$(Verb) $(RM) -f \
8090c29494121e3a4cefb5cae5d272178bbc49d3a9Reid Spencer	  $(TopDistDir)/include/llvm/ADT/hash_map  \
8190c29494121e3a4cefb5cae5d272178bbc49d3a9Reid Spencer	  $(TopDistDir)/include/llvm/ADT/hash_set  \
8290c29494121e3a4cefb5cae5d272178bbc49d3a9Reid Spencer	  $(TopDistDir)/include/llvm/ADT/iterator  \
8390c29494121e3a4cefb5cae5d272178bbc49d3a9Reid Spencer	  $(TopDistDir)/include/llvm/Config/config.h  \
8490c29494121e3a4cefb5cae5d272178bbc49d3a9Reid Spencer	  $(TopDistDir)/include/llvm/Support/DataTypes.h  \
8590c29494121e3a4cefb5cae5d272178bbc49d3a9Reid Spencer	  $(TopDistDir)/include/llvm/Support/ThreadSupport.h
86151f8ba3645defc371eb4b68427384e411305734Reid Spencer
879cf662b367795f07ddf2c6deca33839b6581548bChris Lattnertools-only: all
888b1f7676bddcf099e30b849f511ad5a6a86ea8a0Reid Spencerlibs-only: all
89544f83db6b124d042cdb4eba1c83528056e81f09Nate Begemaninstall-libs: install
90ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer
91ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer#------------------------------------------------------------------------
92ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer# Make sure the generated headers are up-to-date. This must be kept in
93ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer# sync with the AC_CONFIG_HEADER invocations in autoconf/configure.ac
94ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer#------------------------------------------------------------------------
95ca739c685b963b103ae2d201e038ac37e7af4b29Reid SpencerFilesToConfig := \
96ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer  include/llvm/Config/config.h \
97ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer  include/llvm/Support/DataTypes.h \
98ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer  include/llvm/ADT/hash_map \
99ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer  include/llvm/ADT/hash_set \
100ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer  include/llvm/ADT/iterator
101ca739c685b963b103ae2d201e038ac37e7af4b29Reid SpencerFilesToConfigPATH  := $(addprefix $(LLVM_OBJ_ROOT)/,$(FilesToConfig))
102ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer
103ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencerall-local:: $(FilesToConfigPATH)
104ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer$(FilesToConfigPATH) : $(LLVM_OBJ_ROOT)/% : $(LLVM_SRC_ROOT)/%.in 
105ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer	$(Echo) Regenerating $*
106ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer	$(Verb) cd $(LLVM_OBJ_ROOT) && $(ConfigStatusScript) $*
107ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer.PRECIOUS: $(FilesToConfigPATH)
108e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencer
10938ab6d887c660c7e2fe08707e8f982ab451fb224Chris Lattner# NOTE: This needs to remain as the last target definition in this file so
11038ab6d887c660c7e2fe08707e8f982ab451fb224Chris Lattner# that it gets executed last.
111e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencerall:: 
112e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencer	$(Echo) '*****' Completed $(BuildMode)$(AssertMode) Build
113e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencerifeq ($(BuildMode),Debug)
114e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencer	$(Echo) '*****' Note: Debug build can be 10 times slower than an
115e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencer	$(Echo) '*****' optimized build. Use 'make ENABLE_OPTIMIZED=1' to
1162ae19553980ac99a8881445623f55cc8f153cce3Gabor Greif	$(Echo) '*****' make an optimized build. Alternatively you can
1172ae19553980ac99a8881445623f55cc8f153cce3Gabor Greif	$(Echo) '*****' configure with --enable-optimized.
118e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencerendif
11938ab6d887c660c7e2fe08707e8f982ab451fb224Chris Lattner
1205b30ee1c13a742f0c1843f867a6f75680c14e894Reid Spencercheck-llvm2cpp:
12142f98e54d11b40c76e13d852bfb30b6be9719663Reid Spencer	$(Verb)$(MAKE) check TESTSUITE=Feature RUNLLVM2CPP=1
1225720be4138bba4fafb72a0f3034cfe47af40b696Chris Lattner
1239df5561a952cbfe32aea4e1fbde16655af82efd0Reid Spencercheck-one:
12442f98e54d11b40c76e13d852bfb30b6be9719663Reid Spencer	$(Verb)$(MAKE) -C test check-one TESTONE=$(TESTONE)
1259df5561a952cbfe32aea4e1fbde16655af82efd0Reid Spencer
126f7c75a6832d86885db3af408307c42e7f1a1adacReid Spencersrpm: $(LLVM_OBJ_ROOT)/llvm.spec 
127f7c75a6832d86885db3af408307c42e7f1a1adacReid Spencer	rpmbuild -bs $(LLVM_OBJ_ROOT)/llvm.spec
128f7c75a6832d86885db3af408307c42e7f1a1adacReid Spencer
129f7c75a6832d86885db3af408307c42e7f1a1adacReid Spencerrpm: $(LLVM_OBJ_ROOT)/llvm.spec 
130f7c75a6832d86885db3af408307c42e7f1a1adacReid Spencer	rpmbuild -bb --target $(TARGET_TRIPLE) $(LLVM_OBJ_ROOT)/llvm.spec
131f7c75a6832d86885db3af408307c42e7f1a1adacReid Spencer
1321e46ae47b1dfe2d8f59da9cac9cedb52390c50feReid Spencershow-footprint:
1331e46ae47b1dfe2d8f59da9cac9cedb52390c50feReid Spencer	$(Verb) du -sk $(LibDir)
1341e46ae47b1dfe2d8f59da9cac9cedb52390c50feReid Spencer	$(Verb) du -sk $(ToolDir)
1351e46ae47b1dfe2d8f59da9cac9cedb52390c50feReid Spencer	$(Verb) du -sk $(ExmplDir)
1361e46ae47b1dfe2d8f59da9cac9cedb52390c50feReid Spencer	$(Verb) du -sk $(ObjDir)
1371e46ae47b1dfe2d8f59da9cac9cedb52390c50feReid Spencer
13851cf6426bf2ec569d843418077af59e7080e7f3eReid Spencerbuild-for-llvm-top:
13951cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer	$(Verb) if test ! -f ./config.status ; then \
14051cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer	  ./configure --prefix="$(LLVM_TOP)/install" \
14151cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer	    --with-llvm-gcc="$(LLVM_TOP)/llvm-gcc" ; \
14251cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer	fi
14351cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer	$(Verb) $(MAKE) tools-only
14451cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer
145f7c75a6832d86885db3af408307c42e7f1a1adacReid Spencer.PHONY: srpm rpm
14651cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer
1472ae19553980ac99a8881445623f55cc8f153cce3Gabor Greif# declare all targets at this level to be serial:
1482ae19553980ac99a8881445623f55cc8f153cce3Gabor Greif
1492ae19553980ac99a8881445623f55cc8f153cce3Gabor Greif.NOTPARALLEL:
1502ae19553980ac99a8881445623f55cc8f153cce3Gabor Greif
151