172aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca"""dxsdk 272aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca 372aed16aee3149fa1740641435a528ce1510dabbJosé FonsecaTool-specific initialization for Microsoft DirectX SDK 472aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca 572aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca""" 672aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca 772aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# 872aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# Copyright (c) 2009 VMware, Inc. 972aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# 1072aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# Permission is hereby granted, free of charge, to any person obtaining 1172aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# a copy of this software and associated documentation files (the 1272aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# "Software"), to deal in the Software without restriction, including 1372aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# without limitation the rights to use, copy, modify, merge, publish, 1472aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# distribute, sublicense, and/or sell copies of the Software, and to 1572aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# permit persons to whom the Software is furnished to do so, subject to 1672aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# the following conditions: 1772aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# 1872aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# The above copyright notice and this permission notice shall be included 1972aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# in all copies or substantial portions of the Software. 2072aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# 2172aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY 2272aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 2372aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 2472aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 2572aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 2672aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 2772aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2872aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# 2972aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca 3072aed16aee3149fa1740641435a528ce1510dabbJosé Fonsecaimport os 3172aed16aee3149fa1740641435a528ce1510dabbJosé Fonsecaimport os.path 3272aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca 3372aed16aee3149fa1740641435a528ce1510dabbJosé Fonsecaimport SCons.Errors 3472aed16aee3149fa1740641435a528ce1510dabbJosé Fonsecaimport SCons.Util 3572aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca 3672aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca 3772aed16aee3149fa1740641435a528ce1510dabbJosé Fonsecadef get_dxsdk_root(env): 3872aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca try: 3972aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca return os.environ['DXSDK_DIR'] 4072aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca except KeyError: 4172aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca return None 4272aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca 439a5ee124347d3f75be2e957142143338dd96abe3José Fonsecadef generate(env): 4472aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca dxsdk_root = get_dxsdk_root(env) 4572aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca if dxsdk_root is None: 469a5ee124347d3f75be2e957142143338dd96abe3José Fonseca # DirectX SDK not found 479a5ee124347d3f75be2e957142143338dd96abe3José Fonseca return 4872aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca 4972aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca if env['machine'] in ('generic', 'x86'): 5072aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca target_cpu = 'x86' 5172aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca elif env['machine'] == 'x86_64': 5272aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca target_cpu = 'x64' 5372aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca else: 5472aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca raise SCons.Errors.InternalError, "Unsupported target machine" 55a4a4553a80e62f0d339d18a91c0ce699b0e196d4José Fonseca 56a4a4553a80e62f0d339d18a91c0ce699b0e196d4José Fonseca include_dir = os.path.join(dxsdk_root, 'Include') 57a4a4553a80e62f0d339d18a91c0ce699b0e196d4José Fonseca lib_dir = os.path.join(dxsdk_root, 'Lib', target_cpu) 5872aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca 5972aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca env.Append(CPPDEFINES = [('HAVE_DXSDK', '1')]) 60a4a4553a80e62f0d339d18a91c0ce699b0e196d4José Fonseca 61a4a4553a80e62f0d339d18a91c0ce699b0e196d4José Fonseca gcc = 'gcc' in os.path.basename(env['CC']).split('-') 62a4a4553a80e62f0d339d18a91c0ce699b0e196d4José Fonseca if gcc: 63a4a4553a80e62f0d339d18a91c0ce699b0e196d4José Fonseca # Make GCC more forgiving towards Microsoft's headers 64a4a4553a80e62f0d339d18a91c0ce699b0e196d4José Fonseca env.Prepend(CPPFLAGS = ['-isystem', include_dir]) 65a4a4553a80e62f0d339d18a91c0ce699b0e196d4José Fonseca else: 66a4a4553a80e62f0d339d18a91c0ce699b0e196d4José Fonseca env.Prepend(CPPPATH = [include_dir]) 67a4a4553a80e62f0d339d18a91c0ce699b0e196d4José Fonseca 68a4a4553a80e62f0d339d18a91c0ce699b0e196d4José Fonseca env.Prepend(LIBPATH = [lib_dir]) 6972aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca 7072aed16aee3149fa1740641435a528ce1510dabbJosé Fonsecadef exists(env): 7172aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca return get_dxsdk_root(env) is not None 7272aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca 7372aed16aee3149fa1740641435a528ce1510dabbJosé Fonseca# vim:set ts=4 sw=4 et: 74