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