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() 18eb1780238621c7be0342d9129eb639e4892c004dVinson Leeif host_platform.startswith('cygwin'): 19eb1780238621c7be0342d9129eb639e4892c004dVinson Lee host_platform = 'cygwin' 209409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 21601498ae73e654c2de997ea75075613a694d604dJosé Fonseca# Search sys.argv[] for a "platform=foo" argument since we don't have 22601498ae73e654c2de997ea75075613a694d604dJosé Fonseca# an 'env' variable at this point. 23601498ae73e654c2de997ea75075613a694d604dJosé Fonsecaif 'platform' in SCons.Script.ARGUMENTS: 24e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca target_platform = SCons.Script.ARGUMENTS['platform'] 25601498ae73e654c2de997ea75075613a694d604dJosé Fonsecaelse: 26e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca target_platform = host_platform 27601498ae73e654c2de997ea75075613a694d604dJosé Fonseca 289409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca_machine_map = { 299409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 'x86': 'x86', 309409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 'i386': 'x86', 319409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 'i486': 'x86', 329409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 'i586': 'x86', 339409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 'i686': 'x86', 345481b5adcf47366ddc641f893e2fa79624cf68caAlexander von Gluck IV 'BePC': 'x86', 355481b5adcf47366ddc641f893e2fa79624cf68caAlexander von Gluck IV 'Intel': 'x86', 366b69e3c71741d99a54c6f4dcb605a3c241239aebMichel Dänzer 'ppc' : 'ppc', 375481b5adcf47366ddc641f893e2fa79624cf68caAlexander von Gluck IV 'BeBox': 'ppc', 385481b5adcf47366ddc641f893e2fa79624cf68caAlexander von Gluck IV 'BeMac': 'ppc', 3933d8ff9c317eeb1300bc8e189d7b9c00b352323aJosé Fonseca 'AMD64': 'x86_64', 409409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 'x86_64': 'x86_64', 415481b5adcf47366ddc641f893e2fa79624cf68caAlexander von Gluck IV 'sparc': 'sparc', 425481b5adcf47366ddc641f893e2fa79624cf68caAlexander von Gluck IV 'sun4u': 'sparc', 439409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca} 446ca6189e099a56028f052077be9cb51f09a834a1Brian Paul 456ca6189e099a56028f052077be9cb51f09a834a1Brian Paul 46e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca# find host_machine value 479409043c58bbcac37b439032fc61aff2a0b0d543José Fonsecaif 'PROCESSOR_ARCHITECTURE' in os.environ: 48e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca host_machine = os.environ['PROCESSOR_ARCHITECTURE'] 499409043c58bbcac37b439032fc61aff2a0b0d543José Fonsecaelse: 50e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca host_machine = _platform.machine() 51e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonsecahost_machine = _machine_map.get(host_machine, 'generic') 52e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca 53e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonsecadefault_machine = host_machine 54601498ae73e654c2de997ea75075613a694d604dJosé Fonsecadefault_toolchain = 'default' 55601498ae73e654c2de997ea75075613a694d604dJosé Fonseca 56ae760279f142244590c8aa76e3139529ca42952fJosé Fonsecaif target_platform == 'windows' and host_platform != 'windows': 57601498ae73e654c2de997ea75075613a694d604dJosé Fonseca default_machine = 'x86' 58601498ae73e654c2de997ea75075613a694d604dJosé Fonseca default_toolchain = 'crossmingw' 599409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 606ca6189e099a56028f052077be9cb51f09a834a1Brian Paul 616ca6189e099a56028f052077be9cb51f09a834a1Brian Paul# find default_llvm value 62cd4e5879ebd4fe71c5e95d83cdf4a2ebd2fd1e06José Fonsecaif 'LLVM' in os.environ: 63ea532f0e725bd68e7784189c9b7f6f7bf7f9d901José Fonseca default_llvm = 'yes' 64ea532f0e725bd68e7784189c9b7f6f7bf7f9d901José Fonsecaelse: 65ea532f0e725bd68e7784189c9b7f6f7bf7f9d901José Fonseca default_llvm = 'no' 66cd4e5879ebd4fe71c5e95d83cdf4a2ebd2fd1e06José Fonseca try: 67e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca if target_platform != 'windows' and \ 68601498ae73e654c2de997ea75075613a694d604dJosé Fonseca subprocess.call(['llvm-config', '--version'], stdout=subprocess.PIPE) == 0: 69cd4e5879ebd4fe71c5e95d83cdf4a2ebd2fd1e06José Fonseca default_llvm = 'yes' 70cd4e5879ebd4fe71c5e95d83cdf4a2ebd2fd1e06José Fonseca except: 71cd4e5879ebd4fe71c5e95d83cdf4a2ebd2fd1e06José Fonseca pass 72ea532f0e725bd68e7784189c9b7f6f7bf7f9d901José Fonseca 736ca6189e099a56028f052077be9cb51f09a834a1Brian Paul 749409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca####################################################################### 759409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca# Common options 769409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca 7713174c195e057f443b23df788ea0c10251942189José Fonsecadef AddOptions(opts): 78c9acd439b1af4b037ded324139664cf9832930f8José Fonseca try: 79c9acd439b1af4b037ded324139664cf9832930f8José Fonseca from SCons.Variables.BoolVariable import BoolVariable as BoolOption 80c9acd439b1af4b037ded324139664cf9832930f8José Fonseca except ImportError: 810d0417cc75c3f7047a783c42a76bf378d8ab1397José Fonseca from SCons.Options.BoolOption import BoolOption 820d0417cc75c3f7047a783c42a76bf378d8ab1397José Fonseca try: 83c9acd439b1af4b037ded324139664cf9832930f8José Fonseca from SCons.Variables.EnumVariable import EnumVariable as EnumOption 840d0417cc75c3f7047a783c42a76bf378d8ab1397José Fonseca except ImportError: 850d0417cc75c3f7047a783c42a76bf378d8ab1397José Fonseca from SCons.Options.EnumOption import EnumOption 8667450f0644f61fc17ab1315124dfe50537d36e9eJosé Fonseca opts.Add(EnumOption('build', 'build type', 'debug', 8767450f0644f61fc17ab1315124dfe50537d36e9eJosé Fonseca allowed_values=('debug', 'checked', 'profile', 'release'))) 88c7bd0fa4851187c3102948f5f4d70c26d1b55a5eJosé Fonseca opts.Add(BoolOption('verbose', 'verbose output', 'no')) 899409043c58bbcac37b439032fc61aff2a0b0d543José Fonseca opts.Add(EnumOption('machine', 'use machine-specific assembly code', default_machine, 906b69e3c71741d99a54c6f4dcb605a3c241239aebMichel Dänzer allowed_values=('generic', 'ppc', 'x86', 'x86_64'))) 91e1bc68b0140fef465cda26b74602aeb1cbcfdafcJosé Fonseca opts.Add(EnumOption('platform', 'target platform', host_platform, 925cf693266faebd1fc130709fd7e7b2452bbd156cVinson Lee allowed_values=('cygwin', 'darwin', 'freebsd', 'haiku', 'linux', 'sunos', 'windows'))) 9341750107496858a047afa8d81d20fe903f285a78José Fonseca opts.Add(BoolOption('embedded', 'embedded build', 'no')) 94601498ae73e654c2de997ea75075613a694d604dJosé Fonseca opts.Add('toolchain', 'compiler toolchain', default_toolchain) 95bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu opts.Add(BoolOption('gles', 'EXPERIMENTAL: enable OpenGL ES support', 'no')) 96ea532f0e725bd68e7784189c9b7f6f7bf7f9d901José Fonseca opts.Add(BoolOption('llvm', 'use LLVM', default_llvm)) 97e411cd7b0a54d2f9b9f4cda4918aa7742ed5c2a6Andreas Fänger opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)', 'no')) 9867450f0644f61fc17ab1315124dfe50537d36e9eJosé Fonseca opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes')) 9967450f0644f61fc17ab1315124dfe50537d36e9eJosé Fonseca opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no')) 1002699fce0d69db5158427c8b6c8194b2eefc5e58bJosé Fonseca opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes')) 1013d6892c4793ae1fd1ef82d40e4af8004393b0480Vinson Lee opts.Add(BoolOption('texture_float', 'enable floating-point textures and renderbuffers', 'no')) 102c9be435c79e2bbc883701c5533ae0490780495beJosé Fonseca if host_platform == 'windows': 103c9be435c79e2bbc883701c5533ae0490780495beJosé Fonseca opts.Add(EnumOption('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0'))) 104