Browse Source

added "arch" parameter, made iphone use it to build isim

Ariel Manzur 9 years ago
parent
commit
10c512e46d
2 changed files with 17 additions and 6 deletions
  1. 4 1
      SConstruct
  2. 13 5
      platform/iphone/detect.py

+ 4 - 1
SConstruct

@@ -112,6 +112,7 @@ if profile:
 
 opts=Variables(customs, ARGUMENTS)
 opts.Add('target', 'Compile Target (debug/release_debug/release).', "debug")
+opts.Add('arch', 'Platform dependent architecture (arm/arm64/x86/x64/mips/etc)', "")
 opts.Add('bits', 'Compile Target Bits (default/32/64/fat).', "default")
 opts.Add('platform','Platform: '+str(platform_list)+'.',"")
 opts.Add('p','Platform (same as platform=).',"")
@@ -276,7 +277,9 @@ if selected_platform in platform_list:
 		else:
 			suffix+=".debug"
 
-	if (env["bits"]=="32"):
+	if env["arch"] != "":
+		suffix += "."+env["arch"]
+	elif (env["bits"]=="32"):
 		suffix+=".32"
 	elif (env["bits"]=="64"):
 		suffix+=".64"

+ 13 - 5
platform/iphone/detect.py

@@ -55,16 +55,22 @@ def configure(env):
 	env['RANLIB'] = '$IPHONEPATH/usr/bin/${ios_triple}ranlib'
 
 	import string
-	if (env["ios_sim"]=="yes"): # i386, simulator
+	if (env["ios_sim"]=="yes" or env["arch"] == "x86"): # i386, simulator
+		env["arch"]="x86"
+		env["bits"]="32"
 		env['CCFLAGS'] = string.split('-arch i386 -fobjc-abi-version=2 -fobjc-legacy-dispatch -fmessage-length=0 -fpascal-strings -fasm-blocks  -Wall -D__IPHONE_OS_VERSION_MIN_REQUIRED=40100 -isysroot $IPHONESDK -mios-simulator-version-min=4.3 -DCUSTOM_MATRIX_TRANSFORM_H=\\\"build/iphone/matrix4_iphone.h\\\" -DCUSTOM_VECTOR3_TRANSFORM_H=\\\"build/iphone/vector3_iphone.h\\\"')
-	elif (env["bits"]=="64"): # arm64
+	elif (env["arch"]=="arm64"): # arm64
+		env["bits"] = "64"
 		env['CCFLAGS'] = string.split('-fno-objc-arc -arch arm64 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -fvisibility=hidden -Wno-sign-conversion -MMD -MT dependencies -miphoneos-version-min=5.1.1 -isysroot $IPHONESDK')
 		env.Append(CPPFLAGS=['-DNEED_LONG_INT'])
 		env.Append(CPPFLAGS=['-DLIBYUV_DISABLE_NEON'])
 	else: # armv7
+		env["arch"] = "arm"
+		env["bits"] = "32"
 		env['CCFLAGS'] = string.split('-fno-objc-arc -arch armv7 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -fvisibility=hidden -Wno-sign-conversion -mthumb "-DIBOutlet=__attribute__((iboutlet))" "-DIBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName)))" "-DIBAction=void)__attribute__((ibaction)" -miphoneos-version-min=5.1.1 -MMD -MT dependencies -isysroot $IPHONESDK')
 
-	if (env["ios_sim"]=="yes"):
+	if (env["arch"]=="x86"):
+		env['IPHONEPLATFORM'] = 'iPhoneSimulator'
 		env.Append(LINKFLAGS=['-arch', 'i386', '-mios-simulator-version-min=4.3',
 							'-isysroot', '$IPHONESDK',
 							#'-mmacosx-version-min=10.6',
@@ -85,7 +91,7 @@ def configure(env):
 							'-framework', 'SystemConfiguration',
 							'-F$IPHONESDK',
 							])
-	elif (env["bits"]=="64"):
+	elif (env["arch"]=="arm64"):
 		env.Append(LINKFLAGS=['-arch', 'arm64', '-Wl,-dead_strip', '-miphoneos-version-min=5.1.1',
 							'-isysroot', '$IPHONESDK',
 							#'-stdlib=libc++',
@@ -161,7 +167,9 @@ def configure(env):
 
 	if(env["opus"]=="yes"):
 		env.opus_fixed_point="yes"
-		if(env["bits"]=="64"):
+		if env["arch"]=="x86":
+			pass
+		elif(env["arch"]=="arm64"):
 			env.Append(CFLAGS=["-DOPUS_ARM64_OPT"])
 		else:
 			env.Append(CFLAGS=["-DOPUS_ARM_OPT"])