Better SENF configuration support (local_config.hh)
[senf.git] / SConstruct
index 13e6954..e723e46 100644 (file)
@@ -33,7 +33,7 @@ def nonemptyFile(f):
     except OSError: return False
 
 def checkLocalConf(target, source, env):
-    if nonemptyFile('SConfig') or nonemptyFile('Doxyfile.local'):
+    if [ True for f in env['CONFIG_FILES'] if nonemptyFile(f) ]:
         print
         print "You have made local modifications to 'SConfig' and/or 'Doxyfile.local'."
         print "Building a debian package would remove those files."
@@ -73,6 +73,9 @@ logname = os.environ.get('LOGNAME')
 if not logname:
     logname = pwd.getpwuid(os.getuid()).pw_name
 
+def configFilesOpts(target, source, env, for_signature):
+    return [ '-I%s' % os.path.split(f)[1] for f in env['CONFIG_FILES'] ]
+
 env.Append(
    CPPPATH = [ '#' ],
    LIBS = [ 'iberty', '$BOOSTREGEXLIB' ],
@@ -83,8 +86,10 @@ env.Append(
            'LOGNAME' : logname, # needed by the debian build scripts
            'CONCURRENCY_LEVEL' : env.GetOption('num_jobs') or "1"
            },
+   CONFIG_FILES = [ 'Doxyfile.local', 'SConfig', 'local_config.hh' ],
+   CONFIG_FILES_OPTS = configFilesOpts,
    CLEAN_PATTERNS = [ '*.pyc', 'semantic.cache', '.sconsign', '.sconsign.dblite' ],
-   BUILDPACKAGE_COMMAND = "dpkg-buildpackage -us -uc -rfakeroot -I.svn -IDoxyfile.local -ISConfig",
+   BUILDPACKAGE_COMMAND = "dpkg-buildpackage -us -uc -rfakeroot -I.svn $CONFIG_FILES_OPTS",
 )
 
 Export('env')
@@ -94,6 +99,10 @@ Export('env')
 if not env.GetOption('clean') and not os.path.exists("Doxyfile.local"):
     Execute(Touch("Doxyfile.local"))
 
+# Create local_config.h
+if not env.GetOption('clean') and not os.path.exists("local_config.hh"):
+    Execute(Touch("local_config.hh"))
+
 ###########################################################################
 # Define build targets
 
@@ -106,6 +115,8 @@ SENFSCons.DoxyXRef(env,
                    HTML_HEADER = '#/doclib/doxy-header-overview.html',
                    HTML_FOOTER = '#/doclib/doxy-footer.html')
 
+SENFSCons.InstallIncludeFiles(env, [ 'config.hh' ])
+
 # Build combined library 'libsenf'
 libsenf = env.Library(
     SENFSCons.LibPath('senf'),