diff options
author | Christopher Arndt | 2019-11-25 16:19:05 +0100 |
---|---|---|
committer | Christopher Arndt | 2019-11-25 16:19:05 +0100 |
commit | 8ab7ece72c39ef44b9053cb96f15411a02c1721e (patch) | |
tree | 8bd5b2ca782aece02467f12c83a8108d2b41c404 | |
parent | 55676234983d0e2e7eccd9cb8359fadb43640e77 (diff) | |
download | aur-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-- | .SRCINFO | 4 | ||||
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | PKGBUILD | 22 | ||||
-rw-r--r-- | juce-gcc.diff | 150 |
4 files changed, 177 insertions, 8 deletions
@@ -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 @@ -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));
+ }
+ }
+
|