1*4882a593Smuzhiyunpython3 = import('python3') 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun# XWin requires OpenGL spec files in order to generate wrapper code for native GL functions 4*4882a593Smuzhiyunpy3 = python3.find_python() 5*4882a593Smuzhiyunif run_command(py3, '-c', 'import lxml;').returncode() != 0 6*4882a593Smuzhiyun error('python3 lxml module not found') 7*4882a593Smuzhiyunendif 8*4882a593Smuzhiyun 9*4882a593Smuzhiyunkhronos_spec_dir = dependency('khronos-opengl-registry').get_pkgconfig_variable('specdir') 10*4882a593Smuzhiyun 11*4882a593Smuzhiyungen_gl_wrappers_opts= ['-nodebug'] 12*4882a593Smuzhiyungen_gl_wrappers_cmd = ['env', 'PYTHONPATH=' + khronos_spec_dir, py3, files('./gen_gl_wrappers.py'), gen_gl_wrappers_opts] 13*4882a593Smuzhiyun 14*4882a593Smuzhiyunwgl_wrappers = custom_target( 15*4882a593Smuzhiyun 'gen_wgl_wrappers', 16*4882a593Smuzhiyun command: [gen_gl_wrappers_cmd, '-registry', '@INPUT@', '-prefix', 'wgl', '-wrapper', '-preresolve', '-outfile', '@OUTPUT@'], 17*4882a593Smuzhiyun input: join_paths(khronos_spec_dir, 'wgl.xml'), 18*4882a593Smuzhiyun output: 'generated_wgl_wrappers.ic', 19*4882a593Smuzhiyun depend_files: join_paths(khronos_spec_dir, 'reg.py'), 20*4882a593Smuzhiyun) 21*4882a593Smuzhiyun 22*4882a593Smuzhiyungl_shim = custom_target( 23*4882a593Smuzhiyun 'gen_gl_shim', 24*4882a593Smuzhiyun command: [gen_gl_wrappers_cmd, '-registry', '@INPUT@', '-shim', '-outfile', '@OUTPUT@'], 25*4882a593Smuzhiyun input: join_paths(khronos_spec_dir, 'gl.xml'), 26*4882a593Smuzhiyun output: 'generated_gl_shim.ic', 27*4882a593Smuzhiyun depend_files: join_paths(khronos_spec_dir, 'reg.py'), 28*4882a593Smuzhiyun) 29*4882a593Smuzhiyun 30*4882a593Smuzhiyungl_thunks = custom_target( 31*4882a593Smuzhiyun 'gen_gl_thunks', 32*4882a593Smuzhiyun command: [gen_gl_wrappers_cmd, '-registry', '@INPUT@', '-thunk', '-outfile', '@OUTPUT@'], 33*4882a593Smuzhiyun input: join_paths(khronos_spec_dir, 'gl.xml'), 34*4882a593Smuzhiyun output: 'generated_gl_thunks.ic', 35*4882a593Smuzhiyun depend_files: join_paths(khronos_spec_dir, 'reg.py'), 36*4882a593Smuzhiyun) 37*4882a593Smuzhiyun 38*4882a593Smuzhiyungl_thunks_def = custom_target( 39*4882a593Smuzhiyun 'gen_gl_thunks_def', 40*4882a593Smuzhiyun command: [gen_gl_wrappers_cmd, '-registry', '@INPUT@', '-thunkdefs', '-outfile', '@OUTPUT@'], 41*4882a593Smuzhiyun input: join_paths(khronos_spec_dir, 'gl.xml'), 42*4882a593Smuzhiyun output: 'generated_gl_thunks.def', 43*4882a593Smuzhiyun depend_files: join_paths(khronos_spec_dir, 'reg.py'), 44*4882a593Smuzhiyun) 45*4882a593Smuzhiyun 46*4882a593Smuzhiyunsrcs_windows_glx = [ 47*4882a593Smuzhiyun 'winpriv.c', 48*4882a593Smuzhiyun 'winpriv.h', 49*4882a593Smuzhiyun 'glwindows.h', 50*4882a593Smuzhiyun 'glshim.c', 51*4882a593Smuzhiyun gl_shim, 52*4882a593Smuzhiyun 'indirect.c', 53*4882a593Smuzhiyun 'indirect.h', 54*4882a593Smuzhiyun 'wgl_ext_api.c', 55*4882a593Smuzhiyun wgl_wrappers, 56*4882a593Smuzhiyun 'wgl_ext_api.h', 57*4882a593Smuzhiyun] 58*4882a593Smuzhiyun 59*4882a593Smuzhiyunif build_windowsdri 60*4882a593Smuzhiyun srcs_windows_glx += [ 61*4882a593Smuzhiyun 'dri_helpers.c', 62*4882a593Smuzhiyun 'dri_helpers.h', 63*4882a593Smuzhiyun ] 64*4882a593Smuzhiyunendif 65*4882a593Smuzhiyun 66*4882a593Smuzhiyunxwin_glx_c_args = [] 67*4882a593Smuzhiyunxwin_glx_c_args += '-DHAVE_XWIN_CONFIG_H' 68*4882a593Smuzhiyunxwin_glx_c_args += '-DXWIN_GLX_WINDOWS' 69*4882a593Smuzhiyun 70*4882a593Smuzhiyunxwin_glx = static_library( 71*4882a593Smuzhiyun 'XwinGLX', 72*4882a593Smuzhiyun srcs_windows_glx, 73*4882a593Smuzhiyun include_directories: [ 74*4882a593Smuzhiyun inc, 75*4882a593Smuzhiyun top_srcdir_inc, 76*4882a593Smuzhiyun include_directories('../'), 77*4882a593Smuzhiyun ], 78*4882a593Smuzhiyun dependencies: common_dep, 79*4882a593Smuzhiyun c_args: xwin_glx_c_args, 80*4882a593Smuzhiyun) 81*4882a593Smuzhiyun 82*4882a593Smuzhiyunsrcs_wgl_thunk = [ 83*4882a593Smuzhiyun 'glthunk.c', 84*4882a593Smuzhiyun gl_thunks, 85*4882a593Smuzhiyun] 86*4882a593Smuzhiyun 87*4882a593SmuzhiyunWGLthunk = shared_library( 88*4882a593Smuzhiyun 'nativeGLthunk', 89*4882a593Smuzhiyun srcs_wgl_thunk, 90*4882a593Smuzhiyun include_directories: [ 91*4882a593Smuzhiyun inc, 92*4882a593Smuzhiyun top_srcdir_inc, 93*4882a593Smuzhiyun ], 94*4882a593Smuzhiyun c_args: xwin_glx_c_args + [ 95*4882a593Smuzhiyun '-Wno-unused-function', 96*4882a593Smuzhiyun '-Wno-missing-prototypes', 97*4882a593Smuzhiyun '-Wno-missing-declarations', 98*4882a593Smuzhiyun ], 99*4882a593Smuzhiyun link_args: ['-lopengl32'], 100*4882a593Smuzhiyun vs_module_defs: gl_thunks_def, 101*4882a593Smuzhiyun install: true, 102*4882a593Smuzhiyun) 103