From: g0dil Date: Mon, 3 Sep 2007 15:23:17 +0000 (+0000) Subject: Add 'include/senf' directory X-Git-Url: http://g0dil.de/git?a=commitdiff_plain;h=739eecfbeffc911e700660864ff1d7f05c6283d0;p=senf.git Add 'include/senf' directory Provide additional include files for socket protocols Socket: Change UDP socket handle to bind instead of connect if given an address argument. git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@425 270642c3-0616-0410-b53a-bc976706d245 --- diff --git a/Examples/DVBAdapter/MPEdec.cc b/Examples/DVBAdapter/MPEdec.cc index 50ecf3c..b32417e 100644 --- a/Examples/DVBAdapter/MPEdec.cc +++ b/Examples/DVBAdapter/MPEdec.cc @@ -29,15 +29,13 @@ #include #include -#include "../../Scheduler/Scheduler.hh" -#include "../../Packets/DefaultBundle/EthernetPacket.hh" -#include "../../Packets/MPEGDVBBundle/DatagramSection.hh" -#include "../../Utils/membind.hh" -#include "../../Utils/hexdump.hh" -#include "../../Socket/Protocols/DVB/DVBDemuxHandles.hh" -#include "../../Packets/ParseInt.hh" -#include "../../Packets/Packet.hh" -#include "../../Packets/PacketData.hh" +#include +#include +#include +#include +#include +#include +#include #define PID 500 diff --git a/Examples/DVBAdapter/ULEdec.cc b/Examples/DVBAdapter/ULEdec.cc index 64e79a7..3c1de25 100644 --- a/Examples/DVBAdapter/ULEdec.cc +++ b/Examples/DVBAdapter/ULEdec.cc @@ -26,9 +26,9 @@ #include #include -#include "../../Packets/PacketData.hh" -#include "../../Utils/hexdump.hh" -#include "../../Utils/membind.hh" +#include +#include +#include #define PID 271 #define TRANSPORT_PACKET_SIZE 188 diff --git a/Examples/DVBAdapter/ULEdec.hh b/Examples/DVBAdapter/ULEdec.hh index 1cb705f..c6dc738 100644 --- a/Examples/DVBAdapter/ULEdec.hh +++ b/Examples/DVBAdapter/ULEdec.hh @@ -22,10 +22,10 @@ // Definition of non-inline non-template functions -#include "../../Scheduler/Scheduler.hh" -#include "../../Packets/MPEGDVBBundle/TransportPacket.hh" -#include "../../Packets/MPEGDVBBundle/SNDUPacket.hh" -#include "../../Socket/Protocols/DVB/DVBDemuxHandles.hh" +#include +#include +#include +#include class ULEdec diff --git a/Examples/DVBAdapter/frontend.cc b/Examples/DVBAdapter/frontend.cc index 6e3afb2..185991f 100644 --- a/Examples/DVBAdapter/frontend.cc +++ b/Examples/DVBAdapter/frontend.cc @@ -22,7 +22,7 @@ #include #include -#include "../../Socket/Protocols/DVB/DVBFrontendHandle.hh" +#include #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// diff --git a/Examples/MCSniffer/MCSniffer.cc b/Examples/MCSniffer/MCSniffer.cc index c6c32a3..252734d 100644 --- a/Examples/MCSniffer/MCSniffer.cc +++ b/Examples/MCSniffer/MCSniffer.cc @@ -29,11 +29,11 @@ #include #include #include -#include "../../Socket/Protocols/INet/UDPSocketHandle.hh" -#include "../../Scheduler/Scheduler.hh" -#include "../../Packets/DefaultBundle/EthernetPacket.hh" -#include "../../Utils/membind.hh" -#include "../../Utils/hexdump.hh" +#include +#include +#include +#include +#include //#include "MCSniffer.mpp" diff --git a/Examples/RateStuffer/Mainpage.dox b/Examples/RateStuffer/Mainpage.dox index 65fe3cc..95864eb 100644 --- a/Examples/RateStuffer/Mainpage.dox +++ b/Examples/RateStuffer/Mainpage.dox @@ -64,7 +64,7 @@ Above image depicts the module setup implementing the rate stuffer. A senf::ppi::module::ActiveSocketReader reads the incoming UDP packets and sends them into a - senf::ppi::module::PassiveQueue. + senf::ppi::module::PassiveQueue (via a senf::ppi::module::ThrottleBarrier). The \a queue feeds the packets into a senf::ppi::module::PriorityJoin. The CloneSource \a generator is fed as second input into the \a join to provide the stuffing packets. @@ -74,6 +74,14 @@ ensures that read requests of the RateStuffer's input are always serviced, either from the \a queue or, if the \a queue output is throttled, from the \a generator. + The \a barrier is not strictly necessary. However, it makes the behavior of the RateStuffer + predictable in the case where packets need to be dropped. Without the + senf::ppi::module::ThrottleBarrier, the packets will be left in the kernel socket queue. Packets + will only start to be dropped when that queue fills up. The size of this queue cannot be easily + manipulated and it's initial size is immense. So to stop the kernel queue from filling up with + increasingly out-of-date packets, we add the \a barrier which will explicitly read and drop + excess packets. + \section code Example code \dontinclude ratestuffer.cc @@ -82,7 +90,7 @@ \skip Custom \skip #include - \until Setup + \until PPI We also define some namespace aliases @@ -104,8 +112,8 @@ \until } The event is initialized to fire eery \a interval nanoseconds. The traffic is routed 'across' - the timer which controls the traffic. The timer is then registered to call - RateFilter::timeout(). + the timer which controls the traffic. This routing lets the module automatically handle + throttling events. The timer is registered to call RateFilter::timeout(). \until } @@ -113,8 +121,10 @@ and forwarded to \a output. This is all there is to the RateFilter module. Due to the routing setup, the timer will - automatically be disabled if either \a input or \a output become throttled (which is not even - needed here). + automatically be disabled should either \a input or \a output become throttled. However, in this + specific case this should never happen: The \a input is connected (via the \a join) to the + senf::ppi::module::CloneSource, which will never throttle. The \a output is connected to a UDP + socket which also never throttles. \subsection ratestuffer The RateStuffer subnet @@ -144,7 +154,7 @@ generator and set the timing \a interval of the \a rateFilter. The \a input and \a output connector references are bound to the corresponding connectors we - want to expose: \a input to the \a queue's \a input and \a output to the \a rateStuffer's \a + want to expose: \a input to the \a barrier's \a input and \a output to the \a rateFilter's \a output. \until }; @@ -153,7 +163,7 @@ discipline of the \a queue. This Completes the RateStuffer. This subnetwork can now be used like a module. - \subsection main Connecting the modules + \subsection main Application setup The applications main() method starts out by initializing the socket handles diff --git a/Examples/RateStuffer/ratestuffer.cc b/Examples/RateStuffer/ratestuffer.cc index 5217801..9ae6bc9 100644 --- a/Examples/RateStuffer/ratestuffer.cc +++ b/Examples/RateStuffer/ratestuffer.cc @@ -27,19 +27,8 @@ //#include "ppitest.ih" // Custom includes -#include "../../Socket/Protocols/INet/UDPSocketHandle.hh" -#include "../../Socket/Protocols/INet/ConnectedUDPSocketHandle.hh" -#include "../../Socket/Protocols/INet/INetAddressing.hh" -#include "../../PPI/SocketReader.hh" -#include "../../PPI/SocketWriter.hh" -#include "../../PPI/Module.hh" -#include "../../PPI/IntervalTimer.hh" -#include "../../PPI/Joins.hh" -#include "../../PPI/ThrottleBarrier.hh" -#include "../../PPI/PassiveQueue.hh" -#include "../../PPI/Queueing.hh" -#include "../../PPI/CloneSource.hh" -#include "../../PPI/Setup.hh" +#include +#include //#include "ppitest.mpp" #define prefix_ @@ -136,8 +125,8 @@ public: int main(int argc, char * argv[]) { - senf::UDPv4ClientSocketHandle inputSocket; - inputSocket.bind(senf::INet4SocketAddress("0.0.0.0:44344")); + senf::UDPv4ClientSocketHandle inputSocket( + senf::INet4SocketAddress("0.0.0.0:44344")); senf::ConnectedUDPv4ClientSocketHandle outputSocket( senf::INet4SocketAddress("localhost:44345")); diff --git a/Examples/RateStuffer/ratestuffer.dia b/Examples/RateStuffer/ratestuffer.dia index 866ab2e..1abf803 100644 Binary files a/Examples/RateStuffer/ratestuffer.dia and b/Examples/RateStuffer/ratestuffer.dia differ diff --git a/Examples/Sniffer/Sniffer.cc b/Examples/Sniffer/Sniffer.cc index 1d60837..8c384ff 100644 --- a/Examples/Sniffer/Sniffer.cc +++ b/Examples/Sniffer/Sniffer.cc @@ -29,11 +29,11 @@ #include #include #include -#include "../../Socket/Protocols/Raw/PacketSocketHandle.hh" -#include "../../Scheduler/Scheduler.hh" -#include "../../Utils/membind.hh" -#include "../../Utils/hexdump.hh" -#include "../../Packets/DefaultBundle/EthernetPacket.hh" +#include +#include +#include +#include +#include //#include "Sniffer.mpp" #define prefix_ diff --git a/Examples/TCPClientServer/client.cc b/Examples/TCPClientServer/client.cc index 83fbde6..8d87483 100644 --- a/Examples/TCPClientServer/client.cc +++ b/Examples/TCPClientServer/client.cc @@ -24,8 +24,7 @@ // Custom includes #include #include -#include "../../Socket/Protocols/INet/TCPSocketHandle.hh" -#include "../../Socket/Protocols/INet/INetAddressing.hh" +#include int main(int argc, char const * argv[]) { diff --git a/Examples/TCPClientServer/server.cc b/Examples/TCPClientServer/server.cc index ef9f7ef..0504948 100644 --- a/Examples/TCPClientServer/server.cc +++ b/Examples/TCPClientServer/server.cc @@ -28,11 +28,9 @@ // Custom includes #include #include -#include "../../Scheduler/Scheduler.hh" -#include "../../Utils/membind.hh" -#include "../../Socket/Protocols/INet/TCPSocketHandle.hh" -#include "../../Socket/Protocols/INet/INetAddressing.hh" - +#include +#include +#include class Server { diff --git a/SConstruct b/SConstruct index e723e46..bcfdd21 100644 --- a/SConstruct +++ b/SConstruct @@ -77,7 +77,7 @@ def configFilesOpts(target, source, env, for_signature): return [ '-I%s' % os.path.split(f)[1] for f in env['CONFIG_FILES'] ] env.Append( - CPPPATH = [ '#' ], + CPPPATH = [ '#/include' ], LIBS = [ 'iberty', '$BOOSTREGEXLIB' ], DOXY_XREF_TYPES = [ 'bug', 'fixme', 'todo', 'idea' ], DOXY_HTML_XSL = '#/doclib/html-munge.xsl', @@ -90,6 +90,8 @@ env.Append( CONFIG_FILES_OPTS = configFilesOpts, CLEAN_PATTERNS = [ '*.pyc', 'semantic.cache', '.sconsign', '.sconsign.dblite' ], BUILDPACKAGE_COMMAND = "dpkg-buildpackage -us -uc -rfakeroot -I.svn $CONFIG_FILES_OPTS", + TOP_INCLUDES = [ 'Packets', 'PPI', 'Scheduler', 'Socket', 'Utils', + 'config.hh', 'local_config.hh' ] ) Export('env') diff --git a/debian/Socket.hh b/Socket/Protocols/DVB.hh similarity index 94% copy from debian/Socket.hh copy to Socket/Protocols/DVB.hh index 48e6e36..a0e8763 100644 --- a/debian/Socket.hh +++ b/Socket/Protocols/DVB.hh @@ -21,9 +21,9 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief Socket public header */ + \brief INet public header */ -#include "Socket/Socket.hh" +#include "DVB/DVB.hh" // Local Variables: diff --git a/Socket/Protocols/DVB/SConscript b/Socket/Protocols/DVB/SConscript index 4e77b00..ffad345 100644 --- a/Socket/Protocols/DVB/SConscript +++ b/Socket/Protocols/DVB/SConscript @@ -5,6 +5,9 @@ import SENFSCons, glob ########################################################################### +SENFSCons.AllIncludesHH(env, [ f for f in glob.glob("*.hh") + if f not in ('all_includes.hh','DVB.hh') and not f.endswith('.test.hh') ]) + sources = SENFSCons.GlobSources() allob = [] @@ -16,4 +19,6 @@ for sc in glob.glob("*/SConscript"): ob = SConscript(sc) if ob : allob.extend(ob) +SENFSCons.InstallIncludeFiles(env, [ 'DVB.hh', 'all_includes.hh' ]) + Return('allob') diff --git a/debian/Socket.hh b/Socket/Protocols/INet.hh similarity index 94% copy from debian/Socket.hh copy to Socket/Protocols/INet.hh index 48e6e36..46affc1 100644 --- a/debian/Socket.hh +++ b/Socket/Protocols/INet.hh @@ -21,9 +21,9 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief Socket public header */ + \brief INet public header */ -#include "Socket/Socket.hh" +#include "INet/INet.hh" // Local Variables: diff --git a/debian/Socket.hh b/Socket/Protocols/INet/INet.hh similarity index 91% copy from debian/Socket.hh copy to Socket/Protocols/INet/INet.hh index 48e6e36..3682fc2 100644 --- a/debian/Socket.hh +++ b/Socket/Protocols/INet/INet.hh @@ -21,9 +21,14 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief Socket public header */ + \brief INet public header */ -#include "Socket/Socket.hh" +#ifndef HH_INet_ +#define HH_INet_ 1 + +#include "all_includes.hh" + +#endif // Local Variables: diff --git a/Socket/Protocols/INet/SConscript b/Socket/Protocols/INet/SConscript index 4e77b00..a4700dd 100644 --- a/Socket/Protocols/INet/SConscript +++ b/Socket/Protocols/INet/SConscript @@ -5,6 +5,9 @@ import SENFSCons, glob ########################################################################### +SENFSCons.AllIncludesHH(env, [ f for f in glob.glob("*.hh") + if f not in ('all_includes.hh','INet.hh') and not f.endswith('.test.hh') ]) + sources = SENFSCons.GlobSources() allob = [] @@ -16,4 +19,6 @@ for sc in glob.glob("*/SConscript"): ob = SConscript(sc) if ob : allob.extend(ob) +SENFSCons.InstallIncludeFiles(env, [ 'INet.hh', 'all_includes.hh' ]) + Return('allob') diff --git a/Socket/Protocols/INet/UDPSocketHandle.cc b/Socket/Protocols/INet/UDPSocketHandle.cc index 31e7e8b..35caf99 100644 --- a/Socket/Protocols/INet/UDPSocketHandle.cc +++ b/Socket/Protocols/INet/UDPSocketHandle.cc @@ -55,7 +55,7 @@ senf::UDPv4SocketProtocol::init_client(INet4SocketAddress const & address) const { init_client(); - connect(address); + bind(address); } prefix_ std::auto_ptr senf::UDPv4SocketProtocol::clone() @@ -81,7 +81,7 @@ senf::UDPv6SocketProtocol::init_client(INet6SocketAddress const & address) const { init_client(); - connect(address); + bind(address); } prefix_ std::auto_ptr senf::UDPv6SocketProtocol::clone() diff --git a/Socket/Protocols/INet/UDPSocketHandle.hh b/Socket/Protocols/INet/UDPSocketHandle.hh index d081c39..46a7cb3 100644 --- a/Socket/Protocols/INet/UDPSocketHandle.hh +++ b/Socket/Protocols/INet/UDPSocketHandle.hh @@ -98,11 +98,10 @@ namespace senf { ProtocolClientSocketHandle::ProtocolClientSocketHandle() constructor */ void init_client(INet4SocketAddress const & address) const; - ///< Create client socket and connect - /**< Creates a new client socket and connects to the given + ///< Create client socket and bind + /**< Creates a new client socket and bind to the given address. - - \param[in] address remote address to connect to */ + \param[in] local address to bind to */ /**< \note This member is implicitly called from the ProtocolClientSocketHandle::ProtocolClientSocketHandle() constructor */ @@ -164,10 +163,9 @@ namespace senf { constructor */ void init_client(INet6SocketAddress const & address) const; ///< Create client socket and connect - /**< Creates a new client socket and connects to the given + /**< Creates a new client socket and bind to the given address. - - \param[in] address remote address to connect to */ + \param[in] local address to bind to */ /**< \note This member is implicitly called from the ProtocolClientSocketHandle::ProtocolClientSocketHandle() constructor */ diff --git a/debian/Socket.hh b/Socket/Protocols/Raw.hh similarity index 94% copy from debian/Socket.hh copy to Socket/Protocols/Raw.hh index 48e6e36..e3efa2b 100644 --- a/debian/Socket.hh +++ b/Socket/Protocols/Raw.hh @@ -21,9 +21,9 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief Socket public header */ + \brief Raw public header */ -#include "Socket/Socket.hh" +#include "Raw/Raw.hh" // Local Variables: diff --git a/debian/Socket.hh b/Socket/Protocols/Raw/Raw.hh similarity index 91% copy from debian/Socket.hh copy to Socket/Protocols/Raw/Raw.hh index 48e6e36..ef75476 100644 --- a/debian/Socket.hh +++ b/Socket/Protocols/Raw/Raw.hh @@ -21,9 +21,14 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief Socket public header */ + \brief Raw public header */ -#include "Socket/Socket.hh" +#ifndef HH_Raw_ +#define HH_Raw_ 1 + +#include "all_includes.hh" + +#endif // Local Variables: diff --git a/Socket/Protocols/Raw/SConscript b/Socket/Protocols/Raw/SConscript index 4e77b00..5e09980 100644 --- a/Socket/Protocols/Raw/SConscript +++ b/Socket/Protocols/Raw/SConscript @@ -5,6 +5,9 @@ import SENFSCons, glob ########################################################################### +SENFSCons.AllIncludesHH(env, [ f for f in glob.glob("*.hh") + if f not in ('all_includes.hh','Raw.hh') and not f.endswith('.test.hh') ]) + sources = SENFSCons.GlobSources() allob = [] @@ -16,4 +19,6 @@ for sc in glob.glob("*/SConscript"): ob = SConscript(sc) if ob : allob.extend(ob) +SENFSCons.InstallIncludeFiles(env, [ 'Raw.hh', 'all_includes.hh' ]) + Return('allob') diff --git a/Socket/Protocols/SConscript b/Socket/Protocols/SConscript index 4e77b00..c5ca1ad 100644 --- a/Socket/Protocols/SConscript +++ b/Socket/Protocols/SConscript @@ -16,4 +16,6 @@ for sc in glob.glob("*/SConscript"): ob = SConscript(sc) if ob : allob.extend(ob) +SENFSCons.InstallIncludeFiles(env, [ 'INet.hh', 'Raw.hh' ]) + Return('allob') diff --git a/config.hh b/config.hh index a0e1cbc..4ecb902 100644 --- a/config.hh +++ b/config.hh @@ -34,7 +34,7 @@ # include "local_config.hh" # ifndef SENF_ABSOLUTE_INCLUDE_PATH -# define SENF_ABSOLUTE_INCLUDE_PATH(senf_relative_include_file_path) +# define SENF_ABSOLUTE_INCLUDE_PATH(senf_relative_include_file_path) # endif # ifndef SENF_copy_n diff --git a/debian/libsenf-dev.install b/debian/libsenf-dev.install index cdb869b..3ededeb 100644 --- a/debian/libsenf-dev.install +++ b/debian/libsenf-dev.install @@ -1,13 +1,9 @@ debian/tmp/usr/lib/libsenf.a debian/tmp/usr/lib/*.o usr/lib/senf-packets -debian/tmp/usr/include/Packets usr/include/senf -debian/tmp/usr/include/PPI usr/include/senf -debian/tmp/usr/include/Scheduler usr/include/senf -debian/tmp/usr/include/Socket usr/include/senf -debian/tmp/usr/include/Utils usr/include/senf +debian/tmp/usr/include/senf usr/include boost usr/include/senf -debian/local_config.hh usr/include/senf -debian/Socket.hh usr/include/senf -debian/Packets.hh usr/include/senf -debian/PPI.hh usr/include/senf +local_config.hh usr/include/senf +include/senf/Socket.hh usr/include/senf +include/senf/Packets.hh usr/include/senf +include/senf/PPI.hh usr/include/senf README usr/share/doc/libsenf-dev diff --git a/debian/local_config.hh b/debian/local_config.hh deleted file mode 100644 index 1ee04a4..0000000 --- a/debian/local_config.hh +++ /dev/null @@ -1,2 +0,0 @@ - -#define SENF_ABSOLUTE_INCLUDE_PATH(senf_relative_include_file_path) diff --git a/debian/rules b/debian/rules index ea893a0..e6f15b4 100755 --- a/debian/rules +++ b/debian/rules @@ -68,7 +68,8 @@ install: build # # Add here commands to install the package into debian/tmp scons install_all final=1\ PREFIX='$(destdir)/usr' \ - DOCINSTALLDIR='$$PREFIX/share/doc/libsenf-doc' + DOCINSTALLDIR='$$PREFIX/share/doc/libsenf-doc' \ + INCLUDEINSTALLDIR='$$PREFIX/include/senf' # We need to install the example sourcecode find Examples \( -name "*.hh" -o -name "*.cc" \) -printf "%P\n" | \ while read src; do \ diff --git a/include/senf/PPI b/include/senf/PPI new file mode 120000 index 0000000..49d378c --- /dev/null +++ b/include/senf/PPI @@ -0,0 +1 @@ +../../PPI \ No newline at end of file diff --git a/debian/PPI.hh b/include/senf/PPI.hh similarity index 100% rename from debian/PPI.hh rename to include/senf/PPI.hh diff --git a/include/senf/Packets b/include/senf/Packets new file mode 120000 index 0000000..d84aca5 --- /dev/null +++ b/include/senf/Packets @@ -0,0 +1 @@ +../../Packets \ No newline at end of file diff --git a/debian/Packets.hh b/include/senf/Packets.hh similarity index 100% rename from debian/Packets.hh rename to include/senf/Packets.hh diff --git a/include/senf/Scheduler b/include/senf/Scheduler new file mode 120000 index 0000000..2bf96cf --- /dev/null +++ b/include/senf/Scheduler @@ -0,0 +1 @@ +../../Scheduler \ No newline at end of file diff --git a/include/senf/Socket b/include/senf/Socket new file mode 120000 index 0000000..bb3e832 --- /dev/null +++ b/include/senf/Socket @@ -0,0 +1 @@ +../../Socket \ No newline at end of file diff --git a/debian/Socket.hh b/include/senf/Socket.hh similarity index 100% rename from debian/Socket.hh rename to include/senf/Socket.hh diff --git a/include/senf/Utils b/include/senf/Utils new file mode 120000 index 0000000..71341d8 --- /dev/null +++ b/include/senf/Utils @@ -0,0 +1 @@ +../../Utils \ No newline at end of file diff --git a/include/senf/config.hh b/include/senf/config.hh new file mode 120000 index 0000000..ea97ba7 --- /dev/null +++ b/include/senf/config.hh @@ -0,0 +1 @@ +../../config.hh \ No newline at end of file diff --git a/include/senf/local_config.hh b/include/senf/local_config.hh new file mode 120000 index 0000000..cc4d9c9 --- /dev/null +++ b/include/senf/local_config.hh @@ -0,0 +1 @@ +../../local_config.hh \ No newline at end of file diff --git a/senf.dict b/senf.dict index 6ed1733..c6705d0 100644 --- a/senf.dict +++ b/senf.dict @@ -265,6 +265,7 @@ SystemException td templated ThresholdQueueing +ThrottleBarrier todo tr TruncatedPacketException diff --git a/senfscons/SENFSCons.py b/senfscons/SENFSCons.py index da20141..4245fa9 100644 --- a/senfscons/SENFSCons.py +++ b/senfscons/SENFSCons.py @@ -245,8 +245,8 @@ def MakeEnvironment(): CPPDEFINES = [ 'NDEBUG' ]) else: env.Append(CXXFLAGS = [ '-O0', '-g', '-fno-inline' ], - # The unit-test framework is not compiled with _GLIBCXX_DEBUG so this fails. - # CPPDEFINES = [ '_GLIBCXX_DEBUG', 'BOOST_REGEX_NO_LIB' ], + # The boost-regex library is not compiled with _GLIBCXX_DEBUG so this fails. + # CPPDEFINES = [ '_GLIBCXX_DEBUG' ], LINKFLAGS = [ '-g' ]) env.Append(CPPDEFINES = [ '$EXTRA_DEFINES' ],