#! /usr/bin/env python
# encoding: utf-8
# mittorn, 2018

from waflib import Logs
import os

top = '.'

def options(opt):
	grp = opt.add_option_group('ref_gl options')

	grp.add_option('--enable-static-gl', action='store_true', dest='GL_STATIC',
	    help = 'don\'t load opengl in runtime, instead link to libGL directly(default: False)')

	grp.add_option('--enable-gles1', action='store_true', dest='NANOGL',
	    help = 'enable gles1 renderer by linking nanogl statically(put source to ref_gl directory)')

	grp.add_option('--enable-gles2', action='store_true', dest='GLWES',
	    help = 'enable gles2 renderer by linking gl-wes-v2 statically(put source to ref_gl directory)')

	# stub
	return

def configure(conf):
	# check for dedicated server build
	if conf.options.DEDICATED:
		return

	if conf.options.SUPPORT_BSP2_FORMAT:
		conf.env.append_unique('DEFINES', 'SUPPORT_BSP2_FORMAT')

	conf.env.NANOGL = conf.options.NANOGL
	conf.env.GLWES  = conf.options.GLWES

	if conf.env.NANOGL:
		conf.add_subproject('nanogl')
	if conf.env.GLWES:
		conf.add_subproject('gl-wes-v2')

	conf.env.GL_STATIC = conf.options.GL_STATIC
	if conf.env.GL_STATIC:
		conf.check( lib='GL' )

	conf.env.append_unique('DEFINES', 'REF_DLL')

def build(bld):
	libs = [ 'public', 'M' ]

	source = bld.path.ant_glob(['*.c'])

	includes = ['.',
		'../engine',
		'../engine/common',
		'../engine/server',
		'../engine/client',
		'../public',
		'../common',
		'../pm_shared' ]

	def link_gl( glstatic ):
		if glstatic: return ['GL']
		else: return []

	def static_gl( glstatic ):
		if glstatic: return ['XASH_GL_STATIC']
		else: return []

	bld.shlib(
		source   = source,
		target   = 'ref_gl',
		features = 'c',
		includes = includes,
		use      = libs + link_gl(bld.env.GL_STATIC),
		defines  = static_gl(bld.env.GL_STATIC),
		install_path = bld.env.LIBDIR,
		subsystem = bld.env.MSVC_SUBSYSTEM
	)

	if bld.env.NANOGL:
		bld.add_subproject('nanogl')
		bld.shlib(
			source   = source,
			target   = 'ref_gles1',
			features = 'c',
			includes = includes,
			use      = libs + ['DL', 'nanogl'],
			defines  = ['XASH_NANOGL'],
			install_path = bld.env.LIBDIR,
			subsystem = bld.env.MSVC_SUBSYSTEM)

	if bld.env.GLWES:
		bld.add_subproject('gl-wes-v2')
		bld.shlib(
			source   = source,
			target   = 'ref_gles2',
			features = 'c',
			includes = includes,
			use      = libs + ['DL', 'gl-wes-v2'],
			defines  = ['XASH_WES'],
			install_path = bld.env.LIBDIR,
			subsystem = bld.env.MSVC_SUBSYSTEM)