1848b8605Smrg#######################################################################
2848b8605Smrg# SConscript for glapi
3848b8605Smrg
4848b8605Smrg
5848b8605Smrgfrom sys import executable as python_cmd
6848b8605Smrg
7848b8605SmrgImport('*')
8848b8605Smrg
9848b8605Smrgenv = env.Clone()
10848b8605Smrg
11b8e80941Smrgenv.MSVC2013Compat()
12b8e80941Smrg
13848b8605Smrgenv.Append(CPPDEFINES = [
14848b8605Smrg    'MAPI_MODE_UTIL',
15848b8605Smrg])
16848b8605Smrg
17848b8605Smrgif env['platform'] == 'windows':
18848b8605Smrg    env.Append(CPPDEFINES = [
19848b8605Smrg        '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers
20848b8605Smrg        'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
21b8e80941Smrg        'KHRONOS_DLL_EXPORTS', # declare gl* as __declspec(dllexport) in Khronos headers
22b8e80941Smrg        '_GLAPI_NO_EXPORTS', # prevent _glapi_* from being declared __declspec(dllimport)
23848b8605Smrg    ])
24848b8605Smrg
25848b8605Smrgenv.Append(CPPPATH = [
26b8e80941Smrg    '#/src',
27848b8605Smrg    '#/src/mapi',
28848b8605Smrg    '#/src/mesa',
29b8e80941Smrg    Dir('.'), # src/mapi/glapi build path
30848b8605Smrg    Dir('..'), # src/mapi build path
31848b8605Smrg])
32848b8605Smrg
33848b8605Smrgglapi_sources = [
34848b8605Smrg    'glapi_dispatch.c',
35848b8605Smrg    'glapi_entrypoint.c',
36848b8605Smrg    'glapi_getproc.c',
37848b8605Smrg    'glapi_nop.c',
38848b8605Smrg    'glapi.c',
39848b8605Smrg]
40848b8605Smrg
41848b8605Smrgmapi_sources = [
42848b8605Smrg    'u_current.c',
43848b8605Smrg    'u_execmem.c',
44848b8605Smrg]
45848b8605Smrgfor s in mapi_sources:
46848b8605Smrg    o = env.SharedObject(s[:-2], '../' + s)
47848b8605Smrg    glapi_sources.append(o)
48848b8605Smrg
49848b8605Smrg#
50848b8605Smrg# Assembly sources
51848b8605Smrg#
52b8e80941Smrgif env['platform'] not in ('cygwin', 'darwin', 'windows'):
53848b8605Smrg    GLAPI = '#src/mapi/glapi/'
54848b8605Smrg    sources = [GLAPI + 'gen/gl_and_es_API.xml'] + env.Glob(GLAPI + 'gen/*.xml')
55848b8605Smrg
56848b8605Smrg    if env['machine'] == 'x86':
57848b8605Smrg        env.Append(CPPDEFINES = [
58848b8605Smrg            'USE_X86_ASM',
59848b8605Smrg        ])
60848b8605Smrg        glapi_sources += [
61848b8605Smrg            'glapi_x86.S',
62848b8605Smrg        ]
63848b8605Smrg        env.CodeGenerate(
64848b8605Smrg            target = 'glapi_x86.S',
65848b8605Smrg            script = GLAPI + 'gen/gl_x86_asm.py',
66848b8605Smrg            source = sources,
67848b8605Smrg            command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET'
68848b8605Smrg            )
69848b8605Smrg    elif env['machine'] == 'x86_64':
70848b8605Smrg        env.Append(CPPDEFINES = [
71848b8605Smrg            'USE_X86_64_ASM',
72848b8605Smrg        ])
73848b8605Smrg        glapi_sources += [
74848b8605Smrg            'glapi_x86-64.S'
75848b8605Smrg        ]
76848b8605Smrg        env.CodeGenerate(
77848b8605Smrg            target = 'glapi_x86-64.S',
78848b8605Smrg            script = GLAPI + 'gen/gl_x86-64_asm.py',
79848b8605Smrg            source = sources,
80848b8605Smrg            command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET'
81848b8605Smrg            )
82848b8605Smrg    elif env['machine'] == 'sparc':
83848b8605Smrg        env.Append(CPPDEFINES = [
84848b8605Smrg            'USE_SPARC_ASM',
85848b8605Smrg        ])
86848b8605Smrg        glapi_sources += [
87848b8605Smrg            'glapi_sparc.S'
88848b8605Smrg        ]
89848b8605Smrg        env.CodeGenerate(
90848b8605Smrg            target = 'glapi_sparc.S',
91848b8605Smrg            script = GLAPI + 'gen/gl_SPARC_asm.py',
92848b8605Smrg            source = sources,
93848b8605Smrg            command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET'
94848b8605Smrg            )
95848b8605Smrg    else:
96848b8605Smrg        pass
97848b8605Smrg
98848b8605Smrgglapi = env.ConvenienceLibrary(
99848b8605Smrg    target = 'glapi',
100848b8605Smrg    source = glapi_sources,
101848b8605Smrg)
102848b8605SmrgExport('glapi')
103