summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Arndt2019-11-25 16:19:05 +0100
committerChristopher Arndt2019-11-25 16:19:05 +0100
commit8ab7ece72c39ef44b9053cb96f15411a02c1721e (patch)
tree8bd5b2ca782aece02467f12c83a8108d2b41c404
parent55676234983d0e2e7eccd9cb8359fadb43640e77 (diff)
downloadaur-helm-git.tar.gz
Fix compilation with GCC >= 9.x; fix VST binary install dir
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
-rw-r--r--.SRCINFO4
-rw-r--r--ChangeLog9
-rw-r--r--PKGBUILD22
-rw-r--r--juce-gcc.diff150
4 files changed, 177 insertions, 8 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 2cda5b0be810..b05a32729854 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = helm-git
pkgdesc = a cross-platform, polyphonic synthesizer LV2 and VST plugin
pkgver = 0.9.0.r1897.abdedd52
- pkgrel = 1
+ pkgrel = 2
url = http://tytel.org/helm/
changelog = ChangeLog
arch = i686
@@ -20,7 +20,9 @@ pkgbase = helm-git
provides = helm
conflicts = helm
source = helm::git+https://github.com/mtytel/helm.git
+ source = juce-gcc.diff
md5sums = SKIP
+ md5sums = 2495dfc19287544c0ac87dae3837b3be
pkgname = helm-git
diff --git a/ChangeLog b/ChangeLog
index 08c542886121..eff70e09bdde 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,14 @@
+2019-11-25 Christopher Arndt <aur -at- chrisarndt -dot- de>
+ * 0.9.0.r1897.abdedd52-2
+ Added patch to fix JUCE compilation error with GCC >= 9.x
+ Install VST binary into /usr/lib/vst instead of /usr/lib/lxvst
+
2018-07-17 Christopher Arndt <aur -at- chrisarndt -dot- de>
* 0.9.0.r1897.abdedd52-1
- Removed absolete 'prepare' function from PKGBUILD.
+ Removed obsolete 'prepare' function from PKGBUILD.
Removed obsolete dependency on 'steinberg-vst36'.
Removed obsolete extra CXXFLAGS.
- Added depencies 'curl' 'hicolor-icon-theme' and 'libxinerama'.
+ Added dependencies 'curl' 'hicolor-icon-theme' and 'libxinerama'.
2017-07-11 Christopher Arndt <aur -at- chrisarndt -dot- de>
* 0.9.0.r1876.927d2ed2-1
diff --git a/PKGBUILD b/PKGBUILD
index 04c6e3d05e82..c8f76b93d2b7 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -3,7 +3,7 @@
_pkgname=helm
pkgname="${_pkgname}-git"
pkgver=0.9.0.r1897.abdedd52
-pkgrel=1
+pkgrel=2
pkgdesc="a cross-platform, polyphonic synthesizer LV2 and VST plugin"
arch=('i686' 'x86_64')
url="http://tytel.org/helm/"
@@ -13,8 +13,10 @@ depends=('alsa-lib' 'curl' 'freetype2' 'hicolor-icon-theme' 'mesa' 'libxinerama'
makedepends=('git')
provides=("${_pkgname}")
conflicts=("${_pkgname}")
-source=("${_pkgname}::git+https://github.com/mtytel/helm.git")
-md5sums=('SKIP')
+source=("${_pkgname}::git+https://github.com/mtytel/helm.git"
+ 'juce-gcc.diff')
+md5sums=('SKIP'
+ '2495dfc19287544c0ac87dae3837b3be')
changelog=ChangeLog
@@ -25,6 +27,12 @@ pkgver() {
echo "${ver}.r$(git rev-list --count HEAD).$(git rev-parse --short HEAD)"
}
+prepare() {
+ cd "${srcdir}/${_pkgname}"
+
+ patch -p1 -N -i "${srcdir}"/juce-gcc.diff
+}
+
build() {
cd "${srcdir}/${_pkgname}"
@@ -34,6 +42,10 @@ build() {
package() {
cd "${srcdir}/${_pkgname}"
- make CONFIG=Release PREFIX="/usr" DESTDIR="$pkgdir" install
- install -D builds/linux/VST/build/helm.so "$pkgdir/usr/lib/vst/helm.so"
+ make \
+ CONFIG=Release \
+ PREFIX="/usr" \
+ DESTDIR="$pkgdir" \
+ VSTDIR="$pkgdir/usr/lib/vst" \
+ install
}
diff --git a/juce-gcc.diff b/juce-gcc.diff
new file mode 100644
index 000000000000..7f10a2b54229
--- /dev/null
+++ b/juce-gcc.diff
@@ -0,0 +1,150 @@
+diff --git a/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h b/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
+index 4b1ba87d..e5437730 100644
+--- a/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
++++ b/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
+@@ -107,22 +107,9 @@ public:
+
+ //==============================================================================
+ forcedinline uint8 getAlpha() const noexcept { return components.a; }
+- forcedinline uint8 getRed() const noexcept { return components.r; }
++ forcedinline uint8 getRed() const noexcept { return components.r; }
+ forcedinline uint8 getGreen() const noexcept { return components.g; }
+- forcedinline uint8 getBlue() const noexcept { return components.b; }
+-
+- #if JUCE_GCC
+- // NB these are here as a workaround because GCC refuses to bind to packed values.
+- forcedinline uint8& getAlpha() noexcept { return comps [indexA]; }
+- forcedinline uint8& getRed() noexcept { return comps [indexR]; }
+- forcedinline uint8& getGreen() noexcept { return comps [indexG]; }
+- forcedinline uint8& getBlue() noexcept { return comps [indexB]; }
+- #else
+- forcedinline uint8& getAlpha() noexcept { return components.a; }
+- forcedinline uint8& getRed() noexcept { return components.r; }
+- forcedinline uint8& getGreen() noexcept { return components.g; }
+- forcedinline uint8& getBlue() noexcept { return components.b; }
+- #endif
++ forcedinline uint8 getBlue() const noexcept { return components.b; }
+
+ //==============================================================================
+ /** Copies another pixel colour over this one.
+@@ -342,9 +329,6 @@ private:
+ {
+ uint32 internal;
+ Components components;
+- #if JUCE_GCC
+- uint8 comps[4]; // helper struct needed because gcc does not allow references to packed union members
+- #endif
+ };
+ }
+ #ifndef DOXYGEN
+@@ -429,13 +413,9 @@ public:
+
+ //==============================================================================
+ forcedinline uint8 getAlpha() const noexcept { return 0xff; }
+- forcedinline uint8 getRed() const noexcept { return r; }
++ forcedinline uint8 getRed() const noexcept { return r; }
+ forcedinline uint8 getGreen() const noexcept { return g; }
+- forcedinline uint8 getBlue() const noexcept { return b; }
+-
+- forcedinline uint8& getRed() noexcept { return r; }
+- forcedinline uint8& getGreen() noexcept { return g; }
+- forcedinline uint8& getBlue() noexcept { return b; }
++ forcedinline uint8 getBlue() const noexcept { return b; }
+
+ //==============================================================================
+ /** Copies another pixel colour over this one.
+@@ -652,11 +632,9 @@ public:
+
+ //==============================================================================
+ forcedinline uint8 getAlpha() const noexcept { return a; }
+- forcedinline uint8& getAlpha() noexcept { return a; }
+-
+- forcedinline uint8 getRed() const noexcept { return 0; }
++ forcedinline uint8 getRed() const noexcept { return 0; }
+ forcedinline uint8 getGreen() const noexcept { return 0; }
+- forcedinline uint8 getBlue() const noexcept { return 0; }
++ forcedinline uint8 getBlue() const noexcept { return 0; }
+
+ //==============================================================================
+ /** Copies another pixel colour over this one.
+diff --git a/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h b/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
+index 9ac3ae20..1863ca89 100644
+--- a/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
++++ b/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
+@@ -582,18 +582,10 @@ namespace EdgeTableFillers
+ : destData (image), sourceColour (colour)
+ {
+ if (sizeof (PixelType) == 3 && destData.pixelStride == sizeof (PixelType))
+- {
+ areRGBComponentsEqual = sourceColour.getRed() == sourceColour.getGreen()
+ && sourceColour.getGreen() == sourceColour.getBlue();
+- filler[0].set (sourceColour);
+- filler[1].set (sourceColour);
+- filler[2].set (sourceColour);
+- filler[3].set (sourceColour);
+- }
+ else
+- {
+ areRGBComponentsEqual = false;
+- }
+ }
+
+ forcedinline void setEdgeTableYPos (int y) noexcept
+@@ -675,7 +667,6 @@ namespace EdgeTableFillers
+ const Image::BitmapData& destData;
+ PixelType* linePixels;
+ PixelARGB sourceColour;
+- PixelRGB filler[4];
+ bool areRGBComponentsEqual;
+
+ forcedinline PixelType* getPixel (int x) const noexcept
+@@ -690,46 +681,11 @@ namespace EdgeTableFillers
+
+ forcedinline void replaceLine (PixelRGB* dest, PixelARGB colour, int width) const noexcept
+ {
+- if (destData.pixelStride == sizeof (*dest))
+- {
+- if (areRGBComponentsEqual) // if all the component values are the same, we can cheat..
+- {
+- memset (dest, colour.getRed(), (size_t) width * 3);
+- }
+- else
+- {
+- if (width >> 5)
+- {
+- auto intFiller = reinterpret_cast<const int*> (filler);
+-
+- while (width > 8 && (((pointer_sized_int) dest) & 7) != 0)
+- {
+- dest->set (colour);
+- ++dest;
+- --width;
+- }
+-
+- while (width > 4)
+- {
+- auto d = reinterpret_cast<int*> (dest);
+- *d++ = intFiller[0];
+- *d++ = intFiller[1];
+- *d++ = intFiller[2];
+- dest = reinterpret_cast<PixelRGB*> (d);
+- width -= 4;
+- }
+- }
+-
+- while (--width >= 0)
+- {
+- dest->set (colour);
+- ++dest;
+- }
+- }
+- }
++ if ((size_t) destData.pixelStride == sizeof (*dest) && areRGBComponentsEqual)
++ memset ((void*) dest, colour.getRed(), (size_t) width * 3); // if all the component values are the same, we can cheat..
+ else
+ {
+- JUCE_PERFORM_PIXEL_OP_LOOP (set (colour))
++ JUCE_PERFORM_PIXEL_OP_LOOP (set (colour));
+ }
+ }
+