summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJP Cimalando2019-11-24 06:15:40 +0100
committerJP Cimalando2019-11-24 06:15:40 +0100
commit14a9080c55ceb57428903b1608f2c8d91ab9650f (patch)
treedc5c74a1adeb9b6f40c9c8ff258ce24b23e4d048
parentc32a6879d41cc5917325c0270b231e56352af174 (diff)
downloadaur-14a9080c55ceb57428903b1608f2c8d91ab9650f.tar.gz
Add the JUCE patch for gcc9
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD9
-rw-r--r--juce-gcc9.patch151
3 files changed, 160 insertions, 4 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 3d18a7220cb4..401436cc8a62 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = hybridreverb2-git
pkgdesc = Hybrid impulse convolution reverb, available as LV2 and VST
pkgver = r92.6beac8e
- pkgrel = 1
+ pkgrel = 2
url = https://github.com/jpcima/HybridReverb2
arch = i686
arch = x86_64
@@ -23,9 +23,11 @@ pkgbase = hybridreverb2-git
source = git+https://github.com/jpcima/HybridReverb2.git
source = git+https://github.com/jpcima/JUCE.git
source = RIR-1.0.0.zip::https://github.com/jpcima/HybridReverb2-impulse-response-database/archive/v1.0.0.zip
+ source = juce-gcc9.patch
sha256sums = SKIP
sha256sums = SKIP
sha256sums = 8ada57a590e6b04c272312874c67656ccf7e3de71b2cc7dbaadf53880fb77fd7
+ sha256sums = 52b9e65cd0f2bf55b9f32b66bcec292d8d537d157c26e6cf8fb5b1d9c5b39640
pkgname = hybridreverb2-git
diff --git a/PKGBUILD b/PKGBUILD
index 7578997e93f8..dc36e70058e0 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -3,7 +3,7 @@ pkgname=hybridreverb2-git
_pkgname=HybridReverb2
pkgver=r92.6beac8e
_rirver=1.0.0
-pkgrel=1
+pkgrel=2
epoch=
pkgdesc="Hybrid impulse convolution reverb, available as LV2 and VST"
arch=('i686' 'x86_64')
@@ -23,11 +23,13 @@ install=
changelog=
source=("git+https://github.com/jpcima/$_pkgname.git"
"git+https://github.com/jpcima/JUCE.git"
- "RIR-$_rirver.zip::https://github.com/jpcima/HybridReverb2-impulse-response-database/archive/v$_rirver.zip")
+ "RIR-$_rirver.zip::https://github.com/jpcima/HybridReverb2-impulse-response-database/archive/v$_rirver.zip"
+ 'juce-gcc9.patch')
noextract=("RIR-$_rirver.zip")
sha256sums=('SKIP'
'SKIP'
- '8ada57a590e6b04c272312874c67656ccf7e3de71b2cc7dbaadf53880fb77fd7')
+ '8ada57a590e6b04c272312874c67656ccf7e3de71b2cc7dbaadf53880fb77fd7'
+ '52b9e65cd0f2bf55b9f32b66bcec292d8d537d157c26e6cf8fb5b1d9c5b39640')
validpgpkeys=()
pkgver() {
@@ -40,6 +42,7 @@ prepare() {
git submodule init
git config submodule.Thirdparty/JUCE.url "$srcdir"/JUCE
git submodule update
+ patch -Np1 -i "$srcdir"/juce-gcc9.patch -d Thirdparty/JUCE
}
build() {
diff --git a/juce-gcc9.patch b/juce-gcc9.patch
new file mode 100644
index 000000000000..864ca289ef09
--- /dev/null
+++ b/juce-gcc9.patch
@@ -0,0 +1,151 @@
+diff --git a/modules/juce_graphics/colour/juce_PixelFormats.h b/modules/juce_graphics/colour/juce_PixelFormats.h
+index c57ad53c635..934c61c4781 100644
+--- a/modules/juce_graphics/colour/juce_PixelFormats.h
++++ b/modules/juce_graphics/colour/juce_PixelFormats.h
+@@ -107,22 +107,9 @@ class JUCE_API PixelARGB
+
+ //==============================================================================
+ 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.
+@@ -341,9 +328,6 @@ class JUCE_API PixelARGB
+ {
+ 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
+@@ -428,13 +412,9 @@ class JUCE_API PixelRGB
+
+ //==============================================================================
+ 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.
+@@ -651,11 +631,9 @@ class JUCE_API PixelAlpha
+
+ //==============================================================================
+ 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/modules/juce_graphics/native/juce_RenderingHelpers.h b/modules/juce_graphics/native/juce_RenderingHelpers.h
+index b8137ac4d04..10bd64e1459 100644
+--- a/modules/juce_graphics/native/juce_RenderingHelpers.h
++++ b/modules/juce_graphics/native/juce_RenderingHelpers.h
+@@ -577,18 +577,10 @@ namespace EdgeTableFillers
+ : destData (image), sourceColour (colour)
+ {
+ if (sizeof (PixelType) == 3 && (size_t) 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
+@@ -670,7 +662,6 @@ namespace EdgeTableFillers
+ const Image::BitmapData& destData;
+ PixelType* linePixels;
+ PixelARGB sourceColour;
+- PixelRGB filler[4];
+ bool areRGBComponentsEqual;
+
+ forcedinline PixelType* getPixel (int x) const noexcept
+@@ -685,47 +676,10 @@ namespace EdgeTableFillers
+
+ forcedinline void replaceLine (PixelRGB* dest, PixelARGB colour, int width) const noexcept
+ {
+- if ((size_t) destData.pixelStride == sizeof (*dest))
+- {
+- if (areRGBComponentsEqual) // if all the component values are the same, we can cheat..
+- {
+- memset ((void*) 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));
+ }
+
+ forcedinline void replaceLine (PixelAlpha* dest, const PixelARGB colour, int width) const noexcept