X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=SConstruct;h=f56ce4fc0181b3adcf733d368f0c416a25ed24f7;hb=3b28ce6a5f2029bdf2fba77f46e2aff31eef7f33;hp=291a94ee2eac82ad1d792356e1cb564169e0dedc;hpb=213b5ea43eeaead3a9752b598069e6a1e99fe6e0;p=senf.git diff --git a/SConstruct b/SConstruct index 291a94e..f56ce4f 100644 --- a/SConstruct +++ b/SConstruct @@ -17,6 +17,7 @@ env.Tool('CopyToDir') env.Tool('Boost') env.Tool('CombinedObject') env.Tool('PhonyTarget') +env.Tool('InstallDir') env.Help(""" Additional top-level build targets: @@ -27,22 +28,23 @@ examples Build all examples all_tests Build and run unit tests for all modules all_docs Build documentation for all modules all Build everything -install_all Install SENF into $PREFIX +install_all Install SENF into $$PREFIX deb Build debian source and binary package debsrc Build debian source package debbin Build debian binary package linklint Check links of doxygen documentation with 'linklint' fixlinks Fix broken links in doxygen documentation valgrind Run all tests under valgrind/memcheck -""") -class BuildTypeOptions: - def __init__(self, var): - self._var = var +Build parameters: + +final=1 Build optimized library without debug symbols +debug=1 Link all binaries with debug symbols (slow!) +syslayout=1 Install into system layout directories ($$PREFIX/lib, $$PREFIX/include etc) - def __call__(self, target, source, env, for_signature): - type = env['final'] and "final" or env['debug'] and "debug" or "normal" - return env[self._var + "_" + type] +additionally, any construction environment variable may be set from the scons +command line (see SConstruct file and SCons documentation for a list of variables). +""") env.Replace( PKGDRAW = 'doclib/pkgdraw', @@ -61,10 +63,13 @@ env.Append( PREFIX = '#/dist', LIBINSTALLDIR = '$PREFIX${syslayout and "/lib" or ""}', - BININSTALLDIR = '$PREFIX${syslayout and "/bin" or ""', + BININSTALLDIR = '$PREFIX${syslayout and "/bin" or ""}', INCLUDEINSTALLDIR = '$PREFIX${syslayout and "/include" or ""}', - OBJINSTALLDIR = '$LIBINSTALLDIR${syslayout and "/$LIBINSTALLDIR/senf" or ""', - DOCINSTALLDIR = '$PREFIX/docs', + OBJINSTALLDIR = '${syslayout and "$LIBINSTALLDIR/senf" or "$PREFIX"}', + DOCINSTALLDIR = '$PREFIX/manual', + SCONSINSTALLDIR = '${syslayout and "$LIBINSTALLDIR/senf" or "$PREFIX"}/site_scons', + CONFINSTALLDIR = '$OBJINSTALLDIR', + CPP_INCLUDE_EXTENSIONS = [ '.h', '.hh', '.ih', '.mpp', '.cci', '.ct', '.cti' ], CPP_EXCLUDE_EXTENSIONS = [ '.test.hh' ], @@ -78,20 +83,20 @@ env.Append( INLINE_OPTS = [ '$INLINE_OPTS_NORMAL' ], CXXFLAGS = [ '-Wall', '-Woverloaded-virtual', '-Wno-long-long', '$INLINE_OPTS', '$CXXFLAGS_' ], - CXXFLAGS_ = BuildTypeOptions('CXXFLAGS'), + CXXFLAGS_ = senfutil.BuildTypeOptions('CXXFLAGS'), CXXFLAGS_final = [ '-O3' ], CXXFLAGS_normal = [ '-O0', '-g' ], CXXFLAGS_debug = [ '$CXXFLAGS_normal' ], CPPDEFINES = [ '$expandLogOption', '$CPPDEFINES_' ], expandLogOption = senfutil.expandLogOption, - CPPDEFINES_ = BuildTypeOptions('CPPDEFINES'), + CPPDEFINES_ = senfutil.BuildTypeOptions('CPPDEFINES'), CPPDEFINES_final = [ ], CPPDEFINES_normal = [ 'SENF_DEBUG' ], CPPDEFINES_debug = [ '$CPPDEFINES_normal' ], LINKFLAGS = [ '-rdynamic', '$LINKFLAGS_' ], - LINKFLAGS_ = BuildTypeOptions('LINKFLAGS'), + LINKFLAGS_ = senfutil.BuildTypeOptions('LINKFLAGS'), LINKFLAGS_final = [ ], LINKFLAGS_normal = [ '-Wl,-S' ], LINKFLAGS_debug = [ ], @@ -138,10 +143,20 @@ env.Depends(SENFSCons.Doxygen(env), env.Value(env['ENV']['REVISION'])) #### libsenf.a libsenf = env.Library("$LOCALLIBDIR/${LIBSENF}${LIBADDSUFFIX}", env['ALLOBJECTS']) env.Default(libsenf) - env.Install('$LIBINSTALLDIR', libsenf) +def create(target, source, env): + file(str(target[0]), 'w').write(source[0].get_contents()+"\n") +env['BUILDERS']['CreateFile'] = Builder(action = create) + +conf = env.CreateFile("${LOCALLIBDIR}/${LIBSENF}${LIBADDSUFFIX}.conf", + env.Value(env.subst("$_CPPDEFFLAGS"))) +env.Default(conf) +env.Install('$CONFINSTALLDIR', conf) + #### install_all, default, all_tests, all +env.Install('${SCONSINSTALLDIR}', 'site_scons/senfutil.py') + env.Alias('install_all', env.FindInstalledFiles()) env.Alias('default', DEFAULT_TARGETS) env.Alias('all_tests', env.FindAllBoostUnitTests())