X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Mainpage.dox;h=049d80cdd272c2d120bc003cfaae22f5888ba2d2;hb=b89e3166f7680755683dccee5e48cb3a820185c0;hp=7aa5ca3f6201d70d2130c431d08b37e53a63fb51;hpb=be33ff96c5b89738694da272d8610564cce48bfb;p=senf.git diff --git a/Mainpage.dox b/Mainpage.dox index 7aa5ca3..049d80c 100644 --- a/Mainpage.dox +++ b/Mainpage.dox @@ -84,6 +84,16 @@ The library is only tested with gcc-3.4 and 4.0 on Linux. On other POSIX platforms with a BSD Socket API, the library should be usable, possibly with some tweaking (except for the Scheduler, which relies on \c epoll) + + \section senf_compiler_options Compiler and Linker Options + + If SENF is compiled in debug mode (SENF_DEBUG is defined), exception messages will automatically + include a stack backtrace. For this to work, you need to add the -rdynamic option to all link + commands. This feature depends on gcc and the GNU-libc. + + It is very important that both the SENF library and the application using it are compiled + \e both either with or without this compiler switch (-DSENF_DEBUG). Otherwise, the compiler will + emit error messages which might be hard to debug. */ /** \page senf_build Building the SENF framework @@ -141,49 +151,29 @@ svn:externals for this) or a symbolic link to your SENF checkout. \code - import os.path, glob + import glob env = Environment( - LIBS = [ 'senf', 'iberty', 'boost_regex', 'boost_iostreams' ], + LIBS = [ 'senf', 'boost_regex', 'boost_iostreams' ], CXXFLAGS = [ '-Wall', '-Woverloaded-virtual', '-Wno-long-long' ], ) - # If we have a symbolic link 'senf' pointing to our own senf build, use it (and assume - # it's in debug mode) - if os.path.exists('senf'): - print "\nUsing SENF in 'senf'\n" - env.Append( - - CPPDEFINES = [ 'SENF_DEBUG' ], - LIBPATH = [ 'senf' ], - CPPPATH = [ 'senf/include' ], - CXXFLAGS = [ '-O0', '-g', '-fno-inline' ], - LINKFLAGS = [ '-g', '-rdynamic' ], - - ) - env.Execute([ 'scons -C senf libsenf.a' ]) - else: - print "\nUsing system installed SENF\n" - - # replace 'mytarget' with the name of your target executable env.Program( target = 'mytarget', source = glob.glob('*.cc'), ); \endcode - This script automatically set's up the build correctly when using a self-compiled SENF in debug - mode (which is the default mode): - \li It links in all the required libraries in the correct order: First \c libsenf, then the - other needed libraries \c liberty, \c libboost_regex and \c libboost_iostreams. - \li It defines the SENF_DEBUG preprocessor symbol correctly - \li It correctly sets the include and library path - \li It adds sensible debug flags - \li It adds -rdynamic to the link command. This is needed to get a nice backtrace from - exceptions. - \li It automatically rebuilds SENF if needed + When building against a self-built SENF which will probably be in debug mode, the '-DSENF_DEBUG' + option must be added to the compile command. + + The most simple way to build using SENF is to use a very simple SCons helper which automatically + supports debug and final builds, uses SENF either centrally installed or locally built and has + some other nice features. See Building Projects using SENF + for more info and an example for this utility. \see \ref senf_components \n \ref senf_overview @@ -199,7 +189,7 @@ \section libPPI libPPI: Packet Processing Infrastructure The Packet Processing Infrastructure implements a modular framework for implementing packet - oriented network applications. The library provides a larget set of pre-defined modules as well + oriented network applications. The library provides a large set of pre-defined modules as well as the necessary helpers to implement application specific processing modules. \see libPPI API reference @@ -238,7 +228,7 @@ \li senf::intrusive_refcount to simplify the implementation of classes usable with boost::intrusive_ptr \li boost::bind extensions - \li An interface to the \c g++ demangler integrated with type_info + \li An interface to the \c g++ de-mangler integrated with type_info \li Typedefs and rudimentary methods to simplify handling high-resolution time values \see libUtils API reference @@ -286,7 +276,7 @@ \li To interpret low level network packets, use the Packets library. This library will provide efficient and convenient access to all protocol fields. It supports parsing as well as - modifying and creating packets. It has default support for the most important internet + modifying and creating packets. It has default support for the most important Internet protocols and is highly extensible with new protocols. \li Go over the Utils library. It contains small helpers to simplify tasks like daemonization, exception handling, debugging and so on. @@ -401,6 +391,7 @@ */ +// :vim:textwidth=100 // Local Variables: // mode: c++ // fill-column: 100