SConstruct
author Dmitriy Morozov <morozov@cs.duke.edu>
Fri, 12 Jan 2007 12:49:29 -0500 (2007-01-12)
changeset 12 0239c3f0a598
parent 5 ee9052408c40
permissions -rw-r--r--
Options read from home or config directories; documentation built by default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
     1
import os
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
     2
12
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
     3
# Get options
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
     4
options_filenames =		['config/' + os.uname()[1] + '.py', os.path.expanduser('~/.scons/config.py')]
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
     5
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
     6
for fn in options_filenames:
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
     7
	if os.path.exists(fn):
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
     8
		optns =			Options(fn)
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
     9
		print "Found configuration:", fn
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
    10
		break
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
    11
else:
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
    12
		optns =			Options()
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
    13
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
    14
optns.AddOptions		(PathOption('cgal_path', 'where CGAL is installed', ''),
0
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    15
						('cgal_architecture', 'string describing CGAL architecture'),
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    16
						('INCPATH', 'additional include paths separated with :',''),
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    17
						('LIBPATH', 'additional library paths separated with :',''),
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    18
						PathOption('qt4_includes', 'where Qt4 headers are installed', ''),
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    19
						PathOption('qt4_libs', 'where Qt4 libraries are installed', ''),
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    20
						('CXX', 'The C++ compiler'))
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    21
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    22
# Setup environment
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    23
base_env = 				Environment(options = optns,
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    24
									ENV = os.environ,
1
b227c7a027cd Disabled missing qt4 tool, and added missing src/Sconcript
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 0
diff changeset
    25
									tools=["default", "doxygen"], #, "qt4"], 
0
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    26
									toolpath=["sconstools"])
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    27
Help					(optns.GenerateHelpText(base_env))
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    28
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    29
dbg =					base_env.Copy(CPPFLAGS = ['-g'])
5
ee9052408c40 Switched to a new architecture (Vineyard is a visitor for Filtration),
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 4
diff changeset
    30
opt = 					base_env.Copy(CPPDEFINES = ['NDEBUG'])
0
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    31
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    32
if ARGUMENTS.get('debug', 0):
5
ee9052408c40 Switched to a new architecture (Vineyard is a visitor for Filtration),
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 4
diff changeset
    33
	env = 				dbg
ee9052408c40 Switched to a new architecture (Vineyard is a visitor for Filtration),
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 4
diff changeset
    34
	env.Append			(CPPDEFINES = ['CWDEBUG'])
ee9052408c40 Switched to a new architecture (Vineyard is a visitor for Filtration),
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 4
diff changeset
    35
	env.Append			(LIBS = ['cwd'])
ee9052408c40 Switched to a new architecture (Vineyard is a visitor for Filtration),
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 4
diff changeset
    36
elif ARGUMENTS.get('optimize', 0):
ee9052408c40 Switched to a new architecture (Vineyard is a visitor for Filtration),
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 4
diff changeset
    37
	opt.Append 			(CPPFLAGS = ['-O' + str(ARGUMENTS['optimize'])])
ee9052408c40 Switched to a new architecture (Vineyard is a visitor for Filtration),
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 4
diff changeset
    38
	env =				opt
0
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    39
else:
5
ee9052408c40 Switched to a new architecture (Vineyard is a visitor for Filtration),
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 4
diff changeset
    40
	opt.Append 			(CPPFLAGS = ['-O'])
ee9052408c40 Switched to a new architecture (Vineyard is a visitor for Filtration),
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 4
diff changeset
    41
	env =				opt
0
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    42
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    43
if ARGUMENTS.get('counters', 0):
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    44
	env.Append			(CPPDEFINES = ['COUNTERS'])
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    45
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    46
# Don't create .sconsign files all over the place
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    47
SConsignFile()
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    48
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    49
# Create tags file
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    50
#tags =					env.Command('tags', 'sources',			# FIXME
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    51
#									['ctags '])
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    52
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    53
# CGAL
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    54
cgal_path = 			env['cgal_path']
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    55
cgal_architecture = 	env['cgal_architecture']	
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    56
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    57
cgal_defines = 			['CGAL_USE_GMP', 'CGAL_USE_GMPXX', 'CGAL_USE_CORE']
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    58
cgal_cpppath =			[cgal_path + '/include/CGAL/config/' + cgal_architecture, cgal_path + '/include']
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    59
cgal_libs = 			['CGAL', 'core++', 'mpfr', 'gmpxx', 'gmp', 'm']
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    60
cgal_link_flags =		['-Wl,-R' + cgal_path + '/lib/' + cgal_architecture]
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    61
cgal_lib_paths = 		[cgal_path + '/lib/' + cgal_architecture]
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    62
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    63
# Includes
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    64
cpppath =				['#/include'] + env['INCPATH'].split(':')
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    65
libpath = 				env['LIBPATH'].split(':')
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    66
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    67
# Append variables to the environment
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    68
env.Append				(CPPDEFINES = cgal_defines, 
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    69
						 CPPPATH = cpppath + cgal_cpppath,
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    70
						 LIBS = cgal_libs, 
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    71
						 LIBPATH = libpath + cgal_lib_paths, 
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    72
						 LINKFLAGS = cgal_link_flags)
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    73
12
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
    74
# Build documentation (in docs/)
0239c3f0a598 Options read from home or config directories; documentation built by default
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 5
diff changeset
    75
Default(env.Doxygen("Doxyfile"))
0
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    76
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    77
# Build stuff in src/, and export it
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    78
external_sources = 		SConscript(['src/SConscript'], exports = ['env'])
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    79
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    80
# Build examples/ and tools/
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    81
#SConscript				(['examples/SConscript',
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    82
#						  'tools/SConscript'],
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    83
#						 exports = ['env', 'external_sources'])
4
c1be260ad990 Split OrderList into OrderList and ConsistencyList. Made efficient insertions possible.
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 3
diff changeset
    84
SConscript				(['examples/SConscript', 
c1be260ad990 Split OrderList into OrderList and ConsistencyList. Made efficient insertions possible.
Dmitriy Morozov <morozov@cs.duke.edu>
parents: 3
diff changeset
    85
						  'tests/SConscript'],
0
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    86
						 exports = ['env', 'external_sources'])
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    87
d95020656286 Initial conversion to Dionysus architecture
Dmitriy Morozov <morozov@cs.duke.edu>
parents:
diff changeset
    88
# vim: syntax=python