1 """dxsdk 2 3 Tool-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 30 import os 31 import os.path 32 33 import SCons.Errors 34 import SCons.Util 35 36 37 def get_dxsdk_root(env): 38 try: 39 return os.environ['DXSDK_DIR'] 40 except KeyError: 41 return None 42 43 def 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 70 def exists(env): 71 return get_dxsdk_root(env) is not None 72 73 # vim:set ts=4 sw=4 et: 74