.test.stamp
# Local files (files in this directory)
-/Doxyfile.local
/SConscript.local
/*-stamp
/*.conf
;; Better set this here than in the file variables since the setting
;; is only valid if project.el is loaded ...
(set (make-local-variable 'ispell-personal-dictionary)
- (expand-file-name "senf.dict" ccide-project-root))
+ (expand-file-name "tools/senf.dict" ccide-project-root))
(flyspell-cc-mode)
(defun senf-new-file-hook ()
# Create Doxyfile.local otherwise doxygen will barf on this non-existent file
# Create it even when cleaning, to silence the doxygen builder warnings
-if not os.path.exists("Doxyfile.local"):
- Execute(Touch("Doxyfile.local"))
+if not os.path.exists("doclib/Doxyfile.local"):
+ Execute(Touch("doclib/Doxyfile.local"))
if not env.GetOption('clean') and not os.path.exists(".prepare-stamp") \
and not os.environ.get("SCONS") and COMMAND_LINE_TARGETS != [ 'prepare' ]:
###########################################################################
# Define build targets
-#### doc
-env.Depends(SENFSCons.Doxygen(env), env.Value(env['ENV']['REVISION']))
-
#### libsenf.a
libsenf = env.Library("$LOCALLIBDIR/${LIBSENF}${LIBADDSUFFIX}", env['ALLOBJECTS'])
env.Default(libsenf)
""".replace("\n"," ") ])
### lcov
-env.Alias('lcov', env.AlwaysBuild(
- env.Command( [ env.Dir('doc/lcov'), 'lcov.info' ], [], [
+env.PhonyTarget('lcov', [], [
'$SCONS debug=1 CCFLAGS+="-fprofile-arcs -ftest-coverage" LIBS+="gcov" all_tests',
'$LCOV --directory . --capture --output-file /tmp/senf_lcov.info --base-directory .',
'$LCOV --output-file ${TARGETS[1]} --remove /tmp/senf_lcov.info \\*/include/\\*',
'$GENHTML --output-directory ${TARGETS[0]} --title all_tests ${TARGETS[1]}',
- 'rm /tmp/senf_lcov.info' ])))
+ 'rm /tmp/senf_lcov.info' ])
#### clean
env.Clean('all', '.prepare-stamp')
env.Clean('all', libsenf)
-env.Clean('all', env.Dir('linklint')) # env.Dir to disambiguate from linklint PhonyTarget
env.Clean('all', env.Dir('dist'))
env.Clean('all', 'lcov.info')
env.Replace(
LOCAL_CONFIG_FILES = [ '/Doxyfile.local', '/SConscript.local', '/senf/local_config.hh' ],
DPKG_IGNORED_FILES = [ '$LOCAL_CONFIG_FILES', '.svn', '.git', '.gitignore', '/_templates',
- '/TODO', '.project', '.cproject', '.dir.el', '/project.el' ],
+ '/TODO', '.project', '.cproject', '.dir.el', '/.project.el' ],
DPKG_IGNORED_FILES_OPTS = dpkgIgnoredFilesOpts,
BUILDPACKAGE_COMMAND = "dpkg-buildpackage -us -uc -rfakeroot $DPKG_IGNORED_FILES_OPTS",
)
! /logo-head.png
/search.php
/search_paths.php
+/Doxyfile.local
@INCLUDE = "$(TOPDIR)/doclib/Doxyfile.global"
-INPUT = . doclib
+INPUT = .
PROJECT_NAME = Overview
PROJECT_NUMBER = "(Version $(REVISION))"
HTML_HEADER = $(TOPDIR)/doclib/doxy-header.html
HTML_FOOTER = $(TOPDIR)/doclib/doxy-footer.html
-@INCLUDE = "$(TOPDIR)/Doxyfile.local"
+@INCLUDE = "$(TOPDIR)/doclib/Doxyfile.local"
env.Clean('all_docs', 'doxy-header.html') # I should not need this but I do ...
env.Install('${DOCINSTALLDIR}', 'index.html')
+
+env.Depends(SENFSCons.Doxygen(env, output_directory="../doc"), env.Value(env['ENV']['REVISION']))
includes.append(p)
return ( sources, testSources, includes )
-def Doxygen(env, doxyfile = "Doxyfile", extra_sources = []):
+def Doxygen(env, doxyfile = "Doxyfile", extra_sources = [], output_directory = "doc"):
# There is one small problem we need to solve with this builder: The Doxygen builder reads
# the Doxyfile and thus depends on the environment variables set by site_scons/lib/doxygen.sh.
# We thus have to provide all necessary definitions here manually via DOXYENV !
module = doxyfile.dir.get_path(env.Dir('#')).replace('/','_')
if module == '.' : module = "Main"
+ # Standard doc build vars and opts
+ def vars(env=env, **kw):
+ denv = { 'TOPDIR' : env.Dir('#').abspath,
+ 'LIBDIR' : env.Dir('#/site_scons/lib').abspath,
+ 'output_dir' : '$OUTPUT_DIRECTORY',
+ 'html_dir' : 'html',
+ 'html' : 'NO' }
+ denv.update(kw)
+ return { 'DOXYENV' : denv,
+ 'MODULE' : module,
+ 'OUTPUT_DIRECTORY': output_directory };
+ opts = [ '--tagfile-name', '"${MODULE}.tag"',
+ '--output-dir', '$OUTPUT_DIRECTORY' ]
+
# Rule to generate tagfile
# (need to exclude the 'clean' case, otherwise we'll have duplicate nodes)
if not env.GetOption('clean'):
- tagfile = env.Doxygen(doxyfile,
- DOXYOPTS = [ '--tagfile-name', '"${MODULE}.tag"',
- '--tagfile' ],
- DOXYENV = { 'TOPDIR' : env.Dir('#').abspath,
- 'LIBDIR' : env.Dir('#/site_scons/lib').abspath,
- 'output_dir' : 'doc',
- 'html_dir' : 'html',
- 'html' : 'NO',
- 'generate_tagfile': 'doc/${MODULE}.tag' },
- MODULE = module )
+ tagfile = env.Doxygen(doxyfile, DOXYOPTS = opts + [ '--tagfile' ],
+ **vars(generate_tagfile = 'doc/${MODULE}.tag'))
env.Append(ALL_TAGFILES = [ tagfile[0].abspath ])
env.Depends(tagfile, [ env.File('#/site_scons/lib/doxygen.sh'),
env.File('#/site_scons/lib/tag-munge.xsl') ])
tagfile[0])
# Rule to generate HTML documentation
- doc = env.Doxygen(doxyfile,
- DOXYOPTS = [ '--tagfiles', '"$ALL_TAGFILES"',
- '--tagfile-name', '"${MODULE}.tag"',
- '--html' ],
- MODULE = module,
- DOXYENV = { 'TOPDIR' : env.Dir('#').abspath,
- 'LIBDIR' : env.Dir('#/site_scons/lib').abspath,
- 'tagfiles' : '${ALL_TAGFILES}',
- 'output_dir' : 'doc',
- 'html_dir' : 'html',
- 'html' : 'YES' } )
+ doc = env.Doxygen(doxyfile, DOXYOPTS = opts + [ '--tagfiles', '"$ALL_TAGFILES"', '--html' ],
+ **vars(html = 'YES'))
env.Depends(doc, [ env.File('#/site_scons/lib/doxygen.sh'),
env.File('#/site_scons/lib/html-munge.xsl') ])
# Create relative path from absolute directory $1 to absolute path $2
relpath()
{
- local src="${1#/}"
- local dst="${2#/}"
+ local src="`abspath "$1"`" # `"
+ local dst="`abspath "$2"`" # `"
+ src="${src#/}"
+ dst="${dst#/}"
while true; do
if [ -z "$src" -a -z "$dst" ]; then
echo "Internal error in relpath()" 1>&2