import os #version info of the library revision = svn_version = os.popen('svnversion').read()[:-1] version_info = { 'version_major': 1 , 'version_minor': 0 , 'version_patch': 0 , 'version_revision': revision, } AddOption('--build_type', dest = 'build_type', type = 'string', nargs = 1, action='store', default='debug', metavar='TYPE', help = 'debug|release - Build a Debug (default) or Release variant' ) AddOption('--prefix', dest='prefix', type='string', nargs=1, action='store', metavar='DIR', default='/usr', help='installation prefix' ) AddOption('--test_xml', dest='test_xml', action='store_true', help='Create a result.xml when running the testsuite' ) build_type = GetOption('build_type') test_xml = GetOption('test_xml') prefix = GetOption('prefix') if not (build_type in ['debug', 'release']): print "Error: expected 'debug' or 'release', found: " + build_type Exit(1) def InstallPerm(env, dest, files, perm): obj = env.Install(dest, files) for i in obj: env.AddPostAction(i, Chmod(str(i), perm)) return dest env = Environment(tools = ['default', 'textfile']) env.AddMethod(InstallPerm) Export('env', 'build_type', 'prefix', 'version_info', 'test_xml') env.Append(CFLAGS = ['-std=gnu99','-Wall', '-Wextra', '-Wundef', '-Wcast-qual','-Wshadow' ,'-Wcast-align','-pipe', '-ggdb', '-pthread']) env.Append(LINKFLAGS = ['-O2', '-pthread']) env.Append(CPPDEFINES = ['_FILE_OFFSET_BITS=64']) env.Append(CPPPATH = ['#include']) if build_type == 'release': env.Append(CFLAGS = ['-O2']) #this will turn off assert() env.Append(CPPDEFINES = ['NDEBUG']) elif build_type == 'debug': env.Append(CPPDEFINES = ['DEBUG']) #put all .sconsign files in one place env.SConsignFile() subdirs = [ 'src', 'include/ucore', 'test', ] for subdir in subdirs: SConscript(subdir + '/SConscript', variant_dir='#build/' + subdir, src_dir='#'+subdir, duplicate=0) env.Default('src')