Fixed compiler flag handling to avoid saving unmodified defaults

This commit is contained in:
Ray Speth 2011-12-14 19:35:15 +00:00
parent 53c5bb6a4e
commit 6ff532ed71
2 changed files with 33 additions and 20 deletions

View file

@ -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'):

View file

@ -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)