icfp11/wscript

89 lines
2.0 KiB
Python

#! /usr/bin/env python
# encoding: utf-8
# wscript
VERSION='0.0.1'
APPNAME='icfp08'
srcdir = '.'
blddir = 'build'
###########################
import types
def tolist(x):
if type(x) is types.ListType:
return x
return [x]
def env_mod(conf, use):
types = [ 'LIB', 'STATICLIB', 'LIBPATH', 'CPPPATH', 'CXXDEFINES', 'CCFLAGS', 'CXXFLAGS', 'LINKFLAGS' ]
bak = {}
for t in types:
bak[t] = conf.env[t]
for u in use:
conf.env[t] = tolist(conf.env[t]) + tolist(conf.env['%s_%s' % (t, u)])
return bak
def env_mod_revert(conf, bak):
for (k,v) in bak.items():
conf.env[k] = v
def CHECK_INCLUDE_FILES(conf, header, define, uselib = '', path = None, mandatory = 0, use = []):
envbak = env_mod(conf, use)
hconf = conf.create_header_configurator()
hconf.mandatory = mandatory
hconf.name = header
hconf.uselib_store = uselib
hconf.define = define
if path: hconf.path += path
res = hconf.run()
env_mod_revert(conf, envbak)
return res
def PKGCONFIG(conf, name, uselib = None, define = '', version = '', mandatory = 0):
if not uselib: uselib = name
hconf = conf.create_pkgconfig_configurator()
hconf.name = name
hconf.version = version
hconf.uselib_store = uselib
hconf.define = define
hconf.mandatory = mandatory
res = hconf.run()
return res
###########################
def set_options(opt):
opt.tool_options('compiler_cc')
#opt.tool_options('ragel', tooldir = '.')
def configure(conf):
conf.check_tool('compiler_cc')
#conf.check_tool('ragel', tooldir = '.')
common_ccflags = [
'-std=gnu99', '-Wall', '-g', '-Wshadow', '-W', '-pedantic',
'-O2',
# '-fPIC', '-D_GNU_SOURCE',
]
conf.env['CCFLAGS'] += common_ccflags
conf.env['LIB'] += ['m']
PKGCONFIG(conf, "glib-2.0", uselib = 'glib', mandatory = 1)
incdir = conf.env['CPPPATH_glib'][0]
conf.env['CPPPATH_glib'] += [ incdir+'/glib-2.0/', incdir + '/glib-2.0/include/' ]
CHECK_INCLUDE_FILES(conf, "glib.h", "HAVE_GLIB_H", uselib = 'glib', use = ['glib'], mandatory = 1)
conf.write_config_header('src/config.h')
def build(bld):
bld.add_subdirs('src')