import os
import faeli_scons

# Initialize the package configuration class on the environment.
pkgconfig = faeli_scons.PkgConfig()

# Additional build options
opt = Options('custom.py')
opt.Add(ListOption('exclude', 'Targets to exclude from build and install', [],
	['gfx', 'meta', 'net', 'pp', 'util']))
Help(pkgconfig.options(opt))

##############################################################################
# Specific ###################################################################
##############################################################################

# Defaults.
version = '1.0.0'
pkgconfig.defaults()

pkgconfig.find_header('endian.h', 'HAVE_ENDIAN_H')
pkgconfig.find_header('machine/endian.h', 'HAVE_MACHINE_ENDIAN_H')
pkgconfig.find_header('sys/endian.h', 'HAVE_SYS_ENDIAN_H')

if pkgconfig.get_uname() == 'Linux':
	gnu_dl = pkgconfig.find_libwithheader('dl', 'dlfcn.h', 'HAVE_DLFCN_H')
else:
	gnu_dl = pkgconfig.find_header('dlfcn.h', 'HAVE_DLFCN_H')

# Just so we recognize it exists.
pkgconfig.find_header('GL/freeglut.h', 'USE_FREEGLUT')

# pthreads is neccessary.
pkgconfig.find_pthread()

if not gnu_dl or pkgconfig.get_uname() == 'Darwin':
	pkgconfig.find_sdl('1.2.4', '', True)
	pkgconfig.find_opengl('', True)
	pkgconfig.find_glut()
else:
	pkgconfig.find_header('SDL.h', 'HAVE_SDL_H')
	pkgconfig.find_header('SDL/SDL.h', 'HAVE_SDL_SDL_H')
	pkgconfig.add_cflag('-DDNLOAD_LIBM')
	pkgconfig.add_cflag('-DDNLOAD_LIBGL')
	pkgconfig.add_cflag('-DDNLOAD_LIBGLU')
	pkgconfig.add_cflag('-DDNLOAD_LIBGLUT')
	pkgconfig.add_cflag('-DDNLOAD_LIBSDL')

pkgconfig.add_cflag('-pedantic')

env = pkgconfig.get_env()

SConscript('src/SConscript', exports=['pkgconfig', 'env'], build_dir='build')
