1#######################################################################
2# SConscript for glapi
3
4
5from sys import executable as python_cmd
6
7Import('*')
8
9env = env.Clone()
10
11env.MSVC2013Compat()
12
13env.Append(CPPDEFINES = [
14    'MAPI_MODE_UTIL',
15])
16
17if env['platform'] == 'windows':
18    env.Append(CPPDEFINES = [
19        '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers
20        'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
21        'KHRONOS_DLL_EXPORTS', # declare gl* as __declspec(dllexport) in Khronos headers
22        '_GLAPI_NO_EXPORTS', # prevent _glapi_* from being declared __declspec(dllimport)
23    ])
24
25env.Append(CPPPATH = [
26    '#/src',
27    '#/src/mapi',
28    '#/src/mesa',
29    Dir('.'), # src/mapi/glapi build path
30    Dir('gen'), # src/mapi/glapi/gen build path
31])
32
33glapi_sources = [
34    'glapi_dispatch.c',
35    'glapi_entrypoint.c',
36    'glapi_getproc.c',
37    'glapi_nop.c',
38    'glapi.c',
39]
40
41mapi_sources = [
42    'u_current.c',
43    'u_execmem.c',
44]
45for s in mapi_sources:
46    o = env.SharedObject(s[:-2], '../' + s)
47    glapi_sources.append(o)
48
49#
50# Assembly sources
51#
52if env['platform'] not in ('cygwin', 'darwin', 'windows'):
53    GLAPI = '#src/mapi/glapi/'
54    sources = [GLAPI + 'gen/gl_and_es_API.xml'] + env.Glob(GLAPI + 'gen/*.xml')
55
56    if env['machine'] == 'x86':
57        env.Append(CPPDEFINES = [
58            'USE_X86_ASM',
59        ])
60        glapi_sources += [
61            'glapi_x86.S',
62        ]
63        env.CodeGenerate(
64            target = 'glapi_x86.S',
65            script = GLAPI + 'gen/gl_x86_asm.py',
66            source = sources,
67            command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET'
68            )
69    elif env['machine'] == 'x86_64':
70        env.Append(CPPDEFINES = [
71            'USE_X86_64_ASM',
72        ])
73        glapi_sources += [
74            'glapi_x86-64.S'
75        ]
76        env.CodeGenerate(
77            target = 'glapi_x86-64.S',
78            script = GLAPI + 'gen/gl_x86-64_asm.py',
79            source = sources,
80            command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET'
81            )
82    elif env['machine'] == 'sparc':
83        env.Append(CPPDEFINES = [
84            'USE_SPARC_ASM',
85        ])
86        glapi_sources += [
87            'glapi_sparc.S'
88        ]
89        env.CodeGenerate(
90            target = 'glapi_sparc.S',
91            script = GLAPI + 'gen/gl_SPARC_asm.py',
92            source = sources,
93            command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET'
94            )
95    else:
96        pass
97
98glapi = env.ConvenienceLibrary(
99    target = 'glapi',
100    source = glapi_sources,
101)
102Export('glapi')
103