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