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