← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~linuxdcpp-team/linuxdcpp/trunk] Rev 396: Simplify build flags

 

------------------------------------------------------------
revno: 396
committer: Steven Sheehy <steven.sheehy@xxxxxxxxx>
branch nick: trunk
timestamp: Tue 2010-10-12 23:30:29 -0500
message:
  Simplify build flags
modified:
  SConstruct


--
lp:linuxdcpp
https://code.launchpad.net/~linuxdcpp-team/linuxdcpp/trunk

Your team LinuxDC++ Team is subscribed to branch lp:linuxdcpp.
To unsubscribe from this branch go to https://code.launchpad.net/~linuxdcpp-team/linuxdcpp/trunk/+edit-subscription
=== modified file 'SConstruct'
--- SConstruct	2010-10-12 04:50:18 +0000
+++ SConstruct	2010-10-13 04:30:29 +0000
@@ -15,6 +15,13 @@
 APP_NAME = 'linuxdcpp'
 BUILD_PATH = '#/build/'
 
+# todo: remove -fpermissive and fix the errors
+BUILD_FLAGS = {
+	'common': ['-I#', '-fpermissive', '-D_GNU_SOURCE', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64', '-D_REENTRANT'],
+	'debug': ['-g', '-ggdb', '-Wall'], 
+	'release' : ['-O3', '-fomit-frame-pointer', '-DNDEBUG']
+}
+
 # ----------------------------------------------------------------------
 # Function definitions
 # ----------------------------------------------------------------------
@@ -102,7 +109,36 @@
 
 env = Environment(ENV = os.environ, options = vars)
 
-conf = env.Configure(clean = False,
+env['mode'] = 'debug' if env.get('debug') else 'release'
+env['build_path'] = BUILD_PATH + env['mode'] + '/'
+
+if os.environ.has_key('CXX'):
+	env['CXX'] = os.environ['CXX']
+else:
+	print 'CXX env variable is not set, attempting to use g++'
+	env['CXX'] = 'g++'
+
+if os.environ.has_key('CC'):
+	env['CC'] = os.environ['CC']
+
+if os.environ.has_key('CXXFLAGS'):
+	env['CPPFLAGS'] = env['CXXFLAGS'] = os.environ['CXXFLAGS'].split()
+
+if os.environ.has_key('LDFLAGS'):
+	env['LINKFLAGS'] = os.environ['LDFLAGS'].split()
+
+if os.environ.has_key('CFLAGS'):
+	env['CFLAGS'] = os.environ['CFLAGS'].split()
+
+env['CPPDEFINES'] = [] # Initialize as a list so Append doesn't concat strings
+
+env.SConsignFile('build/sconf/.sconsign')
+vars.Save('build/sconf/scache.conf', env)
+Help(vars.GenerateHelpText(env))
+
+env.AddMethod(install_icons, 'InstallIcons')
+
+conf = env.Configure(
 	custom_tests =
 	{
 		'CheckPKGConfig' : check_pkg_config,
@@ -113,28 +149,6 @@
 	conf_dir = 'build/sconf',
 	log_file = 'build/sconf/config.log')
 
-if os.environ.has_key('CXX'):
-	conf.env['CXX'] = os.environ['CXX']
-
-if os.environ.has_key('CC'):
-	conf.env['CC'] = os.environ['CC']
-
-if os.environ.has_key('CXXFLAGS'):
-	conf.env['CPPFLAGS'] = conf.env['CXXFLAGS'] = os.environ['CXXFLAGS'].split()
-
-if os.environ.has_key('LDFLAGS'):
-	conf.env['LINKFLAGS'] = os.environ['LDFLAGS'].split()
-
-if os.environ.has_key('CFLAGS'):
-	conf.env['CFLAGS'] = os.environ['CFLAGS'].split()
-
-conf.env['CPPDEFINES'] = [] # Initialize as a list so Append doesn't concat strings
-
-env.SConsignFile('build/sconf/.sconsign')
-vars.Save('build/sconf/scache.conf', env)
-Help(vars.GenerateHelpText(env))
-
-env.AddMethod(install_icons, 'InstallIcons')
 
 # ----------------------------------------------------------------------
 # Dependencies
@@ -142,10 +156,6 @@
 
 if not 'install' in COMMAND_LINE_TARGETS:
 
-	if not conf.env.get('CXX'):
-		print 'CXX env variable is not set, attempting to use g++'
-		conf.env['CXX'] = 'g++'
-
 	if not conf.CheckCXXVersion(env['CXX'], 4, 1):
 		print 'Compiler version check failed. g++ 4.1 or later is needed'
 		Exit(1)
@@ -239,9 +249,13 @@
 # Compile and link flags
 # ----------------------------------------------------------------------
 
-	# todo: remove -fpermissive and fix the errors
-	env.Append(CXXFLAGS = ['-I.', '-fpermissive'])
-	env.Append(CPPDEFINES = ['_GNU_SOURCE', '_LARGEFILE_SOURCE', ('_FILE_OFFSET_BITS', '64'), '_REENTRANT'])
+	env.MergeFlags(BUILD_FLAGS['common'])
+	env.MergeFlags(BUILD_FLAGS[env['mode']])
+	env.ParseConfig('pkg-config --libs libglade-2.0')
+	env.ParseConfig('pkg-config --libs gthread-2.0')
+
+	env.Append(LIBPATH = env['build_path'] + 'dcpp')
+	env.Prepend(LIBS = 'dcpp')
 
 	if os.sys.platform == 'linux2':
 		env.Append(LINKFLAGS = '-Wl,--as-needed')
@@ -253,17 +267,6 @@
 		conf.env.Append(CPPDEFINES = ('ICONV_CONST', 'const'))
 		env.Append(LIBS = ['socket', 'nsl'])
 
-	if env.get('debug'):
-		env.Append(CPPDEFINES = '_DEBUG')
-		env.Append(CXXFLAGS = ['-g', '-ggdb', '-Wall'])
-		env.Append(LINKFLAGS = ['-g', '-ggdb', '-Wall'])
-		BUILD_PATH = BUILD_PATH + 'debug/'
-
-	elif env.get('release'):
-		env.Append(CPPDEFINES = '_NDEBUG')
-		env.Append(CXXFLAGS = ['-O3', '-fomit-frame-pointer'])
-		BUILD_PATH = BUILD_PATH + 'release/'
-
 	if env.get('profile'):
 		env.Append(CXXFLAGS = '-pg')
 		env.Append(LINKFLAGS= '-pg')
@@ -272,12 +275,6 @@
 		data_dir = '\'\"%s/share\"\'' % env['PREFIX']
 		env.Append(CPPDEFINES = ('_DATADIR', data_dir))
 
-	env.ParseConfig('pkg-config --libs libglade-2.0')
-	env.ParseConfig('pkg-config --libs gthread-2.0')
-
-	env.Append(LIBPATH = BUILD_PATH + 'dcpp')
-	env.Prepend(LIBS = 'dcpp')
-
 
 # ----------------------------------------------------------------------
 # Build
@@ -286,10 +283,10 @@
 	Export('env')
 
 	# Build the dcpp library
-	libdcpp = SConscript(dirs = 'dcpp', variant_dir = BUILD_PATH + 'dcpp', duplicate = 0)
+	libdcpp = SConscript(dirs = 'dcpp', variant_dir = env['build_path'] + 'dcpp', duplicate = 0)
 
 	# Build the GUI
-	obj_files = SConscript(dirs = 'linux', variant_dir = BUILD_PATH + 'gui', duplicate = 0)
+	obj_files = SConscript(dirs = 'linux', variant_dir = env['build_path'] + 'gui', duplicate = 0)
 
 	# Create the executable
 	env.Program(target = APP_NAME, source = [libdcpp, obj_files])