Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5564 | serge | 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: |