| José Fonseca | 72aed16 | 2009-06-26 19:51:57 +0100 | [diff] [blame] | 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 |  | 
| José Fonseca | 9a5ee12 | 2009-06-29 12:56:47 +0100 | [diff] [blame] | 43 | def generate(env): | 
| José Fonseca | 72aed16 | 2009-06-26 19:51:57 +0100 | [diff] [blame] | 44 |     dxsdk_root = get_dxsdk_root(env) | 
 | 45 |     if dxsdk_root is None: | 
| José Fonseca | 9a5ee12 | 2009-06-29 12:56:47 +0100 | [diff] [blame] | 46 |         # DirectX SDK not found | 
 | 47 |         return | 
| José Fonseca | 72aed16 | 2009-06-26 19:51:57 +0100 | [diff] [blame] | 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" | 
| José Fonseca | a4a4553 | 2009-09-01 10:11:08 +0100 | [diff] [blame] | 55 |  | 
 | 56 |     include_dir = os.path.join(dxsdk_root, 'Include') | 
 | 57 |     lib_dir = os.path.join(dxsdk_root, 'Lib', target_cpu) | 
| José Fonseca | 72aed16 | 2009-06-26 19:51:57 +0100 | [diff] [blame] | 58 |  | 
 | 59 |     env.Append(CPPDEFINES = [('HAVE_DXSDK', '1')]) | 
| José Fonseca | a4a4553 | 2009-09-01 10:11:08 +0100 | [diff] [blame] | 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]) | 
| José Fonseca | 72aed16 | 2009-06-26 19:51:57 +0100 | [diff] [blame] | 69 |  | 
| José Fonseca | 72aed16 | 2009-06-26 19:51:57 +0100 | [diff] [blame] | 70 | def exists(env): | 
 | 71 |     return get_dxsdk_root(env) is not None | 
 | 72 |  | 
 | 73 | # vim:set ts=4 sw=4 et: |