X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senfscons%2FMainpage.dox;fp=senfscons%2FMainpage.dox;h=0000000000000000000000000000000000000000;hb=d33cd468d4ece7c0c98270b4d1a9858e5a94510d;hp=85ea790079004d00a24c590194e155b8cbe6d2c8;hpb=8a3a987daec0028a9e41abd09c187948c8cb393c;p=senf.git diff --git a/senfscons/Mainpage.dox b/senfscons/Mainpage.dox deleted file mode 100644 index 85ea790..0000000 --- a/senfscons/Mainpage.dox +++ /dev/null @@ -1,241 +0,0 @@ -// $Id$ -// -// Copyright (C) 2007 -// Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY -// Stefan Bund -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the -// Free Software Foundation, Inc., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -namespace senfscons { - -/** \mainpage The Senf Build Environment - - The Senf Build Environment is based on the SCons software - construction tool. SCons is a python based replacement for - \c make. SENFScons consists of several SCons builders as well as some global configuration and - build utilities. SENFScons tightly integrates the Boost.Test unit testing framework. It - also incorporates a very flexible infrastructure to build software documentation using Doxygen. This infrastructure uses quite a bit - of pre- and postprocessing (which is integrated with the provided Doxygen builder) to fix some - doxygen problems and generate a (IMHO) more readable layout. - - \autotoc - - \section senfutil_overview Building Projects using SENF - - When building projects using senf, SENFSCons has a very simple helper module \ref senfutil to - make the building of libraries utilizing senf simpler: - \code - import sys - sys.path.extend(('senf/senfscons','/usr/lib/senf/senfscons')) - import os.path, glob, senfutil - - env = Environment() - - senfutil.SetupForSENF( env ) - - env.Append( - - LIBS = [ ], - CXXFLAGS = [ '-Wall', '-Woverloaded-virtual' ], - LINKFLAGS = [ ], - - CXXFLAGS_debug = [ ], - LINKFLAGS_debug = [ ], - LOGLEVELS_debug = [ 'senf::log::Debug||VERBOSE' ], - - CXXFLAGS_final = [ '-O3' ], - LINKFLAGS_final = [ ], - LOGLEVELS_final = [ ], - - SENF_BUILDOPTS = [ ], - - ) - - env.Default( - env.Program( target = 'udpforward', - source = glob.glob('*.cc') ) - ) - - env.Clean(DEFAULT_TARGETS, [ 'udpforward.log', 'udpforward.pid' ]) - \endcode - - This example builds a simple binary from a number of source files (all '.cc' files). It links - against the SENF library and automatically sets all the correct compiler options using - senfutil.SetupForSENF( env ). - - This script automatically uses a SENF installation either symlinked or imported into the current - project in directory 'senf' or, if this directory does not exist, a globaly installed SENF. A - locally installed SENF is automatically recompiled if needed. Parallel building is also - supported. - - This script automatically supports the \c final and \c LOGLEVELS command line parameters. The - LOGLEVELS parameter uses a much more readable syntax than SENF_LOG_CONF: -
-    $ scons -j2 final=1 \
-          LOGLEVELS='senf::log::Debug||IMPORTANT myapp::Transactions|mytrans::Area|VERBOSE'
-    
- - \section senfscons_intro Introduction to the SENFSCons build system - - Here we give an overview on how SENF itself is built. The SENFSCons system aims to be quite - flexible at separates SENF specific tasks from generic tasks to facilitate reuse. - - \subsection senfscons_layout The Project Layout - - The SENFSCons infrastructure will always use a consistent directory layout. The top-level - directory will contain one subdirectory for every module. The main target will often be - considered to be just another module using the facilities provided by library modules. - - The top-level project directory must contain the SENFSCons module in 'senfscons'. - - The top-level \c SConstruct file will set up the global project configuration (which libraries - are used etc) and will then automatically load all module \c SConscript files. - - Documentation is generated per module. This simplifies reusing modules in other projects. The - framework however semi-automatically creates the necessary cross-reference information to - cross-link the different module documentations. The unit-tests as well are run on a per-module - basis. - - \subsection senfscons_buildconf Standard Build Configuration - - When the \c SConsctruct and \c SConscript files are build using the default SENFSCons helpers, - by default all libraries and binaries are built. Some additional targets are - -
scons all_tests
Build all unit tests
- -
scons all_docs
Build documentation of all modules
- -
scons all
Build all targets including binaries, libraries, documentation, - tests and possible further targets
- -
scons -u doc
Run from within a module directory will build the - documentation of that module
- -
scons -u test
Run from within a module directory will build and run the - unit test of that module
- - To clean any of the targets use the SCons \c -c parameter. - - The build environment can be configured \e locally using \ref sconfig in the project root - directory. - - \see - \ref sconstruct \n - \ref sconscript \n - \ref sconfig \n - \ref builder - */ - -/** \page sconstruct The Top-Level 'SConstruct' File - - The top-level \c SConstruct file sets up the build, configures used libraries and parameters and - invokes the module \c SConscript files. To simplify the configuration, the SENFScons python - package is provided. This package has helper utilities to simplify standard tasks. - - In \c senfscons/SConstruct.template you may find an example SConstruct file. Copy this to the - project root (under the name \c SConstruct) to start a new project. You can then modify and - configure it to your wishes. - - The general structure of the \c SConstruct file is - \li make the \c senfscons directory accessible - \li tell the SENFScons infrastructure, which frameworks you intend to use and let SENFScons - built a construction environment for you - \li configure the construction environment - \li load module sconscript file - \li specify global build targets - - The first part, making the \c senfscons directory accessible will always stay the - same. See the template file for how this is done. - - Simplifying the use of more complex frameworks is one of the most important things why - SENFScons exists. If you only use very simple libraries, the configuration is quite - simple. However for more complex frameworks the configuration can get quite complicated. This is - simplified using the SENFScons framework statements. They all reside in the \c SENFSCons package - and have a prefix of \c Use. See \ref use. - - After all frameworks are configured, you can use SEFNScons.MakeEnvironment() to create a - correctly configured construction environment. - - To configure the construction environment you can set Variables in the construction - environment. See the SCons manpage for a list of supported variables. Some additional variables - are available with the new builders introduced with SENFSCons. Those are documented with the - builder module documentation. - - Loading the module \c SConscript files will normally always be performed the same way - using \c glob.glob() to automatically include any subdirectory module. - - You may then specify global build targets. You can use standard SCons targets or use all - the target helpers provided with SENFSCons. Two standard helpers should always be included: - SENFSCons.StandardTargets() and SENFSCons.GlobalTargets(). You can find more target helpers at - \ref target - - The SConstruct file is an ordinary python file. It is loaded by SCons prior to building the - software. Just remember, you can use all of python and all of SCons here. SENFScons just - provides some additional helpers to make things simpler and more concise. - - \see - \ref use \n - \ref target - */ - -/** \page sconscript The Module 'SConscript' Files - - Every module (that is subdirectory) is built by that modules \c SConscript file. In \c - SConscript.template you can find a template of such a file. - - Every \c SConscript file starts by importing the construction environment. The \c SConscript - file is an ordinary \c SConscript file as used by SCons. You may use any of the SCons facilities - to define targets. However, you will mostly use the \ref target. - - Every \c SConscript file should call \c SENFSCons.StandardTargets() to initialize the standard - targets of every module. - - \see - \ref target - */ - -/** \page sconfig The 'SConfig' File - - To configure the build environment to the local environment, a \c SConfig file may be created in - the projects root directory. The supported parameters are - -
-
\c CXX
-
C++ compiler to use
-
\c EXTRA_DEFINES
-
preprocessor symbols to be defined locally
-
\c EXTRA_LIBS
-
additional libraries needed for a local build
-
- - Additionally, the \ref use define additional configuration variables which may be set here. - */ - -} - - -// Local Variables: -// mode: c++ -// fill-column: 100 -// c-file-style: "senf" -// indent-tabs-mode: nil -// ispell-local-dictionary: "american" -// mode: flyspell -// mode: auto-fill -// End: