From 2e672f5eaadc7512adbac3fc57bd5e7c72029970 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Mon, 16 Aug 2010 23:22:33 +0200
Subject: Cleaning up the SConstruct a bit more.


diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct
index ac28ec9..f8eda83 100644
--- a/BuildTools/SCons/SConstruct
+++ b/BuildTools/SCons/SConstruct
@@ -146,47 +146,42 @@ env["DIST"] = "dist" in ARGUMENTS or env.GetOption("clean")
 if ARGUMENTS.get("SWIFT_INSTALLDIR", "") :
 	env["SWIFT_INSTALLDIR"] = Dir(ARGUMENTS["SWIFT_INSTALLDIR"]).abspath
 
-# cross-compiling
+
+################################################################################
+# XCode / iPhone / ...
+################################################################################
+
 target = env["target"]
-if target == "xcode" :
-	m = re.match(".*/iPhoneOS(.*)\.sdk", os.environ["SDKROOT"])
-	if m :
-		target = "iphone-device"
-		sdkVer = m.group(1)
+if target in ["iphone-device", "iphone-simulator", "xcode"] :
+	# Extract/initialize all the information we need
+	if target == "xcode" :
+		# Get the information from the XCode environment
+		env["XCODE_PLATFORM_DEVELOPER_BIN_DIR"] = os.environ["PLATFORM_DEVELOPER_BIN_DIR"]
+		env["XCODE_SDKROOT"] = os.environ["SDKROOT"]
+		env["XCODE_ARCH_FLAGS"] = sum([["-arch", arch] for arch in os.environ["ARCHS"].split(" ")], [])
 	else :
-		print "Matching simulator " + os.environ["SDKROOT"]
-		m = re.match(".*/iPhoneSimulator(.*)\.sdk", os.environ["SDKROOT"])
-		if m :
-			print "YAY"
-			target = "iphone-simulator"
-			sdkVer = m.group(1)
-else :
-	sdkVer = "4.0"
-if target in ("iphone-device", "iphone-simulator"):
-	if target == "iphone-device":
-		sdkPart = "iPhoneOS"
-	else :
-		sdkPart = "iPhoneSimulator"
-	sdk = "/Developer/Platforms/" + sdkPart + ".platform/Developer/SDKs/" + sdkPart + sdkVer + ".sdk"
-
-	if target == "iphone-device":
-		sdkPart = "iPhoneOS"
-		env["CC"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1"
-		env["CXX"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-g++-4.2.1"
-		env["PATH"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/"
-		env["LD"] = env["CC"]
-		env.Append(CPPPATH = [sdk + "/usr/include/c++/4.2.1/armv7-apple-darwin10"])
-		env.Append(CPPDEFINES = ["_LITTLE_ENDIAN"])
-		targetIncludesArch = "arm"
-	if target == "iphone-simulator":
-		env.Append(CCFLAGS = ["-arch", "i386"])
-		env.Append(LINKFLAGS = ["-arch", "i386"])
-		targetIncludesArch = "i686"
-
+		# Hard code values
+		env["XCODE_PLATFORM_DEVELOPER_BIN_DIR"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin"
+		if target == "iphone-device":
+			env["XCODE_ARCHFLAGS"] = ["-arch", "armv6"]
+			sdkPart = "iPhoneOS"
+		else :
+			env["XCODE_ARCHFLAGS"] = ["-arch", "i386"]
+			sdkPart = "iPhoneSimulator"
+		sdkVer = "4.0"
+		env["XCODE_SDKROOT"] = "/Developer/Platforms/" + sdkPart + ".platform/Developer/SDKs/" + sdkPart + sdkVer + ".sdk"
+
+	# Set the build flags
+	env["CC"] = "$XCODE_PLATFORM_DEVELOPER_BIN_DIR/gcc"
+	env["CXX"] = "$XCODE_PLATFORM_DEVELOPER_BIN_DIR/g++"
+	env["LD"] = env["CC"]
+	env.Append(CCFLAGS = env["XCODE_ARCH_FLAGS"])
+	env.Append(LINKFLAGS = env["XCODE_ARCH_FLAGS"])
+	env.Append(CPPFLAGS = ["-isysroot", "$XCODE_SDKROOT"])
 	env.Append(FRAMEWORKS = ["CoreFoundation", "Foundation", "UIKit", "CoreGraphics"])
-	env.Append(LINKFLAGS = ["-L\"" + sdk + "/usr/lib\"", "-F\"" + sdk + "/System/Library/Frameworks\"", "-F\"" + sdk + "/System/Library/PrivateFrameworks\""])
-	env.Append(CPPFLAGS = ["-isysroot", sdk])
-
+	env.Append(LINKFLAGS = ["-L\"$XCODE_SDKROOT/usr/lib\"", "-F\"$XCODE_SDKROOT/System/Library/Frameworks\"", "-F\"$XCODE_SDKROOT/System/Library/PrivateFrameworks\""])
+	# Bit of a hack, because BOOST doesn't know the endianness for ARM
+	env.Append(CPPDEFINES = ["_LITTLE_ENDIAN"]) 
 
 conf_env = env.Clone()
 
@@ -397,7 +392,7 @@ if use_openssl and openssl_conf.CheckCHeader("openssl/ssl.h") :
 		env["OPENSSL_FLAGS"]["LIBS"] = ["libeay32MT", "ssleay32MT"]
 	else:
 		env["OPENSSL_FLAGS"]["LIBS"] = ["ssl", "crypto"]
-elif target in ("iphone-device", "iphone-simulator") :
+elif target in ("iphone-device", "iphone-simulator", "xcode") :
 	env["OPENSSL_BUNDLED"] = True
 	env["HAVE_OPENSSL"] = True
 else :
-- 
cgit v0.10.2-6-g49f6