diff --git a/SConstruct b/SConstruct index bbb80d494..7dca0ae10 100644 --- a/SConstruct +++ b/SConstruct @@ -66,20 +66,20 @@ else: sys.exit(1) if env['CC'] == 'gcc': - defaults.cxxFlags = ['-ftemplate-depth-128'] - defaults.ccFlags = ['-Wall', '-g'] - defaults.debugCcFlags = ['-O0', '-fno-inline'] - defaults.releaseCcFlags = ['-O3', '-finline-functions', '-Wno-inline', '-DNDEBUG'] - defaults.debugLinkFlags = [] - defaults.fPIC = ['-fPIC'] + defaults.cxxFlags = '-ftemplate-depth-128' + defaults.ccFlags = '-Wall -g' + defaults.debugCcFlags = '-O0 -fno-inline' + defaults.releaseCcFlags = '-O3 -finline-functions -Wno-inline -DNDEBUG' + defaults.debugLinkFlags = '' + defaults.fPIC = '-fPIC' elif env['CC'] == 'cl': # Visual Studio - defaults.cxxFlags = ['/EHsc'] - defaults.ccFlags = ['/nologo', '/Zi', '/W3', '/Zc:wchar_t', '/Zc:forScope', - '/D_SCL_SECURE_NO_WARNINGS', '/D_CRT_SECURE_NO_WARNINGS'] - defaults.debugCcFlags = ['/Od', '/Ob0', '/MD'] # note: MDd breaks the Python module - defaults.releaseCcFlags = ['/O2', '/MD', '/DNDEBUG'] - defaults.debugLinkFlags = ['/DEBUG'] - defaults.fPIC = [] + defaults.cxxFlags = '/EHsc' + defaults.ccFlags = ' '.join(['/nologo', '/Zi', '/W3', '/Zc:wchar_t', '/Zc:forScope', + '/D_SCL_SECURE_NO_WARNINGS', '/D_CRT_SECURE_NO_WARNINGS']) + defaults.debugCcFlags = '/Od /Ob0 /MD' # note: MDd breaks the Python module + defaults.releaseCcFlags = '/O2 /MD /DNDEBUG' + defaults.debugLinkFlags = '/DEBUG' + defaults.fPIC = '' else: print "Error: Unrecognized C compiler '%s'" % env['CC'] @@ -565,12 +565,12 @@ env['ct_tutdir'] = pjoin(env['prefix'], 'tutorials') env['ct_mandir'] = pjoin(env['prefix'], 'man1') env['ct_matlab_dir'] = pjoin(env['prefix'], 'matlab', 'toolbox') -env['CXXFLAGS'] = env['cxx_flags'] +env['CXXFLAGS'] = listify(env['cxx_flags']) if env['optimize']: - env['CCFLAGS'] = env['cc_flags'] + env['release_flags'] + env['CCFLAGS'] = listify(env['cc_flags']) + listify(env['release_flags']) else: - env['CCFLAGS'] = env['cc_flags'] + env['debug_flags'] - env['LINKFLAGS'] += defaults.debugLinkFlags + env['CCFLAGS'] = listify(env['cc_flags']) + listify(env['debug_flags']) + env['LINKFLAGS'] += listify(defaults.debugLinkFlags) # ************************************** # *** Set options needed in config.h *** @@ -659,9 +659,9 @@ env.Append(CPPPATH=[Dir(os.getcwd()), Dir('build/include/cantera'), Dir('build/include')], LIBPATH=[Dir('build/lib')], - CCFLAGS=defaults.fPIC, - FORTRANFLAGS=defaults.fPIC, - F90FLAGS=defaults.fPIC) + CCFLAGS=[defaults.fPIC], + FORTRANFLAGS=[defaults.fPIC], + F90FLAGS=[defaults.fPIC]) # Put headers in place for header in mglob(env, 'Cantera/cxx/include', 'h'): diff --git a/buildutils.py b/buildutils.py index d6ec7c0fd..228c02957 100644 --- a/buildutils.py +++ b/buildutils.py @@ -8,6 +8,7 @@ import re import subprocess import difflib import time +import types class DefineDict(object): def __init__(self, data): @@ -291,6 +292,18 @@ def formatOption(env, opt): return lines +def listify(value): + """ + Convert an option specified as a string to a list. + Allow both comma and space as delimiters. Passes + lists transparently. + """ + if isinstance(value, types.StringTypes): + return value.replace(',', ' ').split() + else: + # Already a sequence. Return as a list + return list(value) + # This tool adds the builder: # # env.RecursiveInstall(target, path)