1"""dxsdk 2 3Tool-specific initialization for Microsoft DirectX SDK 4 5""" 6 7# 8# Copyright (c) 2009 VMware, Inc. 9# 10# Permission is hereby granted, free of charge, to any person obtaining 11# a copy of this software and associated documentation files (the 12# "Software"), to deal in the Software without restriction, including 13# without limitation the rights to use, copy, modify, merge, publish, 14# distribute, sublicense, and/or sell copies of the Software, and to 15# permit persons to whom the Software is furnished to do so, subject to 16# the following conditions: 17# 18# The above copyright notice and this permission notice shall be included 19# in all copies or substantial portions of the Software. 20# 21# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY 22# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 23# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 24# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 25# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 26# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 27# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 28# 29 30import os 31import os.path 32 33import SCons.Errors 34import SCons.Util 35 36 37def get_dxsdk_root(env): 38 try: 39 return os.environ['DXSDK_DIR'] 40 except KeyError: 41 return None 42 43def generate(env): 44 dxsdk_root = get_dxsdk_root(env) 45 if dxsdk_root is None: 46 # DirectX SDK not found 47 return 48 49 if env['machine'] in ('generic', 'x86'): 50 target_cpu = 'x86' 51 elif env['machine'] == 'x86_64': 52 target_cpu = 'x64' 53 else: 54 raise SCons.Errors.InternalError, "Unsupported target machine" 55 56 include_dir = os.path.join(dxsdk_root, 'Include') 57 lib_dir = os.path.join(dxsdk_root, 'Lib', target_cpu) 58 59 env.Append(CPPDEFINES = [('HAVE_DXSDK', '1')]) 60 61 gcc = 'gcc' in os.path.basename(env['CC']).split('-') 62 if gcc: 63 # Make GCC more forgiving towards Microsoft's headers 64 env.Prepend(CPPFLAGS = ['-isystem', include_dir]) 65 else: 66 env.Prepend(CPPPATH = [include_dir]) 67 68 env.Prepend(LIBPATH = [lib_dir]) 69 70def exists(env): 71 return get_dxsdk_root(env) is not None 72 73# vim:set ts=4 sw=4 et: 74