common.py revision 33d8ff9c317eeb1300bc8e189d7b9c00b352323a
19409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca####################################################################### 29409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca# Common SCons code 39409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 49409043c58bbcac37b439032fc61aff2a0b0d543José Fonsecaimport os 59409043c58bbcac37b439032fc61aff2a0b0d543José Fonsecaimport os.path 65c682485b872537277951a1f6418d97d211a2651Brian Paulimport re 7ea532f0e725bd68e7784189c9b7f6f7bf7f9d901José Fonsecaimport subprocess 89409043c58bbcac37b439032fc61aff2a0b0d543José Fonsecaimport sys 99409043c58bbcac37b439032fc61aff2a0b0d543José Fonsecaimport platform as _platform 109409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 11601498ae73e654c2de997ea75075613a694d604dJosé Fonsecaimport SCons.Script.SConscript 12601498ae73e654c2de997ea75075613a694d604dJosé Fonseca 139409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 149409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca####################################################################### 159409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca# Defaults 169409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 17ae760279f142244590c8aa76e3139529ca42952fJosé Fonsecahost_platform = _platform.system().lower() 189409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 19601498ae73e654c2de997ea75075613a694d604dJosé Fonseca# Search sys.argv[] for a "platform=foo" argument since we don't have 20601498ae73e654c2de997ea75075613a694d604dJosé Fonseca# an 'env' variable at this point. 21601498ae73e654c2de997ea75075613a694d604dJosé Fonsecaif 'platform' in SCons.Script.ARGUMENTS: 22e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca target_platform = SCons.Script.ARGUMENTS['platform'] 23601498ae73e654c2de997ea75075613a694d604dJosé Fonsecaelse: 24e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca target_platform = host_platform 25601498ae73e654c2de997ea75075613a694d604dJosé Fonseca 269409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca_machine_map = { 279409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 'x86': 'x86', 289409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 'i386': 'x86', 299409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 'i486': 'x86', 309409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 'i586': 'x86', 319409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 'i686': 'x86', 326b69e3c71741d99a54c6f4dcb605a3c241239aebMichel Dänzer 'ppc' : 'ppc', 3333d8ff9c317eeb1300bc8e189d7b9c00b352323aJosé Fonseca 'AMD64': 'x86_64', 349409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 'x86_64': 'x86_64', 359409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca} 366ca6189e099a56028f052077be9cb51f09a834a1Brian Paul 376ca6189e099a56028f052077be9cb51f09a834a1Brian Paul 38e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca# find host_machine value 399409043c58bbcac37b439032fc61aff2a0b0d543José Fonsecaif 'PROCESSOR_ARCHITECTURE' in os.environ: 40e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca host_machine = os.environ['PROCESSOR_ARCHITECTURE'] 419409043c58bbcac37b439032fc61aff2a0b0d543José Fonsecaelse: 42e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca host_machine = _platform.machine() 43e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonsecahost_machine = _machine_map.get(host_machine, 'generic') 44e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca 45e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonsecadefault_machine = host_machine 46601498ae73e654c2de997ea75075613a694d604dJosé Fonsecadefault_toolchain = 'default' 47601498ae73e654c2de997ea75075613a694d604dJosé Fonseca 48ae760279f142244590c8aa76e3139529ca42952fJosé Fonsecaif target_platform == 'windows' and host_platform != 'windows': 49601498ae73e654c2de997ea75075613a694d604dJosé Fonseca default_machine = 'x86' 50601498ae73e654c2de997ea75075613a694d604dJosé Fonseca default_toolchain = 'crossmingw' 519409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 526ca6189e099a56028f052077be9cb51f09a834a1Brian Paul 536ca6189e099a56028f052077be9cb51f09a834a1Brian Paul# find default_llvm value 54cd4e5879ebd4fe71c5e95d83cdf4a2ebd2fd1e06José Fonsecaif 'LLVM' in os.environ: 55ea532f0e725bd68e7784189c9b7f6f7bf7f9d901José Fonseca default_llvm = 'yes' 56ea532f0e725bd68e7784189c9b7f6f7bf7f9d901José Fonsecaelse: 57ea532f0e725bd68e7784189c9b7f6f7bf7f9d901José Fonseca default_llvm = 'no' 58cd4e5879ebd4fe71c5e95d83cdf4a2ebd2fd1e06José Fonseca try: 59e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca if target_platform != 'windows' and \ 60601498ae73e654c2de997ea75075613a694d604dJosé Fonseca subprocess.call(['llvm-config', '--version'], stdout=subprocess.PIPE) == 0: 61cd4e5879ebd4fe71c5e95d83cdf4a2ebd2fd1e06José Fonseca default_llvm = 'yes' 62cd4e5879ebd4fe71c5e95d83cdf4a2ebd2fd1e06José Fonseca except: 63cd4e5879ebd4fe71c5e95d83cdf4a2ebd2fd1e06José Fonseca pass 64ea532f0e725bd68e7784189c9b7f6f7bf7f9d901José Fonseca 656ca6189e099a56028f052077be9cb51f09a834a1Brian Paul 669409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca####################################################################### 679409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca# Common options 689409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 6913174c195e057f443b23df788ea0c10251942189José Fonsecadef AddOptions(opts): 70c9acd439b1af4b037ded324139664cf9832930f8José Fonseca try: 71c9acd439b1af4b037ded324139664cf9832930f8José Fonseca from SCons.Variables.BoolVariable import BoolVariable as BoolOption 72c9acd439b1af4b037ded324139664cf9832930f8José Fonseca except ImportError: 730d0417cc75c3f7047a783c42a76bf378d8ab1397José Fonseca from SCons.Options.BoolOption import BoolOption 740d0417cc75c3f7047a783c42a76bf378d8ab1397José Fonseca try: 75c9acd439b1af4b037ded324139664cf9832930f8José Fonseca from SCons.Variables.EnumVariable import EnumVariable as EnumOption 760d0417cc75c3f7047a783c42a76bf378d8ab1397José Fonseca except ImportError: 770d0417cc75c3f7047a783c42a76bf378d8ab1397José Fonseca from SCons.Options.EnumOption import EnumOption 7867450f0644f61fc17ab1315124dfe50537d36e9eJosé Fonseca opts.Add(EnumOption('build', 'build type', 'debug', 7967450f0644f61fc17ab1315124dfe50537d36e9eJosé Fonseca allowed_values=('debug', 'checked', 'profile', 'release'))) 800f50c4fab8acfe291ddd426f331eea5eec66ba13José Fonseca opts.Add(BoolOption('quiet', 'quiet command lines', 'yes')) 819409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca opts.Add(EnumOption('machine', 'use machine-specific assembly code', default_machine, 826b69e3c71741d99a54c6f4dcb605a3c241239aebMichel Dänzer allowed_values=('generic', 'ppc', 'x86', 'x86_64'))) 83e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca opts.Add(EnumOption('platform', 'target platform', host_platform, 844a859cd12fa47811c9f4d3773bb5e3506f89f2b4Vinson Lee allowed_values=('linux', 'cell', 'windows', 'winddk', 'wince', 'darwin', 'embedded', 'cygwin', 'sunos5', 'freebsd8'))) 85601498ae73e654c2de997ea75075613a694d604dJosé Fonseca opts.Add('toolchain', 'compiler toolchain', default_toolchain) 86bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu opts.Add(BoolOption('gles', 'EXPERIMENTAL: enable OpenGL ES support', 'no')) 87ea532f0e725bd68e7784189c9b7f6f7bf7f9d901José Fonseca opts.Add(BoolOption('llvm', 'use LLVM', default_llvm)) 8867450f0644f61fc17ab1315124dfe50537d36e9eJosé Fonseca opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes')) 8967450f0644f61fc17ab1315124dfe50537d36e9eJosé Fonseca opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no')) 90792caebced5f8f6dbd7bf23aa8d94230aa786d00José Fonseca opts.Add(EnumOption('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0'))) 91