1bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu####################################################################### 2bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu# SConscript for shared-glapi/es1api/es2api 3bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 4bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wufrom sys import executable as python_cmd 5bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 6bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I WuImport('*') 7bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 8bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wudef mapi_objects(env, printer, mode): 9bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu """Return mapi objects built for the given printer and mode.""" 10bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu mapi_sources = { 111d1033926dc8deb6e22b918889ec4be65637e4bfJosé Fonseca 'glapi': [ 121d1033926dc8deb6e22b918889ec4be65637e4bfJosé Fonseca 'entry.c', 131d1033926dc8deb6e22b918889ec4be65637e4bfJosé Fonseca 'mapi_glapi.c', 141d1033926dc8deb6e22b918889ec4be65637e4bfJosé Fonseca 'stub.c', 151d1033926dc8deb6e22b918889ec4be65637e4bfJosé Fonseca 'table.c', 161d1033926dc8deb6e22b918889ec4be65637e4bfJosé Fonseca 'u_current.c', 171d1033926dc8deb6e22b918889ec4be65637e4bfJosé Fonseca 'u_execmem.c', 181d1033926dc8deb6e22b918889ec4be65637e4bfJosé Fonseca ], 19bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 'bridge': ['entry.c'], 20bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu } 21bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu mapi_defines = { 22bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 'glapi': ['MAPI_MODE_GLAPI'], 23bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 'bridge': ['MAPI_MODE_BRIDGE'], 24bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu } 25bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 26bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu header_name = '%s-tmp.h' % (printer) 27bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 28bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu # generate ABI header 29bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu header = env.CodeGenerate( 30bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu target = header_name, 31bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu script = '../mapi/mapi_abi.py', 32bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu source = '../glapi/gen/gl_and_es_API.xml', 33bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu command = python_cmd + ' $SCRIPT ' + \ 34bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu '--printer %s --mode lib $SOURCE > $TARGET' % (printer), 35bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu ) 36bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 37bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu cpppath = [ 38bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu header[0].dir, 39bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu '#/include', 40bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu '#/src/mapi', 41bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu ] 42bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 43bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu cppdefines = mapi_defines[mode] + [ 44bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 'MAPI_ABI_HEADER=\\"%s\\"' % (header_name), 45bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu ] 46bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 47bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu if env['platform'] == 'windows': 48bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu if mode == 'glapi': 49bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu cppdefines += [ 50bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu '_GLAPI_DLL_EXPORTS', # declare _glapi_* as __declspec(dllexport) in glapi.h 51bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu ] 52bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu else: 53bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu cppdefines += [ 54bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers 55bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers 56bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu ] 57bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 58bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu objects = [] 59bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu for s in mapi_sources[mode]: 60bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu o = env.SharedObject( 61bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu target = '%s-%s' % (printer, s[:-2]), 62bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu source = '../mapi/' + s, 63bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu CPPPATH = cpppath, 64bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu CPPDEFINES = cppdefines, 65bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu ) 66bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu objects.append(o[0]) 67bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 68bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu env.Depends(objects, header) 69bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 70bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu return objects 71bb770af3a59e5935c108c05ee45490fc5668d4a3Chia-I Wu 7210b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaenv = env.Clone() 7310b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca 7410b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaenv['SHLIBPREFIX'] = 'lib' 7510b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaenv['LIBPREFIX'] = 'lib' 7610b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca 7710b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecashared_glapi_objects = mapi_objects(env, 'shared-glapi', 'glapi') 7810b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecashared_glapi = env.SharedLibrary( 7910b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca target = 'glapi', 8010b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca source = shared_glapi_objects, 8110b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca) 8210b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca 8310b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca# manually add LIBPREFIX on windows 8410b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaif env['platform'] == 'windows': 8510b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca libs = ['libglapi'] 8610b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaelse: 8710b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca libs = ['glapi'] 8810b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca 8910b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaes1api_objects = mapi_objects(env, 'es1api', 'bridge') 9010b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaes1api = env.SharedLibrary( 9110b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca target = 'GLESv1_CM', 9210b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca source = es1api_objects, 9310b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca LIBPATH = ['.'], 9410b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca LIBS = libs, 9510b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca) 9610b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca 9710b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaes2api_objects = mapi_objects(env, 'es2api', 'bridge') 9810b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaes2api = env.SharedLibrary( 9910b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca target = 'GLESv2', 10010b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca source = es2api_objects, 10110b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca LIBPATH = ['.'], 10210b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca LIBS = libs, 10310b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca) 10410b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca 10510b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaenv.InstallSharedLibrary(shared_glapi, version=(0, 0, 0)) 10610b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaenv.InstallSharedLibrary(es1api, version=(1, 0, 0)) 10710b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaenv.InstallSharedLibrary(es2api, version=(2, 0, 0)) 10810b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca 10910b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaif env['platform'] == 'windows': 11010b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca shared_glapi = env.FindIxes(shared_glapi, 'LIBPREFIX', 'LIBSUFFIX') 11110b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecaelse: 11210b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca shared_glapi = env.FindIxes(shared_glapi, 'SHLIBPREFIX', 'SHLIBSUFFIX') 11310b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca 11410b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca# build glapi bridge as a convenience libarary for libgl-xlib/libgl-gdi 11510b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecabridge_glapi_objects = mapi_objects(env, 'glapi', 'bridge') 11610b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonsecabridge_glapi = env.ConvenienceLibrary( 11710b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca target = 'glapi_bridge', 11810b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca source = bridge_glapi_objects, 11910b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca) 12010b07665be5cff9fa9f03b0f7db459f3b380570dJosé Fonseca 12110b07665be5cff9fa9f03b0f7db459f3b380570dJosé FonsecaExport(['shared_glapi', 'bridge_glapi']) 122