Makefile revision 9fbf6173b8730e18b39c0a6f3f348451f506780e
16d5ab866fc1492c12b1f2531bbe7dcdb55ac9e15Misha Brukman#===- ./Makefile -------------------------------------------*- Makefile -*--===#
2ef5dc7072fb96a66cc744c0fd6550def9e7f7159Misha Brukman#
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.
7ef5dc7072fb96a66cc744c0fd6550def9e7f7159Misha Brukman#
86d5ab866fc1492c12b1f2531bbe7dcdb55ac9e15Misha Brukman#===------------------------------------------------------------------------===#
922033b2a4e0330b24fd601ef36e36bb1e544bf9dChris Lattner
105720be4138bba4fafb72a0f3034cfe47af40b696Chris LattnerLEVEL := .
1187b5101248ad861db5298aad8ceb3a7e407707c5Chris Lattner
1287b5101248ad861db5298aad8ceb3a7e407707c5Chris Lattner# Top-Level LLVM Build Stages:
1387b5101248ad861db5298aad8ceb3a7e407707c5Chris Lattner#   1. Build lib/Support and lib/TableGen, 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#
20569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov# When cross-compiling, there are some things (tablegen) that need to
21569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov# be build for the build system first.
22569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov
23569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov# If "RC_ProjectName" exists in the environment, and its value is
24569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov# "llvmCore", then this is an "Apple-style" build; search for
25569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov# "Apple-style" in the comments for more info.  Anything else is a
26569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov# normal build.
27569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikovifneq ($(findstring llvmCore, $(RC_ProjectName)),llvmCore)  # Normal build (not "Apple-style").
28569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov
29569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikovifeq ($(BUILD_DIRS_ONLY),1)
30df93e579757961d9a43c3fee9b97b43da8fb652cDavid Greene  DIRS := lib/Support lib/TableGen utils tools/llvm-config-2
318fb520eb4f06d4ef771abe9c22d85b2a275988eeMisha Brukman  OPTIONAL_DIRS := tools/clang/utils/TableGen
32009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattnerelse
33ef5dc7072fb96a66cc744c0fd6550def9e7f7159Misha Brukman  DIRS := lib/Support lib/TableGen utils lib/VMCore lib tools/llvm-shlib \
3493bc3cdd43a7f4e764049d12bd6aad019b834432Reid Spencer          tools/llvm-config tools/llvm-config-2 tools runtime docs unittests
35c6b66ebba9e77ecc766780f4c860ec554f963855Chris Lattner  OPTIONAL_DIRS := projects bindings
36c6b66ebba9e77ecc766780f4c860ec554f963855Chris Lattnerendif
37c6b66ebba9e77ecc766780f4c860ec554f963855Chris Lattner
38c6b66ebba9e77ecc766780f4c860ec554f963855Chris Lattnerifeq ($(BUILD_EXAMPLES),1)
398b2e1419cf24a33df5a87c99e367528b44dc28cfReid Spencer  OPTIONAL_DIRS += examples
40c6b66ebba9e77ecc766780f4c860ec554f963855Chris Lattnerendif
418b2e1419cf24a33df5a87c99e367528b44dc28cfReid Spencer
425720be4138bba4fafb72a0f3034cfe47af40b696Chris LattnerEXTRA_DIST := test unittests llvm.spec include win32 Xcode
438b2e1419cf24a33df5a87c99e367528b44dc28cfReid Spencer
445720be4138bba4fafb72a0f3034cfe47af40b696Chris Lattnerinclude $(LEVEL)/Makefile.config
455720be4138bba4fafb72a0f3034cfe47af40b696Chris Lattner
4622033b2a4e0330b24fd601ef36e36bb1e544bf9dChris Lattnerifneq ($(ENABLE_SHARED),1)
47544f83db6b124d042cdb4eba1c83528056e81f09Nate Begeman  DIRS := $(filter-out tools/llvm-shlib, $(DIRS))
48544f83db6b124d042cdb4eba1c83528056e81f09Nate Begemanendif
49544f83db6b124d042cdb4eba1c83528056e81f09Nate Begeman
50544f83db6b124d042cdb4eba1c83528056e81f09Nate Begemanifneq ($(ENABLE_DOCS),1)
51544f83db6b124d042cdb4eba1c83528056e81f09Nate Begeman  DIRS := $(filter-out docs, $(DIRS))
528b1f7676bddcf099e30b849f511ad5a6a86ea8a0Reid Spencerendif
538b2e1419cf24a33df5a87c99e367528b44dc28cfReid Spencer
545720be4138bba4fafb72a0f3034cfe47af40b696Chris Lattnerifeq ($(MAKECMDGOALS),libs-only)
556a8c2907b0721ce53ad6887be5b10eef50dac060Chris Lattner  DIRS := $(filter-out tools runtime docs, $(DIRS))
5622033b2a4e0330b24fd601ef36e36bb1e544bf9dChris Lattner  OPTIONAL_DIRS :=
57b76ace310ad72f4c540f260ee18eef6674b15f31Mike Stumpendif
58e568f641311883c2a1240e8e50d2e1e2cf04e15fMike Stump
59166c9e244c18d0c4003b80d80cbc5d32ec3e5dbeMike Stumpifeq ($(MAKECMDGOALS),install-libs)
60b76ace310ad72f4c540f260ee18eef6674b15f31Mike Stump  DIRS := $(filter-out tools runtime docs, $(DIRS))
61b76ace310ad72f4c540f260ee18eef6674b15f31Mike Stump  OPTIONAL_DIRS := $(filter bindings, $(OPTIONAL_DIRS))
62b76ace310ad72f4c540f260ee18eef6674b15f31Mike Stumpendif
63b76ace310ad72f4c540f260ee18eef6674b15f31Mike Stump
64b76ace310ad72f4c540f260ee18eef6674b15f31Mike Stumpifeq ($(MAKECMDGOALS),tools-only)
65b76ace310ad72f4c540f260ee18eef6674b15f31Mike Stump  DIRS := $(filter-out runtime docs, $(DIRS))
66b76ace310ad72f4c540f260ee18eef6674b15f31Mike Stump  OPTIONAL_DIRS :=
67b76ace310ad72f4c540f260ee18eef6674b15f31Mike Stumpendif
68b76ace310ad72f4c540f260ee18eef6674b15f31Mike Stump
698fb520eb4f06d4ef771abe9c22d85b2a275988eeMisha Brukmanifeq ($(MAKECMDGOALS),install-clang)
708fb520eb4f06d4ef771abe9c22d85b2a275988eeMisha Brukman  DIRS := tools/clang/tools/driver tools/clang/lib/Headers \
718fb520eb4f06d4ef771abe9c22d85b2a275988eeMisha Brukman          tools/clang/tools/libclang tools/clang/tools/c-index-test \
728fb520eb4f06d4ef771abe9c22d85b2a275988eeMisha Brukman          tools/clang/include/clang-c \
738fb520eb4f06d4ef771abe9c22d85b2a275988eeMisha Brukman          tools/clang/runtime tools/clang/docs \
74c89146587ac8a030b1c63a52bdecd8eedbc87b09Chris Lattner          tools/lto runtime
75c89146587ac8a030b1c63a52bdecd8eedbc87b09Chris Lattner  OPTIONAL_DIRS :=
76122c05571141b695d9683b3fb4ce060e1ea1c009Chris Lattner  NO_INSTALL = 1
778ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenendif
78122c05571141b695d9683b3fb4ce060e1ea1c009Chris Lattner
79122c05571141b695d9683b3fb4ce060e1ea1c009Chris Lattnerifeq ($(MAKECMDGOALS),clang-only)
80569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov  DIRS := $(filter-out tools docs unittests, $(DIRS)) \
81569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov          tools/clang tools/lto
82569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov  OPTIONAL_DIRS :=
83569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikovendif
84569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov
85569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikovifeq ($(MAKECMDGOALS),unittests)
86569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov  DIRS := $(filter-out tools runtime docs, $(DIRS)) utils unittests
87569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov  OPTIONAL_DIRS :=
88569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikovendif
89569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov
90569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov# Use NO_INSTALL define of the Makefile of each directory for deciding
91569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov# if the directory is installed or not
92569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikovifeq ($(MAKECMDGOALS),install)
93569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov  OPTIONAL_DIRS := $(filter bindings, $(OPTIONAL_DIRS))
94569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikovendif
95569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov
96569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov# Don't build unittests when ONLY_TOOLS is set.
9722033b2a4e0330b24fd601ef36e36bb1e544bf9dChris Lattnerifneq ($(ONLY_TOOLS),)
9806a801a38c43716564b3b9fb6c7a04ed242ecb61Reid Spencer  DIRS := $(filter-out unittests, $(DIRS))
9906a801a38c43716564b3b9fb6c7a04ed242ecb61Reid Spencerendif
10045eeed9b359eba3a69fd0911c543feed3d112d15Reid Spencer
10145eeed9b359eba3a69fd0911c543feed3d112d15Reid Spencer# If we're cross-compiling, build the build-hosted tools first
10245eeed9b359eba3a69fd0911c543feed3d112d15Reid Spencerifeq ($(LLVM_CROSS_COMPILING),1)
10345eeed9b359eba3a69fd0911c543feed3d112d15Reid Spencerall:: cross-compile-build-tools
104df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer
105df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencerclean::
106df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	$(Verb) rm -rf BuildTools
107df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer
108df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencercross-compile-build-tools:
109df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	$(Verb) if [ ! -f BuildTools/Makefile ]; then \
110df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer          $(MKDIR) BuildTools; \
111df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	  cd BuildTools ; \
112df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	  unset CFLAGS ; \
113df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	  unset CXXFLAGS ; \
114df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	  $(PROJ_SRC_DIR)/configure --build=$(BUILD_TRIPLE) \
115df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer		--host=$(BUILD_TRIPLE) --target=$(BUILD_TRIPLE) \
116df561f4ab347736cc513ef0483d9049987ac32c9Reid Spencer	        --disable-polly ; \
117151f8ba3645defc371eb4b68427384e411305734Reid Spencer	  cd .. ; \
118cc2d1e25f37d0d00c7f7f3ec562be61bc34e54caReid Spencer	fi; \
119cc2d1e25f37d0d00c7f7f3ec562be61bc34e54caReid Spencer	(unset SDKROOT; \
12043d1fd449f1a0ac9d9dafa0b9569bb6b2e976198Anton Korobeynikov	 $(MAKE) -C BuildTools \
12190c29494121e3a4cefb5cae5d272178bbc49d3a9Reid Spencer	  BUILD_DIRS_ONLY=1 \
12290c29494121e3a4cefb5cae5d272178bbc49d3a9Reid Spencer	  UNIVERSAL= \
12390c29494121e3a4cefb5cae5d272178bbc49d3a9Reid Spencer	  TARGET_NATIVE_ARCH="$(TARGET_NATIVE_ARCH)" \
124151f8ba3645defc371eb4b68427384e411305734Reid Spencer	  TARGETS_TO_BUILD="$(TARGETS_TO_BUILD)" \
125b76ace310ad72f4c540f260ee18eef6674b15f31Mike Stump	  ENABLE_OPTIMIZED=$(ENABLE_OPTIMIZED) \
1269cf662b367795f07ddf2c6deca33839b6581548bChris Lattner	  ENABLE_PROFILING=$(ENABLE_PROFILING) \
1278b1f7676bddcf099e30b849f511ad5a6a86ea8a0Reid Spencer	  ENABLE_COVERAGE=$(ENABLE_COVERAGE) \
128b76ace310ad72f4c540f260ee18eef6674b15f31Mike Stump	  DISABLE_ASSERTIONS=$(DISABLE_ASSERTIONS) \
129544f83db6b124d042cdb4eba1c83528056e81f09Nate Begeman	  ENABLE_EXPENSIVE_CHECKS=$(ENABLE_EXPENSIVE_CHECKS) \
130ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer	  ENABLE_LIBCPP=$(ENABLE_LIBCPP) \
131ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer	  CFLAGS= \
132ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer	  CXXFLAGS= \
133ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer	) || exit 1;
134ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencerendif
135ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer
136ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer# Include the main makefile machinery.
1371555a23335400143f2b54a66aedc4b5cbbb79f8dDouglas Gregorinclude $(LLVM_SRC_ROOT)/Makefile.rules
1381555a23335400143f2b54a66aedc4b5cbbb79f8dDouglas Gregor
139ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer# Specify options to pass to configure script when we're
14043d1fd449f1a0ac9d9dafa0b9569bb6b2e976198Anton Korobeynikov# running the dist-check target
141ca739c685b963b103ae2d201e038ac37e7af4b29Reid SpencerDIST_CHECK_CONFIG_OPTIONS = --with-llvmgccdir=$(LLVMGCCDIR)
142ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer
143ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer.PHONY: debug-opt-prof
144ef5dc7072fb96a66cc744c0fd6550def9e7f7159Misha Brukmandebug-opt-prof:
145ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer	$(Echo) Building Debug Version
146ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer	$(Verb) $(MAKE)
147ca739c685b963b103ae2d201e038ac37e7af4b29Reid Spencer	$(Echo)
148e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencer	$(Echo) Building Optimized Version
14938ab6d887c660c7e2fe08707e8f982ab451fb224Chris Lattner	$(Echo)
15038ab6d887c660c7e2fe08707e8f982ab451fb224Chris Lattner	$(Verb) $(MAKE) ENABLE_OPTIMIZED=1
151569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov	$(Echo)
152ef5dc7072fb96a66cc744c0fd6550def9e7f7159Misha Brukman	$(Echo) Building Profiling Version
153e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencer	$(Echo)
154e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencer	$(Verb) $(MAKE) ENABLE_PROFILING=1
155e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencer
156e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencerdist-hook::
1572ae19553980ac99a8881445623f55cc8f153cce3Gabor Greif	$(Echo) Eliminating files constructed by configure
1582ae19553980ac99a8881445623f55cc8f153cce3Gabor Greif	$(Verb) $(RM) -f \
159e22f3c004a04806dbe45936ab0b5e48e6c5bc016Reid Spencer	  $(TopDistDir)/include/llvm/Config/config.h  \
160569c45cab2354a2ce5e2657f6cd159d8ab84cd5aAnton Korobeynikov	  $(TopDistDir)/include/llvm/Support/DataTypes.h
16138ab6d887c660c7e2fe08707e8f982ab451fb224Chris Lattner
1625b30ee1c13a742f0c1843f867a6f75680c14e894Reid Spencerclang-only: all
16342f98e54d11b40c76e13d852bfb30b6be9719663Reid Spencertools-only: all
1645720be4138bba4fafb72a0f3034cfe47af40b696Chris Lattnerlibs-only: all
1659df5561a952cbfe32aea4e1fbde16655af82efd0Reid Spencerinstall-clang: install
16642f98e54d11b40c76e13d852bfb30b6be9719663Reid Spencerinstall-libs: install
1679df5561a952cbfe32aea4e1fbde16655af82efd0Reid Spencer
168ef5dc7072fb96a66cc744c0fd6550def9e7f7159Misha Brukman# If SHOW_DIAGNOSTICS is enabled, clear the diagnostics file first.
169f7c75a6832d86885db3af408307c42e7f1a1adacReid Spencerifeq ($(SHOW_DIAGNOSTICS),1)
170f7c75a6832d86885db3af408307c42e7f1a1adacReid Spencerclean-diagnostics:
171ef5dc7072fb96a66cc744c0fd6550def9e7f7159Misha Brukman	$(Verb) rm -f $(LLVM_OBJ_ROOT)/$(BuildMode)/diags
172f7c75a6832d86885db3af408307c42e7f1a1adacReid Spencer.PHONY: clean-diagnostics
173f7c75a6832d86885db3af408307c42e7f1a1adacReid Spencer
1741e46ae47b1dfe2d8f59da9cac9cedb52390c50feReid Spencerall-local:: clean-diagnostics
1751e46ae47b1dfe2d8f59da9cac9cedb52390c50feReid Spencerendif
1761e46ae47b1dfe2d8f59da9cac9cedb52390c50feReid Spencer
1771e46ae47b1dfe2d8f59da9cac9cedb52390c50feReid Spencer#------------------------------------------------------------------------
1781e46ae47b1dfe2d8f59da9cac9cedb52390c50feReid Spencer# Make sure the generated headers are up-to-date. This must be kept in
1791e46ae47b1dfe2d8f59da9cac9cedb52390c50feReid Spencer# sync with the AC_CONFIG_HEADER invocations in autoconf/configure.ac
18051cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer#------------------------------------------------------------------------
18151cf6426bf2ec569d843418077af59e7080e7f3eReid SpencerFilesToConfig := \
18251cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer  include/llvm/Config/config.h \
18351cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer  include/llvm/Config/Targets.def \
18451cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer  include/llvm/Config/AsmPrinters.def \
18551cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer  include/llvm/Config/AsmParsers.def \
18651cf6426bf2ec569d843418077af59e7080e7f3eReid Spencer  include/llvm/Config/Disassemblers.def \
1871d7ca713bacb12a356b3b3de0f6a942eb3c085a1Gabor Greif  include/llvm/Support/DataTypes.h
1889fa4226925cbc4d1aa54fc3eaecf95c898713e73Gabor GreifFilesToConfigPATH  := $(addprefix $(LLVM_OBJ_ROOT)/,$(FilesToConfig))
1891d7ca713bacb12a356b3b3de0f6a942eb3c085a1Gabor Greif
190a4a0323f634c792fc21ed4ed415f36b6e8cdfa8bGabor Greifall-local:: $(FilesToConfigPATH)
19195fc7aac600803a6a29e73746f9336e3a7cdf383Gabor Greif$(FilesToConfigPATH) : $(LLVM_OBJ_ROOT)/% : $(LLVM_SRC_ROOT)/%.in
192a4a0323f634c792fc21ed4ed415f36b6e8cdfa8bGabor Greif	$(Echo) Regenerating $*
1931d7ca713bacb12a356b3b3de0f6a942eb3c085a1Gabor Greif	$(Verb) cd $(LLVM_OBJ_ROOT) && $(ConfigStatusScript) $*
1941d7ca713bacb12a356b3b3de0f6a942eb3c085a1Gabor Greif.PRECIOUS: $(FilesToConfigPATH)
1958e0c20bf1b7f507621d765cc7d795362fda639ffGabor Greif
1968e0c20bf1b7f507621d765cc7d795362fda639ffGabor Greif# NOTE: This needs to remain as the last target definition in this file so
1971d7ca713bacb12a356b3b3de0f6a942eb3c085a1Gabor Greif# that it gets executed last.
1984113bd1dc6032f9559fa58c61d5cc7d9a8c079beBill Wendlingifneq ($(BUILD_DIRS_ONLY),1)
1991d7ca713bacb12a356b3b3de0f6a942eb3c085a1Gabor Greifall::
2001d7ca713bacb12a356b3b3de0f6a942eb3c085a1Gabor Greif	$(Echo) '*****' Completed $(BuildMode) Build
20151cf6426bf2ec569d843418077af59e7080e7f3eReid Spencerifneq ($(ENABLE_OPTIMIZED),1)
2022ae19553980ac99a8881445623f55cc8f153cce3Gabor Greif	$(Echo) '*****' Note: Debug build can be 10 times slower than an
2032ae19553980ac99a8881445623f55cc8f153cce3Gabor Greif	$(Echo) '*****' optimized build. Use 'make ENABLE_OPTIMIZED=1' to
2042ae19553980ac99a8881445623f55cc8f153cce3Gabor Greif	$(Echo) '*****' make an optimized build. Alternatively you can
2052ae19553980ac99a8881445623f55cc8f153cce3Gabor Greif	$(Echo) '*****' configure with --enable-optimized.
206ifeq ($(SHOW_DIAGNOSTICS),1)
207	$(Verb) if test -s $(LLVM_OBJ_ROOT)/$(BuildMode)/diags; then \
208	  $(LLVM_SRC_ROOT)/utils/clang-parse-diagnostics-file -a \
209	    $(LLVM_OBJ_ROOT)/$(BuildMode)/diags; \
210	fi
211endif
212endif
213endif
214
215check-llvm2cpp:
216	$(Verb)$(MAKE) check TESTSUITE=Feature RUNLLVM2CPP=1
217
218srpm: $(LLVM_OBJ_ROOT)/llvm.spec
219	rpmbuild -bs $(LLVM_OBJ_ROOT)/llvm.spec
220
221rpm: $(LLVM_OBJ_ROOT)/llvm.spec
222	rpmbuild -bb --target $(TARGET_TRIPLE) $(LLVM_OBJ_ROOT)/llvm.spec
223
224show-footprint:
225	$(Verb) du -sk $(LibDir)
226	$(Verb) du -sk $(ToolDir)
227	$(Verb) du -sk $(ExmplDir)
228	$(Verb) du -sk $(ObjDir)
229
230build-for-llvm-top:
231	$(Verb) if test ! -f ./config.status ; then \
232	  ./configure --prefix="$(LLVM_TOP)/install" \
233	    --with-llvm-gcc="$(LLVM_TOP)/llvm-gcc" ; \
234	fi
235	$(Verb) $(MAKE) tools-only
236
237SVN = svn
238SVN-UPDATE-OPTIONS =
239AWK = awk
240SUB-SVN-DIRS = $(AWK) '/\?\ \ \ \ \ \ / {print $$2}'   \
241		| LC_ALL=C xargs $(SVN) info 2>/dev/null \
242		| $(AWK) '/^Path:\ / {print $$2}'
243
244update:
245	$(SVN) $(SVN-UPDATE-OPTIONS) update $(LLVM_SRC_ROOT)
246	@ $(SVN) status $(LLVM_SRC_ROOT) | $(SUB-SVN-DIRS) | xargs $(SVN) $(SVN-UPDATE-OPTIONS) update
247
248happiness: update all check-all
249
250.PHONY: srpm rpm update happiness
251
252# declare all targets at this level to be serial:
253
254.NOTPARALLEL:
255
256else # Building "Apple-style."
257# In an Apple-style build, once configuration is done, lines marked
258# "Apple-style" are removed with sed!  Please don't remove these!
259# Look for the string "Apple-style" in utils/buildit/build_llvm.
260include $(shell find . -name GNUmakefile) # Building "Apple-style."
261endif # Building "Apple-style."
262