From: g0dil Date: Wed, 30 Jan 2008 00:18:59 +0000 (+0000) Subject: debian: Add README.Debian file to all packages X-Git-Url: http://g0dil.de/git?a=commitdiff_plain;h=fd5677c5ebf2035148fe1d5b970514edef82e3fd;p=senf.git debian: Add README.Debian file to all packages debian: Optimize build process (compile in build stage not in binary stage) git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@642 270642c3-0616-0410-b53a-bc976706d245 --- diff --git a/HowTos/NewPacket/Mainpage.dox b/HowTos/NewPacket/Mainpage.dox index 4f52f0d..289007c 100644 --- a/HowTos/NewPacket/Mainpage.dox +++ b/HowTos/NewPacket/Mainpage.dox @@ -715,8 +715,8 @@ GREPacket.hh: \code - #ifndef GRE_PACKET_HH - #define GRE_PACKET_HH + #ifndef HH_GREPacket_ + #define HH_GREPacket_ #include @@ -934,7 +934,7 @@ documentation of all the packet parser macros. \ref parseint, \n \ref parsecollection There are several lists of available - reusable packet parsers: . However, this list is not complete as there are other protocol + reusable packet parsers. However, these lists are not complete as there are other protocol specific reusable parsers (without claiming to be exhaustive: senf::INet4AddressParser, senf::INet6AddressParser, senf::MACAddressParser) @@ -951,6 +951,5 @@ // indent-tabs-mode: nil // ispell-local-dictionary: "american" // compile-command: "scons -u doc" -// mode: flyspell // mode: auto-fill // End: diff --git a/README b/README index 472daf2..974c9c8 100644 --- a/README +++ b/README @@ -18,10 +18,4 @@ The main goals of this library are (in no particular order): - extensible design - concise interface -Getting started ---------------- - -Information on using the library including some extensively documented -examples are found in the 'libsenf-doc' package. - -- Stefan Bund Tue, 28 Aug 2007 10:02:23 +0200 diff --git a/SConstruct b/SConstruct index f3c42d7..7c35fcf 100644 --- a/SConstruct +++ b/SConstruct @@ -191,14 +191,14 @@ SENFSCons.StandardTargets(env) SENFSCons.GlobalTargets(env) SENFSCons.Doxygen(env) SENFSCons.DoxyXRef(env, - HTML_HEADER = '#/doclib/doxy-header-overview.html', + HTML_HEADER = '#/doclib/doxy-header.html', HTML_FOOTER = '#/doclib/doxy-footer.html') SENFSCons.InstallIncludeFiles(env, [ 'config.hh' ]) # Build combined library 'libsenf' libsenf = env.Library( - SENFSCons.LibPath(env['LIBSENF']), + 'senf${LIBADDSUFFIX}', Flatten([ env.File(SENFSCons.LibPath(lib)).sources for lib in env['ALLLIBS'] ])) env.Default(libsenf) env.Clean('all', libsenf) @@ -225,7 +225,7 @@ PhonyTarget(env, 'debsrc', [ PhonyTarget(env, 'debbin', [ checkLocalConf, updateRevision, - "$BUILDPACKAGE_COMMAND -b -nc", + "$BUILDPACKAGE_COMMAND -b", "fakeroot ./debian/rules debclean" ]) diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000..437aa3d --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,30 @@ + +Th SENF debian distribution consists of the following packages: + + libsenf non-debug static library /usr/lib/libsenf.a + /usr/lib/senf-packets/ + + libsenf-dbg debug static library /usr/lib/libsenf_g.a + /usr/lib/debug/senf-packets/ + + libsenf-dev include files /usr/include/senf + + libsenf-doc documentation /usr/share/doc/libsenf-doc/ + + +So to develop using SENF, you will need 'libsenf-dev' and one of +'libsenf' or 'libsenf-dbg' however, you will probably want to install +both, 'libsenf' and 'libsenf-dbg'. + +To compile an application against the debug library, just link against +the libsenf_g.a library. + +To compile an application against the non-debug library, link against +libsenf.a AND ENSURE, THE PREPROCESSOR SYMBOL 'SENF_NO_DEBUG' IS +DEFINED in your build, best by adding '-DSENF_NO_DEBUG' to CPPFLAGS. + +Lets repeat that: + + VERY IMPORTANT: When building against libsenf.a, you MUST define + SENF_NO_DEBUG. Don't say, you haven't been warned ... + diff --git a/debian/control b/debian/control index 033d006..d8d9fc6 100644 --- a/debian/control +++ b/debian/control @@ -34,8 +34,9 @@ Section: libdevel Architecture: all Depends: binutils-dev, libboost-dev, libboost-regex-dev, libboost-date-time-dev, libboost-thread-dev, - libboost-filesystem-dev, libsenf | libsenf-dbg -Recommends: libsenf, libsenf-dbg + libboost-filesystem-dev, libsenf (=${binary:Version}) | libsenf-dbg (=${binary:Version}) +Recommends: libsenf (=${binary:Version}), libsenf-dbg (=${binary:Version}) +Suggests: libsenf-doc (=${binary:Version}) Description: SENF Extensible Network Framework, header files The SENF Simple and Extensible Network Framework aims to be a complete set of libraries to facilitate the development of network diff --git a/debian/libsenf-dbg.install b/debian/libsenf-dbg.install index 31d8f7f..b943a57 100644 --- a/debian/libsenf-dbg.install +++ b/debian/libsenf-dbg.install @@ -1,3 +1,4 @@ debian/tmp/usr/lib/libsenf_g.a -debian/tmp/usr/lib/*.o usr/lib/debug/senf-packets +debian/tmp/usr/lib/debug/*.o usr/lib/debug/senf-packets README usr/share/doc/libsenf-dbg +debian/README.Debian usr/share/doc/libsenf-dbg diff --git a/debian/libsenf-dev.install b/debian/libsenf-dev.install index 692c39a..f40b4aa 100644 --- a/debian/libsenf-dev.install +++ b/debian/libsenf-dev.install @@ -5,3 +5,4 @@ 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 +debian/README.Debian usr/share/doc/libsenf-dev diff --git a/debian/libsenf-doc.install b/debian/libsenf-doc.install index 4e4f96c..d87d3c5 100644 --- a/debian/libsenf-doc.install +++ b/debian/libsenf-doc.install @@ -1,3 +1,4 @@ debian/tmp/usr/share/doc/libsenf-doc -README usr/share/doc/libsenf-doc debian/index.html usr/share/doc/libsenf-doc +README usr/share/doc/libsenf-doc +debian/README.Debian usr/share/doc/libsenf-doc diff --git a/debian/libsenf.install b/debian/libsenf.install index f573e00..812eee7 100644 --- a/debian/libsenf.install +++ b/debian/libsenf.install @@ -1,3 +1,4 @@ debian/tmp/usr/lib/libsenf.a debian/tmp/usr/lib/*.o usr/lib/senf-packets README usr/share/doc/libsenf +debian/README.Debian usr/share/doc/libsenf diff --git a/debian/rules b/debian/rules index 4d2782e..7820942 100755 --- a/debian/rules +++ b/debian/rules @@ -50,26 +50,49 @@ configure-stamp: # by 'scons deb' and 'scons debsrc' touch configure-stamp -build: #build-arch build-indep +build: build-arch build-indep -build-arch: build-arch-$(LIBTYPE)-stamp -build-arch-$(LIBTYPE)-stamp: configure-stamp +build-arch: build-arch-final build-arch-debug + +build-arch-final: build-arch-final-stamp +build-arch-final-stamp: configure-stamp +# Add here commands to compile the arch part of the package. + scons -j $(CONCURRENCY_LEVEL) default final=1 + scons $(destdir)/usr/lib final=1 PREFIX='$(destdir)/usr' + touch $@ + +build-arch-debug: build-arch-debug-stamp +build-arch-debug-stamp: configure-stamp # Add here commands to compile the arch part of the package. - scons -j $(CONCURRENCY_LEVEL) default $(SCONS_OPTIONS) + scons -j $(CONCURRENCY_LEVEL) default LIBADDSUFFIX=_g OBJADDSUFFIX=_g + scons $(destdir)/usr/lib LIBADDSUFFIX=_g OBJADDSUFFIX=_g \ + PREFIX='$(destdir)/usr' OBJINSTALLDIR='$$LIBINSTALLDIR/debug' touch $@ build-indep: build-indep-stamp build-indep-stamp: configure-stamp # Add here commands to compile the indep part of the package. scons -j $(CONCURRENCY_LEVEL) all_docs + scons all_docs scons linklint scons fixlinks + scons $(destdir)/usr/include $(destdir)/usr/share/doc $(SCONS_OPTIONS) \ + PREFIX='$(destdir)/usr' \ + 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 \ + dir="$(destdir)/usr/share/doc/libsenf-doc/examples/$$(dirname "$$src")"; \ + mkdir -p "$$dir"; \ + cp "Examples/$$src" "$$dir"; \ + done touch $@ clean: debclean # Add here commands to clean up after the build process. -scons -c all - -scons -c all LIBSENF=senf_g + -scons -c all LIBADDSUFFIX=_g OBJADDSUFFIX=_g debclean: dh_testdir @@ -77,36 +100,24 @@ debclean: rm -f build-arch-*-stamp build-indep-stamp configure-stamp dh_clean -install: #install-indep install-arch +install: install-arch install-indep install-indep: build-indep dh_testdir dh_testroot - dh_clean -k -i + dh_clean -k -i -Xdebian/tmp dh_installdirs -i # Add here commands to install the indep part of the package into # debian/-doc. - scons $(destdir)/usr/include $(destdir)/usr/share/doc $(SCONS_OPTIONS) \ - PREFIX='$(destdir)/usr' \ - 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 \ - dir="$(destdir)/usr/share/doc/libsenf-doc/examples/$$(dirname "$$src")"; \ - mkdir -p "$$dir"; \ - cp "Examples/$$src" "$$dir"; \ - done dh_install -X.svn -i install-arch: build-arch dh_testdir dh_testroot - dh_clean -k -s - dh_installdirs # options provided by DH_OPTIONS + dh_clean -k -s -Xdebian/tmp + dh_installdirs -s # Add here commands to install the arch part of the package into # debian/tmp. - scons $(destdir)/usr/lib $(SCONS_OPTIONS) PREFIX='$(destdir)/usr' - dh_install -X.svn # options provided by DH_OPTIONS + dh_install -X.svn -s # Must not depend on anything. This is to be called by # binary-arch/binary-indep @@ -143,24 +154,7 @@ binary-common: binary-indep: build-indep install-indep $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common -binary-arch: binary-arch-final binary-arch-debug - -binary-arch-final: - $(MAKE) -f debian/rules \ - DH_OPTIONS="-s -Nlibsenf-dbg" \ - SCONS_OPTIONS="final=1" \ - LIBTYPE="final" \ - binary-arch-common - -binary-arch-debug: - $(MAKE) -f debian/rules \ - DH_OPTIONS="-plibsenf-dbg" \ - SCONS_OPTIONS="LIBSENF=senf_g" \ - LIBTYPE="debug" \ - binary-arch-common - -binary-arch-common: build-arch install-arch - $(MAKE) -f debian/rules DH_OPTIONS="$(DH_OPTIONS)" binary-common +binary-arch: build-arch install-arch binary: binary-arch binary-indep .PHONY: build clean binary-indep binary-arch binary install install-indep install-arch \ diff --git a/senfscons/SENFSCons.py b/senfscons/SENFSCons.py index b6703ed..b10f2b4 100644 --- a/senfscons/SENFSCons.py +++ b/senfscons/SENFSCons.py @@ -300,7 +300,7 @@ def GlobalTargets(env): ## \brief Return path of a built library within $LOCALLIBDIR # \internal -def LibPath(lib): return '$LOCALLIBDIR/lib%s.a' % lib +def LibPath(lib): return '${LOCALLIBDIR}/${LIBPREFIX}%s${LIBADDSUFFIX}${LIBSUFFIX}' % lib ## \brief Build object files # @@ -342,7 +342,7 @@ def Objects(env, sources, testSources = None, LIBS = [], OBJECTS = [], no_includ target = 'test', objects = objects, test_sources = testSources, - LIBS = LIBS, + LIBS = [ x + '$LIBADDSUFFIX' for x in LIBS ], OBJECTS = OBJECTS, DEPENDS = [ env.File(LibPath(x)) for x in LIBS ]) env.Alias('all_tests', test) @@ -609,7 +609,7 @@ def Object(env, target, sources, testSources = None, LIBS = [], OBJECTS = [], no objects = Objects(env,sources,testSources,LIBS=LIBS,OBJECTS=OBJECTS) ob = None if objects: - ob = env.Command(target+".o", objects, "ld -r -o $TARGET $SOURCES") + ob = env.Command(target+"${OBJADDSUFFIX}${OBJSUFFIX}", objects, "ld -r -o $TARGET $SOURCES") env.Default(ob) env.Alias('default', ob) InstallWithSources(env, ob, '$OBJINSTALLDIR', sources, testSources, no_includes) @@ -630,7 +630,7 @@ def Binary(env, binary, sources, testSources = None, LIBS = [], OBJECTS = [], no program = None if objects: progEnv = env.Copy() - progEnv.Prepend(LIBS = LIBS) + progEnv.Prepend(LIBS = [ x + '$LIBADDSUFFIX' for x in LIBS ]) program = progEnv.ProgramNoScan(target=binary,source=objects+OBJECTS) env.Default(program) env.Depends(program, [ env.File(LibPath(x)) for x in LIBS ])