From: <sv...@ww...> - 2005-11-22 07:53:27
|
Author: mkrose Date: 2005-11-21 23:53:14 -0800 (Mon, 21 Nov 2005) New Revision: 1679 Modified: trunk/CSP/Demeter/SConscript trunk/CSP/SConstruct trunk/CSP/SimData/Include/SimData/AtomicCounter.h trunk/CSP/SimData/SConscript trunk/CSP/SimNet/SConscript trunk/CSP/tools/build.py Log: Add missing includes for non-optimized atomic counter implementation. Also small tweaks to the scons scripts and added config checks for two headers. Run 'scons config' before building after this update. Browse at: https://www.zerobar.net/viewcvs/viewcvs.cgi?view=rev&rev=1679 Modified: trunk/CSP/Demeter/SConscript =================================================================== --- trunk/CSP/Demeter/SConscript 2005-11-19 21:47:20 UTC (rev 1678) +++ trunk/CSP/Demeter/SConscript 2005-11-22 07:53:14 UTC (rev 1679) @@ -25,11 +25,12 @@ env = conf.Finish() env.ParseConfig('sdl-config --cflags --libs') +env = env.Copy() + # demeter generates lots of warnings; feel free to clean it up and then # remove this line -CXXFLAGS = env['CXXFLAGS'].replace('-pedantic', '').replace('-W ', '').replace('-Wall', '') +env.RemoveFlags(CXXFLAGS=['-pedantic', '-W', '-Wall']) -env = env.Copy(CXXFLAGS=CXXFLAGS) build.UpdateEnvironment(env, config=PackageConfig) SOURCES = [ Modified: trunk/CSP/SConstruct =================================================================== --- trunk/CSP/SConstruct 2005-11-19 21:47:20 UTC (rev 1678) +++ trunk/CSP/SConstruct 2005-11-22 07:53:14 UTC (rev 1679) @@ -44,6 +44,14 @@ SCons.Warnings.suppressWarningClass(SCons.Warnings.DuplicateEnvironmentWarning) +def GlobalConfig(env): + print '<< Config >>' + conf = build.CustomConfigure(env) + conf.CheckCHeader('dlfcn.h') + conf.CheckCHeader('asm/atomic.h') + env = conf.Finish() + + PACKAGES = [ 'Demeter', 'CSPChunkLod', @@ -64,9 +72,9 @@ ] -CXXFLAGS = '-O2 -g -W -Wall -pedantic -Wno-long-long' -SWIGCXXFLAGS = '-O2 -g' -SWIGFLAGS = '-noruntime -python -c++' +CXXFLAGS = ['-O2', '-g', '-W', '-Wall', '-pedantic', '-Wno-long-long'] +SWIGCXXFLAGS = ['-O2', '-g'] +SWIGFLAGS = ['-noruntime', '-python', '-c++'] ARFLAGS = ['cr'] @@ -86,6 +94,9 @@ start_time0 = time.time() build.GlobalSetup(env, default_message='No targets specified; try scons -h for help.') + +env.SetConfig(GlobalConfig) + build.BuildPackages(env, PACKAGES) import atexit Modified: trunk/CSP/SimData/Include/SimData/AtomicCounter.h =================================================================== --- trunk/CSP/SimData/Include/SimData/AtomicCounter.h 2005-11-19 21:47:20 UTC (rev 1678) +++ trunk/CSP/SimData/Include/SimData/AtomicCounter.h 2005-11-22 07:53:14 UTC (rev 1679) @@ -42,7 +42,7 @@ # define NOMINMAX # include <Windows.h> # undef ERROR -#else +#elif defined(HAVE_ASM_ATOMIC_H) # define LIN_ATOMIC extern "C" { # include <asm/atomic.h> @@ -72,8 +72,10 @@ //# pragma intrinsic (_InterlockedExchange) //# pragma intrinsic (_InterlockedDecrement) //# pragma intrinsic (_InterlockedIncrement) -// Atomic counter using pthreads locking (slow but safe). #else +// Atomic counter using explicit locking (slow but safe). +# include <SimData/Synchronization.h> +# include <SimData/ScopedLock.h> NAMESPACE_SIMDATA class _AtomicCounter { private: Modified: trunk/CSP/SimData/SConscript =================================================================== --- trunk/CSP/SimData/SConscript 2005-11-19 21:47:20 UTC (rev 1678) +++ trunk/CSP/SimData/SConscript 2005-11-22 07:53:14 UTC (rev 1679) @@ -18,7 +18,7 @@ Import('env build') -SWIGFLAGS = '-runtime -noexcept -python -c++ -DSWIG_STD_BACKWARD_COMP' +SWIGFLAGS = ['-runtime', '-noexcept', '-python', '-c++', '-DSWIG_STD_BACKWARD_COMP'] SHLIBS = ['dl', 'pthread'] MODULES = ['Source', 'SimData/Tests'] Modified: trunk/CSP/SimNet/SConscript =================================================================== --- trunk/CSP/SimNet/SConscript 2005-11-19 21:47:20 UTC (rev 1678) +++ trunk/CSP/SimNet/SConscript 2005-11-22 07:53:14 UTC (rev 1679) @@ -23,10 +23,11 @@ conf = build.CustomConfigure(env) conf.CheckCommandVersion('ccgnu2', 'ccgnu2-config --version', '1.0.13') env = conf.Finish() + env.ParseConfig('ccgnu2-config --flags --libs') env = env.Copy() -env.AppendUnique(SHLINKFLAGS = '-Wl,-z,lazyload') -env.Replace(CXXFLAGS=str(env['CXXFLAGS']).replace('-W ', '')) +env.AppendUnique(SHLINKFLAGS=['-Wl,-z,lazyload']) +env.RemoveFlags(CXXFLAGS=['-W']) env.SetConfig(PackageConfig) @@ -37,7 +38,6 @@ '#/SimNet/*.cpp', '#/SimNet/*.net') -env.ParseConfig('ccgnu2-config --flags --libs') SOURCES = [ Modified: trunk/CSP/tools/build.py =================================================================== --- trunk/CSP/tools/build.py 2005-11-19 21:47:20 UTC (rev 1678) +++ trunk/CSP/tools/build.py 2005-11-22 07:53:14 UTC (rev 1679) @@ -34,6 +34,7 @@ import SCons import SCons.Builder +import SCons.SConf from SCons.Builder import Builder from SCons.Script import SConscript from SCons.Script.SConscript import SConsEnvironment @@ -343,6 +344,10 @@ 'version %s or newer.' % (version, minimum)) sys.exit(1) +def CheckCHeader(context, header, include_quotes='""'): + ok = SCons.SConf.CheckHeader(context, header, include_quotes, language = "C") + if ok: context.env.AppendUnique(HAVE=['HAVE_' + header.upper().replace('.', '_').replace('/', '_')]) + return ok def CheckSwig(context, min_version, not_versions=[]): ok = 0 @@ -443,6 +448,7 @@ def CustomConfigure(env): conf = env.Configure() conf.AddTests({'CheckSwig': CheckSwig}) + conf.AddTests({'CheckCHeader': CheckCHeader}) conf.AddTests({'CheckLibVersion': CheckLibVersion}) conf.AddTests({'CheckOSGVersion': CheckOSGVersion}) conf.AddTests({'CheckCommandVersion': CheckCommandVersion}) @@ -453,7 +459,12 @@ def WriteConfig(env): config_file = env.GetBuildPath('.config') config = open(config_file, 'wt') - pickle.dump((env.get('LIBS', ''), env.get('CPPPATH', [])), config) + libs = env.get('LIBS', '') + cpppath = env.get('CPPPATH', []) + have = env.get('HAVE', []) + pickle.dump((libs, cpppath, have), config) + env.AppendUnique(CXXFLAGS=['-D%s' % x for x in have]) + env.AppendUnique(SWIGCXXFLAGS=['-D%s' % x for x in have]) return None @@ -463,9 +474,11 @@ config = open(config_file, 'rt') except IOError: return 1 - libs, cpppath = pickle.load(config) + libs, cpppath, have = pickle.load(config) env['LIBS'] = libs env['CPPPATH'] = cpppath + env.AppendUnique(CXXFLAGS=['-D%s' % x for x in have]) + env.AppendUnique(SWIGCXXFLAGS=['-D%s' % x for x in have]) return 0 @@ -476,6 +489,20 @@ config(env) WriteConfig(env) +def RemoveFlags(env, **kw): + """Remove flags from environment variables. The specified environment + variables must be lists for this function to work.""" + for key, val in kw.items(): + if isinstance(val, str): + val = [val] + if env.has_key(key): + flags = env[key] + if isinstance(flags, list): + for flag in val: + try: + flags.remove(flag) + except ValueError: + pass ############################################################################ @@ -532,6 +559,7 @@ AddPhonyTarget(env, 'config') SConsEnvironment.SetConfig = SetConfig SConsEnvironment.Documentation = MakeDocumentation + SConsEnvironment.RemoveFlags = RemoveFlags class GlobalSettings: |