__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
import os.path
+import string
+import re
import SCons.Defaults
import SCons.Tool
import SCons.Util
-compilers = ['c++', 'g++']
+cplusplus = __import__('c++', globals(), locals(), [])
-CXXSuffixes = ['.cc', '.cpp', '.cxx', '.c++', '.C++']
-if os.path.normcase('.c') != os.path.normcase('.C'):
- CXXSuffixes.append('.C')
+compilers = ['g++']
def generate(env):
"""Add Builders and construction variables for g++ to an Environment."""
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
- for suffix in CXXSuffixes:
- static_obj.add_action(suffix, SCons.Defaults.CXXAction)
- shared_obj.add_action(suffix, SCons.Defaults.ShCXXAction)
+ cplusplus.generate(env)
- env['CXX'] = env.Detect(compilers) or 'c++'
- env['CXXFLAGS'] = '$CCFLAGS'
- env['CXXCOM'] = '$CXX $CXXFLAGS $CPPFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'
- env['SHCXX'] = '$CXX'
+ env['CXX'] = env.Detect(compilers)
+
+ # platform specific settings
if env['PLATFORM'] == 'cygwin':
env['SHCXXFLAGS'] = '$CXXFLAGS'
+ elif env['PLATFORM'] == 'aix':
+ # Original line from Christian Engel added -DPIC:
+ #env['SHCXXFLAGS'] = '$CXXFLAGS -DPIC -mminimal-toc'
+ env['SHCXXFLAGS'] = '$CXXFLAGS -mminimal-toc'
+ env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
+ env['SHOBJSUFFIX'] = '$OBJSUFFIX'
+ elif env['PLATFORM'] == 'hpux':
+ # Original line from Christian Engel added -DPIC:
+ #env['SHCXXFLAGS'] = '$CXXFLAGS -fPIC -DPIC'
+ env['SHCXXFLAGS'] = '$CXXFLAGS -fPIC'
+ env['SHOBJSUFFIX'] = '.pic.o'
+ elif env['PLATFORM'] == 'sunos':
+ # Original line from Christian Engel added -DPIC:
+ #env['SHCXXFLAGS'] = '$CXXFLAGS -fPIC -DPIC'
+ env['SHCXXFLAGS'] = '$CXXFLAGS -fPIC'
+ env['SHOBJSUFFIX'] = '.pic.o'
else:
+ # Original line from Christian Engel added -DPIC:
+ #env['SHCXXFLAGS'] = '$CXXFLAGS -fPIC -DPIC'
env['SHCXXFLAGS'] = '$CXXFLAGS -fPIC'
- env['SHCXXCOM'] = '$SHCXX $SHCXXFLAGS $CPPFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'
- env['INCPREFIX'] = '-I'
- env['INCSUFFIX'] = ''
+ # determine compiler version
+ if env['CXX']:
+ line = os.popen(env['CXX'] + ' --version').readline()
+ match = re.search(r'[0-9]+(\.[0-9]+)+', line)
+ if match:
+ env['CXXVERSION'] = match.group(0)
- env['CXXFILESUFFIX'] = '.cc'
def exists(env):
return env.Detect(compilers)