import os, re SConscriptChdir(0) env = Environment( ENV = os.environ, CCFLAGS = [ '-Wall', '-W', '-Wno-unused-parameter', '-Werror', '-g', '-O2']) #print env['PLATFORM'] def arch_env(env, arch, sdk, target): arch_env = env.Copy() arch_env.Replace(ARCH = arch) arch_env.Append( CCFLAGS = [ '-arch', arch, '-isysroot', sdk_path(sdk)]) arch_env.Append( ENV = { 'MACOSX_DEPLOYMENT_TARGET': target }) return arch_env def build_once(env, sconscript): return SConscript( sconscript, exports = 'env', build_dir = 'Build/' + env['ARCH'], duplicate = 0) def os_name(number): return '10.%d' % number SDK_NAMES = { 1 : '10.1.5', 2 : '10.2.8', 3 : '10.3.9', 4 : '10.4u', } def sdk_for(version): try: name = SDK_NAMES[version] except KeyError: name = os_name(version) return name MIN_OSES = [ ('ppc', 1), ('i386', 4), ('ppc64', 5), ('x86_64', 5), ] def sdk_path(name): return '/Developer/SDKs/MacOSX' + name + '.sdk' def have_sdk(name): try: os.stat(sdk_path(name)) return True except OSError: return False def build(os_version, sconscript): version = ord(os_version[-1]) - ord('0') products = [] for arch, min_version in MIN_OSES: arch_version = max(version, min_version) sdk = sdk_for(arch_version) target = os_name(arch_version) if have_sdk(sdk): products += build_once(arch_env(env, arch, sdk, target), sconscript) env.Command( target = os.path.basename(str(products[0])), source = products, action = 'lipo $SOURCES -create -output $TARGET') build('10.3', 'SConscript')