#!/bin/env python

import os
import sys

version="0.1.2"

#######################################
# OPTIONS
#######################################
opts = Options(ARGUMENTS)
# conditionally build parts of gaia
#opts.Add(BoolOption('gaia', 'Compile gaia OpenGL client', 1));

# conditional features
opts.Add(BoolOption('gpsd', 'Compile with gpsd support (libgps)', 0));
opts.Add(BoolOption('extras', 'Compile examples and tests', 0));
opts.Add(BoolOption('use_env', 'Use environment variables (CC, CXX, CCFLAGS, CXXFLAGS, CPPPATH, LIBPATH)', 0));

# paths
opts.Add(('prefix', 'Install prefix', ''));
opts.Add(('bindir', 'Path (relative to prefix) where to install executables to (default bin)', 'bin'));
opts.Add(('datadir', 'Path (relative to prefix) where to install read-only data to (default share/gaia)', 'share/gaia'));

#######################################
# ENVIRONMENT & SYSTEM_SPECIFIC CONFIGURATION
#######################################
env = Environment( options = opts )

if env['prefix'] == "":
	env['prefix'] = '.'
	env['bindir'] = '.'
	env['datadir'] = 'data'

SConsignFile()

if not env.GetOption('clean'):
	if sys.platform.startswith('freebsd'):
		print "Compiling for FreeBSD"
		env.Append(CPPPATH = [ '/usr/local/include', '/usr/X11R6/include' ])
		env.Append(LIBPATH = [ '/usr/local/lib', '/usr/X11R6/lib' ])
	elif sys.platform == 'openbsd':
		# TODO: confirm that sys.platform == 'openbsd' for OpenBSD (feedback welcome)
		print "Compiling for OpenBSD"
		env.Append(CPPPATH = [ '/usr/local/include', '/usr/X11R6/include' ])
		env.Append(LIBPATH = [ '/usr/local/lib', '/usr/X11R6/lib' ])
	elif sys.platform == 'darwin':
		print "Compiling for MacOSX"
		env.Append(CPPPATH = [ '/usr/local/include', '/usr/X11R6/include', '/opt/local/include', '/sw/include' ])
		env.Append(LIBPATH = [ '/usr/local/lib', '/usr/X11R6/lib', '/opt/local/lib', '/sw/lib' ])
	else:
		print "Compiling for Unix/Posix/Linux"
		env.Append(CPPPATH = [ '/usr/local/include', '/usr/X11R6/include' ])
		env.Append(LIBPATH = [ '/usr/local/lib', '/usr/X11R6/lib' ])

if int(env['use_env']):
	for key in ['CC', 'CCFLAGS', 'CXX', 'CXXFLAGS', 'CPPPATH', 'LIBPATH' ]:
		if os.environ.has_key(key):
			env.Replace( **{key: os.environ[key].split(' ')} )

env.Append(CCFLAGS = [ '-DGAIA_VERSION="\\"' + version + '\\""' ])
env.Append(CXXFLAGS = [ '-DGAIA_VERSION="\\"' + version + '\\""' ])

env.Append(CCFLAGS = [ '-Wall', '-g' ], CXXFLAGS = [ '-Wall', '-g' ])

#######################################
# CHECKS
#######################################

#######################################
# TARGETS
#######################################

libwwfetch = SConscript('lib/wwfetch/SConscript', exports = ['env'])

SConscript('programs/gaia/SConscript', exports = ['env', 'libwwfetch'])

if env['prefix'] != ".":
	env.Alias('install', env['prefix'])
