From 6e83935ab889a55f24bc5f9cbce178b8c09664f6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Thu, 9 Nov 2017 14:15:50 +0100 Subject: [PATCH] Updated README.Debian --- debian/README.Debian | 67 ++++++++------------------------------------ 1 file changed, 12 insertions(+), 55 deletions(-) diff --git a/debian/README.Debian b/debian/README.Debian index fbce8631..8c6619be 100644 --- a/debian/README.Debian +++ b/debian/README.Debian @@ -7,25 +7,8 @@ This is made explicit in the 'Projucer', JUCE's own software project management workbench, that will copy (or symlink, or include otherwise) the modules' source code into your project. -For various reasons, Debian frowns upon static linking for distributed packages -and instead encourages dynamic linking (see [1] for a discussion). - -Therefore, JUCE for Debian is built as a library ("libjuce") that has all -(possible) features enabled. -Debian packages of software that uses JUCE are encouraged to use this library. - -Developers who write their own JUCE-based applications will most likely not be -able to use libjuce/libjuce-dev directly without concessions to the -portability of their projects. - - -[1] https://wiki.debian.org/StaticLinking - - # Projucer for Debian -If you are developing your own JUCE application, you are of course free to -follow upstream's advice. Installing the following packages will give you the 'Projucer' as Debian packages while keeping your embedded-module-code workflow: - juce-tools (contains the Projucer) @@ -34,48 +17,22 @@ packages while keeping your embedded-module-code workflow: The 'Projucer' as shipped with Debian has the following modification regarding the once shipped by upstream: -- The generated project Makefile will honour external *FLAGS (e.g. CXXFLAGS) by - appending them to the internally used JUCE_*FLAGS. - - $ make CPPFLAGS="-Wdate-time -D_FORTIFY_SOURCE=2" - -- The generated project Makefile will allow verbose builds (showing you the - actualy compiler/linker invocation) - - $ make V=1 - -- The Projucer *itself* is linked against libjuce, rather than including the - modules statically. (Though you will hopefully never notice a difference here) - - - # Debian packages that depend on JUCE This is a quick guideline for packaging upstream software that uses JUCE for Debian. -- Build-Depend on 'libjuce-dev'. - -- Patch the project's (generated) Linux/Makefile: - - Remove all references to the juce-modules from OBJECTS. - AFAICT, these are the lines starting with "$(OBJDIR)/juce_". - - For "Release" builds: - - Add "$(shell pkg-config --cflags juce)" to the projects CFLAGS - - Add "$(shell pkg-config --libs juce)" to the projects LDFLAGS - (as a bonus, you can now remove *most* explicitly mentioned libraries, - e.g. "-lX11") - - For "Debug" builds use 'juce-dbg' instead of 'juce', but you probably don't - want Debug builds anyhow... - - -### Notes on *FLAGS -you are probably aware that JUCE Makefiles override your -CPPFLAGS/CFLAGS/CXXFLAGS/LDFLAGS, making it hard to apply hardening flags. -I usually prefix these flags with JUCE_ (e.g. "CPPFLAGS" becomes -"JUCE_CPPFLAGS") and then append the external flag ("$(CPPFLAGS)") to these. +- Build-Depend on 'juce-modules-source' +- Add 'Built-Using: juce-modules-source (= <>)' to debian/control + (replace '<>' with the actual version of 'juce-modules-source', as + obtained with -You could recreate the Makefiles by running the project's .jucer file through -Debian's "Projucer" (the so-generated Makefiles allow both overriding of -*FLAGS and building verbosely), but adding 'juce-tools' to the Build-Depends is -probably an overkill. + dpkg-query --show --showformat='${source:Version}' juce-modules-source +- If needed, dynamically link against the following libraries (as + "juce-modules-source" does not include their sources (as opposed to upstream): + - libjpeg + - libpng + - libflac + - libogg + - libvorbis -- 2.30.2