[oe-commits] [meta-openembedded] 35/50: juce: Added support for JUCE framework

git at git.openembedded.org git at git.openembedded.org
Fri Jul 29 09:10:49 UTC 2016


martin_jansa pushed a commit to branch master
in repository meta-openembedded.

commit 3bbc28d7c76cf0a8aab18096420d0b52209103c7
Author: eu at felipetonello.com <eu at felipetonello.com>
AuthorDate: Mon Jul 18 20:46:31 2016 +0100

    juce: Added support for JUCE framework
    
    See below for the official README from JUCE.
    
    For TL;DRs: JUCE is a well known and widely used C++ Framework for audio
    applications. It has good support for Linux and ARM.
    
    A typical JUCE application recipe will only contain this skeleton:
    
    inherit juce
    
    SRC_URI = "..."
    
    JUCE_JUCERS = "${B}/cool-project.jucer"
    
    do_compile() {
      CONFIG=Release oe_runmake
    }
    
    do_install() {
      install ...
    }
    
    ======
    
    OBS: This recipe requires a patch[1] on oe-core which is been tested right now.
    
    [1] http://lists.openembedded.org/pipermail/openembedded-core/2016-July/123972.html
    
    ======
    
    >From the README:
    
    JUCE (Jules' Utility Class Extensions) is an all-encompassing
    C++ framework for developing cross-platform software.
    
    It contains pretty much everything you're likely to need to create
    most applications, and is particularly well-suited for building
    highly-customised GUIs, and for handling graphics and sound.
    
    Most JUCE modules are shared under the GNU Public Licence
    (GPLv2, v3, and the AGPLv3). This means that the code can
    be freely copied and distributed, and costs nothing to use
    in other GPL applications. One module (the juce_core module)
    is permissively licensed under the ISC.
    
    For more information, visit the website:
    http://www.juce.com
    
    Signed-off-by: Felipe F. Tonello <eu at felipetonello.com>
    Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
---
 meta-multimedia/classes/juce.bbclass               | 37 ++++++++++++++++++++++
 .../juce/nativesdk-projucer_git.bb                 |  2 ++
 .../recipes-multimedia/juce/projucer-native_git.bb |  2 ++
 .../recipes-multimedia/juce/projucer.inc           | 37 ++++++++++++++++++++++
 4 files changed, 78 insertions(+)

diff --git a/meta-multimedia/classes/juce.bbclass b/meta-multimedia/classes/juce.bbclass
new file mode 100644
index 0000000..ac97ca3
--- /dev/null
+++ b/meta-multimedia/classes/juce.bbclass
@@ -0,0 +1,37 @@
+inherit pkgconfig
+
+JUCE_X11_DEPS = "libx11 libxext libxinerama libxinerama libxrandr libxcursor freetype"
+JUCE_DEPS = " \
+  ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${JUCE_X11_DEPS}', '', d)} \
+  alsa-lib \
+  curl \
+"
+DEPENDS_prepend = "projucer-native ${JUCE_DEPS} "
+
+export OE_JUCE_PROJUCER = "${STAGING_BINDIR_NATIVE}/Projucer"
+
+juce_do_configure() {
+  if [ -z "${JUCE_JUCERS}" ]; then
+    JUCERS=`find . -type f -iname "*.jucer"` && IFS=$'\n'
+  else
+    JUCERS="${JUCE_JUCERS}"
+  fi
+
+  if [ -z "$JUCERS" ]; then
+    die "JUCE_JUCERS not set and no profiles found in $PWD"
+  fi
+
+  # XXX: Hack for Projucer, since it requires a X Display even when running in
+  # console mode. This will be fixed in future. Most cases DISPLAY=:0 will just work,
+  # the only case why we have JUCE_DISPLAY variable, is in case of a build system,
+  # such as jenkins, that can have multiple virtual X server running for each build.
+  test -z "${JUCE_DISPLAY}" && export DISPLAY=:0 || export DISPLAY=${JUCE_DISPLAY}
+
+  for i in $JUCERS; do
+    ${OE_JUCE_PROJUCER} --resave $i
+  done
+}
+
+EXPORT_FUNCTIONS do_configure
+
+addtask configure after do_unpack do_patch before do_compile
diff --git a/meta-multimedia/recipes-multimedia/juce/nativesdk-projucer_git.bb b/meta-multimedia/recipes-multimedia/juce/nativesdk-projucer_git.bb
new file mode 100644
index 0000000..93b23b1
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/juce/nativesdk-projucer_git.bb
@@ -0,0 +1,2 @@
+inherit nativesdk
+include projucer.inc
diff --git a/meta-multimedia/recipes-multimedia/juce/projucer-native_git.bb b/meta-multimedia/recipes-multimedia/juce/projucer-native_git.bb
new file mode 100644
index 0000000..b919a7d
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/juce/projucer-native_git.bb
@@ -0,0 +1,2 @@
+inherit native
+include projucer.inc
diff --git a/meta-multimedia/recipes-multimedia/juce/projucer.inc b/meta-multimedia/recipes-multimedia/juce/projucer.inc
new file mode 100644
index 0000000..6f696e2
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/juce/projucer.inc
@@ -0,0 +1,37 @@
+SUMMARY = "JUCE's Projucer"
+DESCRIPTION = "Projucer is used to build and generate support files and build infrastructure for all \
+JUCE supported platforms, including Linux and Embedded Linux."
+SECTION = "utils"
+HOMEPAGE = "http://juce.com/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://README.txt;md5=9ab765ccda8890efc753f287911a1958"
+
+inherit pkgconfig
+
+DEPENDS = "libx11 libxext libxinerama libxrandr libxcursor freetype alsa-lib curl"
+
+SRCREV = "a8a7fa28e2e9cb19db6a27fcccb567a8ccfe6109"
+BRANCH = "develop"
+SRC_URI = "git://github.com/julianstorer/JUCE.git;protocol=https;branch=${BRANCH}"
+
+S = "${WORKDIR}/git"
+PV = "4.2.3+git${SRCPV}"
+
+JUCE_PROJUCER_BUILD_PATH = "${B}/extras/Projucer/Builds"
+JUCE_PROJUCER_MAKEFILE_PATH = "${JUCE_PROJUCER_BUILD_PATH}/LinuxMakefile"
+JUCE_PROJUCER = "${JUCE_PROJUCER_MAKEFILE_PATH}/build/Projucer"
+
+do_configure() {
+  cd ${JUCE_PROJUCER_MAKEFILE_PATH}
+  CONFIG=Release oe_runmake clean
+}
+
+do_compile() {
+  cd ${JUCE_PROJUCER_MAKEFILE_PATH}
+  CONFIG=Release oe_runmake
+}
+
+do_install() {
+  install -d ${D}${bindir}
+  install -m 0755 ${JUCE_PROJUCER} ${D}${bindir}
+}

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list