1def CheckPKGConfig(context, version): 2 context.Message('Checking for pkg-config... ') 3 ret = context.TryAction('pkg-config --atleast-pkgconfig-version=%s' % version)[0] 4 context.Result(ret) 5 return ret 6 7def CheckPKG(context, name): 8 context.Message('Checking for %s...' % name) 9 ret = context.TryAction('pkg-config --exists \'%s\'' % name)[0] 10 context.Result(ret) 11 return ret 12 13# class Options is for Nexenta/Hardy. scons from Hardy is outdated. 14opts = Options('custom.py') 15#opts = Variables('custom.py') 16 17#opts.Add('OS', 'Set to current OS: linux, freebsd, nexenta.', 0) 18opts.Add('PROFILE', 'Set to 1 to build profiled version', 0) 19opts.Add('RELEASE', 'Set to 1 to build release', 0) 20opts.Add('STATIC', 'Set to 1 to build static executable', 0) 21opts.Add('ARCH', 'Set to target architecture', 'generic') 22 23env = Environment(variables = opts) 24 25Help(opts.GenerateHelpText(env)) 26 27conf = Configure(env, custom_tests = {'CheckPKGConfig' : CheckPKGConfig, 28 'CheckPKG' : CheckPKG}) 29 30if not conf.CheckPKGConfig('0.18.1'): 31 print 'pkg-config >= 0.18.1 not found.' 32 Exit(1) 33 34if not conf.CheckPKG('libxml++-2.6 >= 2.5.0'): 35 print 'libxml++-2.6 >= 2.5.0 not found.' 36 Exit(1) 37 38env = conf.Finish() 39 40#OS = ARGUMENTS.get('OS', 'linux') 41ARCH = ARGUMENTS.get('ARCH', 'generic') 42RELEASE = ARGUMENTS.get('RELEASE', 0) 43STATIC = ARGUMENTS.get('STATIC', 0) 44PROFILE = ARGUMENTS.get('PROFILE', 0) 45 46env.ParseConfig('pkg-config --cflags --libs libxml++-2.6') 47 48# 49CANDIDATE_ART_FORCE_CAST_FOR_ARTUINT64TOSTR = \ 50 ARGUMENTS.get('ART_FORCE_CAST_FOR_ARTUINT64TOSTR', 1) 51 52ART_DEBUG_INSERT_DEVEL_COMMENT = \ 53 ARGUMENTS.get('ART_DEBUG_INSERT_DEVEL_COMMENT', 0) 54# 55 56if int(PROFILE): 57 env.Append(CCFLAGS = '-pg') 58 env.Append(LINKFLAGS = '-pg') 59 60if int(RELEASE): 61 if int(PROFILE): 62 env.Append(CCFLAGS = '-O3') 63 env.Append(CCFLAGS = '-pipe') 64 else: 65 env.Append(CCFLAGS = '-O3') 66 env.Append(CCFLAGS = '--omit-frame-pointer') 67 env.Append(CCFLAGS = '-pipe') 68 69 if ARCH != "generic": 70 env.Append(CCFLAGS = '-march=' + ARCH) 71 else: 72 env.Append(CCFLAGS = '-mtune=generic') 73 74else: 75 env.Append(CCFLAGS = '-g') 76 env.Append(CCFLAGS = '-ggdb') 77 env.Append(CCFLAGS = '-Wall') 78 env.Append(CCFLAGS = '-W') 79 env.Append(CCFLAGS = '-Wextra') 80 env.Append(CCFLAGS = '-Werror') 81 env.Append(CCFLAGS = '-O0') 82 env.Append(CCFLAGS = '-DART_DEBUG') 83# no -pedantic, as long long is used, but it doesn't exist in ISO C++ 1998 84 85if int(STATIC): 86 env.Append(LINKFLAGS = '-static') 87 88# 89if int(CANDIDATE_ART_FORCE_CAST_FOR_ARTUINT64TOSTR): 90 env.Append(CCFLAGS = '-DART_FORCE_CAST_FOR_ARTUINT64TOSTR') 91 92if int(ART_DEBUG_INSERT_DEVEL_COMMENT): 93 env.Append(CCFLAGS = '-DART_DEBUG_INSERT_DEVEL_COMMENT') 94# 95 96Export('env') 97 98env.SConscript('libs/liblinefetch/SConscript') 99env.SConscript('libs/libtplreader/SConscript') 100env.SConscript('artlibgen/src/SConscript') 101env.SConscript('artrepgen/SConscript') 102#env.SConscript('artrepgen/SConscript', 'OS') 103 104SConsignFile("signatures"); 105