Import('*')

if not env['x11'] or not env['xcb'] or not env['drm']:
    Return()

from sys import executable as python_cmd

env = env.Clone()

env.Prepend(CPPPATH = [
	'.',           # the build/<platform>/glx/ directory
	'#include',
	'#include/GL/internal',
	'#src/',
	'#src/loader',
	'#src/mesa',
	'#src/mapi',
	'#src/mapi/glapi',
	#$(LIBDRM_CFLAGS)
	#$(DRI2PROTO_CFLAGS)
	#$(GLPROTO_CFLAGS)
	#$(X11_INCLUDES)
])

env.Append(CPPDEFINES = [
    '_REENTRANT',
])

env.Prepend(LIBS = [
    libloader,
    mesautil,
    glapi
])

env.PkgUseModules('X11')
env.PkgUseModules('XCB')
env.PkgUseModules('DRM')
env.PkgUseModules('XF86VIDMODE')

sources = [
    'clientattrib.c',
    'clientinfo.c',
    'create_context.c',
    'compsize.c',
    'eval.c',
    'glx_error.c',
    'glxconfig.c',
    'glxcmds.c',
    'glxcurrent.c',
    'glxext.c',
    'glxextensions.c',
    'indirect_glx.c',
    'indirect.c',
    'indirect_init.c',
    'indirect_size.c',
    'indirect_window_pos.c',
    'indirect_texture_compression.c',
    'indirect_transpose_matrix.c',
    'indirect_vertex_array.c',
    'indirect_vertex_program.c',
    'pixel.c',
    'pixelstore.c',
    'query_renderer.c',
    'render2.c',
    'renderpix.c',
    'single2.c',
    'singlepix.c',
    'vertarr.c',
    'xfont.c',
    'glx_pbuffer.c',
    'glx_query.c',
    'drisw_glx.c',
    'dri_common.c',
    'dri_glx.c',
    'XF86dri.c',
    'glxhash.c',
    'dri2_glx.c',
    'dri2.c',
    'dri_common_query_renderer.c',
    'dri_common_interop.c',
    #'dri3_glx.c',
    'applegl_glx.c',
]

libgl = env.SharedLibrary(
    target ='GL',
    source = sources,
)


# Generate GLX-specific .c and .h files here.  Other GL API-related
# files are used, but they're generated in mapi/glapi/gen/ since they're
# used by other targets as well.

GLAPI = '#src/mapi/glapi/'
sources = [GLAPI + 'gen/gl_API.xml'] + env.Glob(GLAPI + 'gen/*.xml')

env.CodeGenerate(
    target = 'indirect.c',
    script = GLAPI + 'gen/glX_proto_send.py',
    source = sources,
    command = python_cmd + ' $SCRIPT -f $SOURCE -m proto > $TARGET'
    )

env.CodeGenerate(
    target = 'indirect_size.c',
    script = GLAPI + 'gen/glX_proto_size.py',
    source = sources,
    command = python_cmd + ' $SCRIPT -f $SOURCE -m size_c --only-set > $TARGET'
)

env.CodeGenerate(
    target = 'indirect_init.c',
    script = GLAPI + 'gen/glX_proto_send.py',
    source = sources,
    command = python_cmd + ' $SCRIPT -f $SOURCE -m init_c > $TARGET'
)

env.CodeGenerate(
    target = 'indirect_size.h',
    script = GLAPI + 'gen/glX_proto_size.py',
    source = sources,
    command = python_cmd + ' $SCRIPT -f $SOURCE -m size_h --only-set --header-tag _INDIRECT_SIZE_H > $TARGET'
)

env.CodeGenerate(
    target = 'indirect.h',
    script = GLAPI + 'gen/glX_proto_send.py',
    source = sources,
    command = python_cmd + ' $SCRIPT -m init_h -f $SOURCE > $TARGET',
    )


libgl = env.InstallSharedLibrary(libgl, version=(1, 2))

env.Alias('glx', libgl)
env.Alias('libgl', libgl)
