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:
|
---|