11b5d61b8Smrgpython3 = import('python3') 21b5d61b8Smrg 31b5d61b8Smrg# XWin requires OpenGL spec files in order to generate wrapper code for native GL functions 41b5d61b8Smrgpy3 = python3.find_python() 51b5d61b8Smrgif run_command(py3, '-c', 'import lxml;').returncode() != 0 61b5d61b8Smrg error('python3 lxml module not found') 71b5d61b8Smrgendif 81b5d61b8Smrg 91b5d61b8Smrgkhronos_spec_dir = dependency('khronos-opengl-registry').get_pkgconfig_variable('specdir') 101b5d61b8Smrg 111b5d61b8Smrggen_gl_wrappers_opts= ['-nodebug'] 121b5d61b8Smrggen_gl_wrappers_cmd = ['env', 'PYTHONPATH=' + khronos_spec_dir, py3, files('./gen_gl_wrappers.py'), gen_gl_wrappers_opts] 131b5d61b8Smrg 141b5d61b8Smrgwgl_wrappers = custom_target( 151b5d61b8Smrg 'gen_wgl_wrappers', 161b5d61b8Smrg command: [gen_gl_wrappers_cmd, '-registry', '@INPUT@', '-prefix', 'wgl', '-wrapper', '-preresolve', '-outfile', '@OUTPUT@'], 171b5d61b8Smrg input: join_paths(khronos_spec_dir, 'wgl.xml'), 181b5d61b8Smrg output: 'generated_wgl_wrappers.ic', 191b5d61b8Smrg depend_files: join_paths(khronos_spec_dir, 'reg.py'), 201b5d61b8Smrg) 211b5d61b8Smrg 221b5d61b8Smrggl_shim = custom_target( 231b5d61b8Smrg 'gen_gl_shim', 241b5d61b8Smrg command: [gen_gl_wrappers_cmd, '-registry', '@INPUT@', '-shim', '-outfile', '@OUTPUT@'], 251b5d61b8Smrg input: join_paths(khronos_spec_dir, 'gl.xml'), 261b5d61b8Smrg output: 'generated_gl_shim.ic', 271b5d61b8Smrg depend_files: join_paths(khronos_spec_dir, 'reg.py'), 281b5d61b8Smrg) 291b5d61b8Smrg 301b5d61b8Smrggl_thunks = custom_target( 311b5d61b8Smrg 'gen_gl_thunks', 321b5d61b8Smrg command: [gen_gl_wrappers_cmd, '-registry', '@INPUT@', '-thunk', '-outfile', '@OUTPUT@'], 331b5d61b8Smrg input: join_paths(khronos_spec_dir, 'gl.xml'), 341b5d61b8Smrg output: 'generated_gl_thunks.ic', 351b5d61b8Smrg depend_files: join_paths(khronos_spec_dir, 'reg.py'), 361b5d61b8Smrg) 371b5d61b8Smrg 381b5d61b8Smrggl_thunks_def = custom_target( 391b5d61b8Smrg 'gen_gl_thunks_def', 401b5d61b8Smrg command: [gen_gl_wrappers_cmd, '-registry', '@INPUT@', '-thunkdefs', '-outfile', '@OUTPUT@'], 411b5d61b8Smrg input: join_paths(khronos_spec_dir, 'gl.xml'), 421b5d61b8Smrg output: 'generated_gl_thunks.def', 431b5d61b8Smrg depend_files: join_paths(khronos_spec_dir, 'reg.py'), 441b5d61b8Smrg) 451b5d61b8Smrg 461b5d61b8Smrgsrcs_windows_glx = [ 471b5d61b8Smrg 'winpriv.c', 481b5d61b8Smrg 'winpriv.h', 491b5d61b8Smrg 'glwindows.h', 501b5d61b8Smrg 'glshim.c', 511b5d61b8Smrg gl_shim, 521b5d61b8Smrg 'indirect.c', 531b5d61b8Smrg 'indirect.h', 541b5d61b8Smrg 'wgl_ext_api.c', 551b5d61b8Smrg wgl_wrappers, 561b5d61b8Smrg 'wgl_ext_api.h', 571b5d61b8Smrg] 581b5d61b8Smrg 591b5d61b8Smrgif build_windowsdri 601b5d61b8Smrg srcs_windows_glx += [ 611b5d61b8Smrg 'dri_helpers.c', 621b5d61b8Smrg 'dri_helpers.h', 631b5d61b8Smrg ] 641b5d61b8Smrgendif 651b5d61b8Smrg 661b5d61b8Smrgxwin_glx_c_args = [] 671b5d61b8Smrgxwin_glx_c_args += '-DHAVE_XWIN_CONFIG_H' 681b5d61b8Smrgxwin_glx_c_args += '-DXWIN_GLX_WINDOWS' 691b5d61b8Smrg 701b5d61b8Smrgxwin_glx = static_library( 711b5d61b8Smrg 'XwinGLX', 721b5d61b8Smrg srcs_windows_glx, 731b5d61b8Smrg include_directories: [ 741b5d61b8Smrg inc, 75ed6184dfSmrg top_dir_inc, 761b5d61b8Smrg include_directories('../'), 771b5d61b8Smrg ], 781b5d61b8Smrg dependencies: common_dep, 791b5d61b8Smrg c_args: xwin_glx_c_args, 801b5d61b8Smrg) 811b5d61b8Smrg 821b5d61b8Smrgsrcs_wgl_thunk = [ 831b5d61b8Smrg 'glthunk.c', 841b5d61b8Smrg gl_thunks, 851b5d61b8Smrg] 861b5d61b8Smrg 871b5d61b8SmrgWGLthunk = shared_library( 881b5d61b8Smrg 'nativeGLthunk', 891b5d61b8Smrg srcs_wgl_thunk, 901b5d61b8Smrg include_directories: [ 911b5d61b8Smrg inc, 92ed6184dfSmrg top_dir_inc, 931b5d61b8Smrg ], 941b5d61b8Smrg c_args: xwin_glx_c_args + [ 951b5d61b8Smrg '-Wno-unused-function', 961b5d61b8Smrg '-Wno-missing-prototypes', 971b5d61b8Smrg '-Wno-missing-declarations', 981b5d61b8Smrg ], 991b5d61b8Smrg link_args: ['-lopengl32'], 1001b5d61b8Smrg vs_module_defs: gl_thunks_def, 1011b5d61b8Smrg install: true, 1021b5d61b8Smrg) 103