import os
import PkgConfig

# Get the environment
env = Environment(ENV = os.environ)
env.Append(LIBPATH = '.')

PkgConfig.env_replace(env, 'LINK', 'LD')
PkgConfig.env_replace(env, 'CCFLAGS', 'CFLAGS')
PkgConfig.env_replace(env, 'LINKFLAGS', 'LDFLAGS')

opts = Options('custom.py')
opts.Add('CC', 'C compiler.')
opts.Add('CXX', 'C++ compiler.')
opts.Add('LINK', 'Linker.')
opts.Add('CCFLAGS', 'C compiler flags.', PkgConfig.env_fetch(env, 'CCFLAGS'))
opts.Add('CXXFLAGS', 'C++ compiler flags.', PkgConfig.env_fetch(env, 'CXXFLAGS'))
opts.Add('LINKFLAGS', 'Linker flags.', PkgConfig.env_fetch(env, 'LINKFLAGS'))
opts.Add('prefix', 'Installation prefix', '/usr/local')
opts.Update(env)
Help(opts.GenerateHelpText(env))

# Initialize the package configutration class on the environment.
pkgconfig = PkgConfig.PkgConfig(env)
uname = PkgConfig.uname

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

# Debug mode
pkgconfig.add_cflag('-DLIBFHI_DEBUG')

# Check for some headers
pkgconfig.find_header('stdint.h', 'HAVE_STDINT_H')
pkgconfig.find_header('sys/inittypes.h', 'HAVE_STDINT_H')
pkgconfig.find_header('ostream', 'HAVE_OSTREAM', 'CXX')
#pkgconfig.find_function('lrint', '#include <math.h>', 'HAVE_LRINT', 'CXX')
#pkgconfig.find_function('lrintf', '#include <math.h>', 'HAVE_LRINTF', 'CXX')

# Require freetype.
pkgconfig.find_freetype('9.2.0')

# Try to find libpng.
png = pkgconfig.find_libpng('1.2.0', 'LIBFHI_PNG', False)

# Configure SDL (not obligatory)
sdl = pkgconfig.find_sdl('1.2.4', 'LIBFHI_SDL', False)
if sdl:
  pkgconfig.find_sdl_image('LIBFHI_SDL_IMAGE')
  # Configure GL (only if SDL).
  gl = pkgconfig.find_opengl('LIBFHI_OPENGL', False)
  if gl:
    glew = pkgconfig.find_glew()

env = pkgconfig.get_env()
 
# Create pkgconfig
pkgconfig.set_dir_prefix(env['prefix'])
pkgconfig.set_info('libfhi', '0.1.1', 'Multifunctional utility library for FHI programs.')
pkgconfig.add_lib('fhi')
pkgconfig.write('src/libfhi.pc')

SConscript('src/SConscript', exports=['pkgconfig', 'uname', 'env', 'png',
  'sdl', 'gl'], build_dir='build')
