16902e84ba0f7e35500e09149816353d41305be2eBill Wendling# LLVM LOCAL file build machinery
26902e84ba0f7e35500e09149816353d41305be2eBill Wendling# LLVM Compiler Makefile for use by buildit.  
36902e84ba0f7e35500e09149816353d41305be2eBill Wendling#
46902e84ba0f7e35500e09149816353d41305be2eBill Wendling# This makefile is intended only for use with B&I buildit. For "normal" builds
56902e84ba0f7e35500e09149816353d41305be2eBill Wendling# use the conventional top-level makefile.
66902e84ba0f7e35500e09149816353d41305be2eBill Wendling#
76902e84ba0f7e35500e09149816353d41305be2eBill Wendling# You can specify TARGETS=ppc (or i386) on the buildit command line to limit the
86902e84ba0f7e35500e09149816353d41305be2eBill Wendling# build to just one target. The default is for ppc and i386. The compiler
97a2bdde0a0eebcd2125055e0eacaca040f0b766cChris Lattner# targeted at this host gets built anyway, but not installed unless it's listed
106902e84ba0f7e35500e09149816353d41305be2eBill Wendling# in TARGETS.
116902e84ba0f7e35500e09149816353d41305be2eBill Wendling
126902e84ba0f7e35500e09149816353d41305be2eBill Wendling# Include the set of standard Apple makefile definitions.
136902e84ba0f7e35500e09149816353d41305be2eBill Wendlingifndef CoreOSMakefiles
146902e84ba0f7e35500e09149816353d41305be2eBill WendlingCoreOSMakefiles = $(MAKEFILEPATH)/CoreOS
156902e84ba0f7e35500e09149816353d41305be2eBill Wendlingendif
166902e84ba0f7e35500e09149816353d41305be2eBill Wendlinginclude $(CoreOSMakefiles)/Standard/Standard.make
176902e84ba0f7e35500e09149816353d41305be2eBill Wendling
186902e84ba0f7e35500e09149816353d41305be2eBill Wendling# Enable Apple extensions to (gnu)make.
196902e84ba0f7e35500e09149816353d41305be2eBill WendlingUSE_APPLE_PB_SUPPORT = all
206902e84ba0f7e35500e09149816353d41305be2eBill Wendling
216902e84ba0f7e35500e09149816353d41305be2eBill WendlingRC_ARCHS := ppc i386
226902e84ba0f7e35500e09149816353d41305be2eBill WendlingHOSTS = $(RC_ARCHS)
236902e84ba0f7e35500e09149816353d41305be2eBill Wendlingtargets = echo $(RC_ARCHS)
246902e84ba0f7e35500e09149816353d41305be2eBill WendlingTARGETS := $(shell $(targets))
256902e84ba0f7e35500e09149816353d41305be2eBill Wendling
266902e84ba0f7e35500e09149816353d41305be2eBill WendlingSRCROOT = .
276902e84ba0f7e35500e09149816353d41305be2eBill Wendling
286902e84ba0f7e35500e09149816353d41305be2eBill WendlingSRC = $(shell cd $(SRCROOT) && pwd | sed s,/private,,)
296902e84ba0f7e35500e09149816353d41305be2eBill WendlingOBJROOT = $(SRC)/obj
306902e84ba0f7e35500e09149816353d41305be2eBill WendlingSYMROOT = $(OBJROOT)/../sym
316902e84ba0f7e35500e09149816353d41305be2eBill WendlingDSTROOT = $(OBJROOT)/../dst
326902e84ba0f7e35500e09149816353d41305be2eBill Wendling
336902e84ba0f7e35500e09149816353d41305be2eBill Wendling#######################################################################
346902e84ba0f7e35500e09149816353d41305be2eBill Wendling
359712f8460de12a08e8261b794af9811f5892970cBob WilsonPREFIX = /usr/local
366902e84ba0f7e35500e09149816353d41305be2eBill Wendling
3730174be37a97b8fbc395e92b5895fb8a89cc8c4eBill Wendling# Unless assertions are forced on in the GMAKE command line, disable them.
38ee6c04e24575da8c684584eb7ec3726f9f3240ffStuart Hastingsifndef ENABLE_ASSERTIONS
39fbe8eab37e554efb07f8034a975e8a55c7dd15eaBill WendlingENABLE_ASSERTIONS := no
406902e84ba0f7e35500e09149816353d41305be2eBill Wendlingendif
416902e84ba0f7e35500e09149816353d41305be2eBill Wendling
42b4eae999f6064291ef1069a5d5e219189cc902a4Evan Cheng# Default is optimized build.
43b4eae999f6064291ef1069a5d5e219189cc902a4Evan Chengifeq ($(LLVM_DEBUG),1)
44b4eae999f6064291ef1069a5d5e219189cc902a4Evan ChengLLVM_OPTIMIZED := no
45b4eae999f6064291ef1069a5d5e219189cc902a4Evan Chengelse
46b4eae999f6064291ef1069a5d5e219189cc902a4Evan ChengLLVM_OPTIMIZED := yes
47b4eae999f6064291ef1069a5d5e219189cc902a4Evan Chengendif
48b4eae999f6064291ef1069a5d5e219189cc902a4Evan Cheng
49273e48b53b0a44629eb90b2c5f029adbb4c20f77Bob Wilson# Default to do a native build, not a cross-build for an ARM host or simulator.
507d2552135d2240f95d94c4f252274f4f863a3f5dBob WilsonARM_HOSTED_BUILD := no
51273e48b53b0a44629eb90b2c5f029adbb4c20f77Bob WilsonIOS_SIM_BUILD := no
527d2552135d2240f95d94c4f252274f4f863a3f5dBob Wilson
536902e84ba0f7e35500e09149816353d41305be2eBill Wendlingifndef RC_ProjectSourceVersion
546902e84ba0f7e35500e09149816353d41305be2eBill WendlingRC_ProjectSourceVersion = 9999
556902e84ba0f7e35500e09149816353d41305be2eBill Wendlingendif
566902e84ba0f7e35500e09149816353d41305be2eBill Wendling
576902e84ba0f7e35500e09149816353d41305be2eBill Wendlingifndef RC_ProjectSourceSubversion
58ddb84f5c97c25e201fd53172e0f0551d30ec4f04Nick KledzikRC_ProjectSourceSubversion = 0
596902e84ba0f7e35500e09149816353d41305be2eBill Wendlingendif
606902e84ba0f7e35500e09149816353d41305be2eBill Wendling
61c60141ba4345b1c8db0f518380ca84d9797eb1d9Devang Patel# NOTE : Always put version numbers at the end because they are optional.
626902e84ba0f7e35500e09149816353d41305be2eBill Wendlinginstall: $(OBJROOT) $(SYMROOT) $(DSTROOT)
636902e84ba0f7e35500e09149816353d41305be2eBill Wendling	cd $(OBJROOT) && \
644a53e1ef9d137af590425f77f02a4e974f370656Stuart Hastings	  $(SRC)/utils/buildit/build_llvm "$(RC_ARCHS)" "$(TARGETS)" \
65598f4abdf4a194aec95a9a35f0dcabbb90103d38Bob Wilson	    $(SRC) $(PREFIX) $(DSTROOT) $(SYMROOT) \
66d13af63df7ce87440547e9149fe55337c700328eBob Wilson	    $(ENABLE_ASSERTIONS) $(LLVM_OPTIMIZED) \
67273e48b53b0a44629eb90b2c5f029adbb4c20f77Bob Wilson	    $(ARM_HOSTED_BUILD) $(IOS_SIM_BUILD) \
68598f4abdf4a194aec95a9a35f0dcabbb90103d38Bob Wilson	    $(RC_ProjectSourceVersion) $(RC_ProjectSourceSubversion) 
696902e84ba0f7e35500e09149816353d41305be2eBill Wendling
707d2552135d2240f95d94c4f252274f4f863a3f5dBob WilsonEmbeddedHosted:
710ab754b25ae3fb1a9ebd09585c70084f9400f69dBob Wilson	$(MAKE) ARM_HOSTED_BUILD=yes PREFIX=/usr/local install
727d2552135d2240f95d94c4f252274f4f863a3f5dBob Wilson
73273e48b53b0a44629eb90b2c5f029adbb4c20f77Bob Wilson# When building for the iOS simulator, MACOSX_DEPLOYMENT_TARGET is not set
74273e48b53b0a44629eb90b2c5f029adbb4c20f77Bob Wilson# by default, but it needs to be set when building tools that run on the host
75273e48b53b0a44629eb90b2c5f029adbb4c20f77Bob Wilson# (e.g., tblgen), so set it here.
76273e48b53b0a44629eb90b2c5f029adbb4c20f77Bob WilsonEmbeddedSim:
77273e48b53b0a44629eb90b2c5f029adbb4c20f77Bob Wilson	export MACOSX_DEPLOYMENT_TARGET=`sw_vers -productVersion`; \
780ab754b25ae3fb1a9ebd09585c70084f9400f69dBob Wilson	$(MAKE) IOS_SIM_BUILD=yes PREFIX=$(SDKROOT)/usr/local install
79273e48b53b0a44629eb90b2c5f029adbb4c20f77Bob Wilson
80005c51ddc713591a8f461f55f8c844e680a65a90Bob WilsonEmbedded:
81005c51ddc713591a8f461f55f8c844e680a65a90Bob Wilson	ARM_PLATFORM=`xcodebuild -version -sdk iphoneos PlatformPath` && \
82a348fecf2fab7bf075b1dfcd02dfa36d16df7659Bob Wilson	$(MAKE) DSTROOT=$(DSTROOT)$$ARM_PLATFORM/Developer install
83005c51ddc713591a8f461f55f8c844e680a65a90Bob Wilson
846902e84ba0f7e35500e09149816353d41305be2eBill Wendling# installhdrs does nothing, because the headers aren't useful until
856902e84ba0f7e35500e09149816353d41305be2eBill Wendling# the compiler is installed.
866902e84ba0f7e35500e09149816353d41305be2eBill Wendlinginstallhdrs:
876902e84ba0f7e35500e09149816353d41305be2eBill Wendling
886902e84ba0f7e35500e09149816353d41305be2eBill Wendling# We build and install in one shell script.
896902e84ba0f7e35500e09149816353d41305be2eBill Wendlingbuild: 
906902e84ba0f7e35500e09149816353d41305be2eBill Wendling
916902e84ba0f7e35500e09149816353d41305be2eBill Wendlinginstallsrc:
926902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@echo
936902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@echo ++++++++++++++++++++++
946902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@echo + Installing sources +
956902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@echo ++++++++++++++++++++++
966902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@echo
976902e84ba0f7e35500e09149816353d41305be2eBill Wendling	if [ $(SRCROOT) != . ]; then \
986902e84ba0f7e35500e09149816353d41305be2eBill Wendling	  $(PAX) -rw . $(SRCROOT); \
996902e84ba0f7e35500e09149816353d41305be2eBill Wendling	fi
1006902e84ba0f7e35500e09149816353d41305be2eBill Wendling	find -d "$(SRCROOT)" \( -type d -a -name .svn -o \
1016902e84ba0f7e35500e09149816353d41305be2eBill Wendling	                        -type f -a -name .DS_Store -o \
1026902e84ba0f7e35500e09149816353d41305be2eBill Wendling				-name \*~ -o -name .\#\* \) \
1036902e84ba0f7e35500e09149816353d41305be2eBill Wendling	  -exec rm -rf {} \;
1048464f072350d7f8fc12180f0f2071fe2d08c928dBill Wendling	rm -rf "$(SRCROOT)/test"
1056902e84ba0f7e35500e09149816353d41305be2eBill Wendling
1066902e84ba0f7e35500e09149816353d41305be2eBill Wendling#######################################################################
1076902e84ba0f7e35500e09149816353d41305be2eBill Wendling
1086902e84ba0f7e35500e09149816353d41305be2eBill Wendlingclean:
1096902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@echo
1106902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@echo ++++++++++++
1116902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@echo + Cleaning +
1126902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@echo ++++++++++++
1136902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@echo
1146902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@if [ -d $(OBJROOT) -a "$(OBJROOT)" != / ]; then \
1156902e84ba0f7e35500e09149816353d41305be2eBill Wendling	  echo '*** DELETING ' $(OBJROOT); \
1166902e84ba0f7e35500e09149816353d41305be2eBill Wendling	  rm -rf $(OBJROOT); \
1176902e84ba0f7e35500e09149816353d41305be2eBill Wendling	fi
1186902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@if [ -d $(SYMROOT) -a "$(SYMROOT)" != / ]; then \
1196902e84ba0f7e35500e09149816353d41305be2eBill Wendling	  echo '*** DELETING ' $(SYMROOT); \
1206902e84ba0f7e35500e09149816353d41305be2eBill Wendling	  rm -rf $(SYMROOT); \
1216902e84ba0f7e35500e09149816353d41305be2eBill Wendling	fi
1226902e84ba0f7e35500e09149816353d41305be2eBill Wendling	@if [ -d $(DSTROOT) -a "$(DSTROOT)" != / ]; then \
1236902e84ba0f7e35500e09149816353d41305be2eBill Wendling	  echo '*** DELETING ' $(DSTROOT); \
1246902e84ba0f7e35500e09149816353d41305be2eBill Wendling	  rm -rf $(DSTROOT); \
1256902e84ba0f7e35500e09149816353d41305be2eBill Wendling	fi
1266902e84ba0f7e35500e09149816353d41305be2eBill Wendling
1276902e84ba0f7e35500e09149816353d41305be2eBill Wendling#######################################################################
1286902e84ba0f7e35500e09149816353d41305be2eBill Wendling
1296902e84ba0f7e35500e09149816353d41305be2eBill Wendling$(OBJROOT) $(SYMROOT) $(DSTROOT):
1306902e84ba0f7e35500e09149816353d41305be2eBill Wendling	mkdir -p $@
1316902e84ba0f7e35500e09149816353d41305be2eBill Wendling
132005c51ddc713591a8f461f55f8c844e680a65a90Bob Wilson.PHONY: install installsrc clean EmbeddedHosted EmbeddedSim Embedded
133