[SCM] juce/master: Debian specifics

umlaeute at users.alioth.debian.org umlaeute at users.alioth.debian.org
Thu Feb 11 13:06:48 UTC 2016


The following commit has been merged in the master branch:
commit 965556e1341a4e14d876b1ea8e93206377882121
Author: IOhannes m zmölnig <zmoelnig at umlautQ.umlaeute.mur.at>
Date:   Thu Feb 11 14:06:26 2016 +0100

    Debian specifics

diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 0000000..1141dee
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,76 @@
+JUCE for Debian
+===============
+
+upstream's preferred form of usage of JUCE is to include a verbatim copy of all
+used JUCE modules in your appication.
+This is made explicit in the 'Introjucer', 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.
+
+[1] https://wiki.debian.org/StaticLinking
+
+
+# Introjucer 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 'Introjucer' as Debian
+packages while keeping your embedded-module-code workflow:
+ - juce-utils (contains the Introjucer)
+ - juce-modules-source (contains the source-code for the JUCE modules)
+
+The 'Introjucer' 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 Introjucer *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.
+
+You could recreate the Makefiles by running the project's .jucer file through
+Debian's "Introjucer" (the so-generated Makefiles allow both overriding of
+*FLAGS and building verbosely), but adding 'juce-utils' to the Build-Depends is
+probably an overkill.
+

-- 
juce packaging



More information about the pkg-multimedia-commits mailing list