mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-15 14:26:33 +01:00
c8bdca3a87
fix build to use default gcc toolchain which fixes link errors associated with building against mismatched libstd++ patch vendored juice library to remove packed attributes which cause compile errors but add static asserts to verify that the struct / class layouts are identical regardless of attribute
55 lines
2.4 KiB
Diff
55 lines
2.4 KiB
Diff
diff --git a/thirdparty/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h b/thirdparty/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
|
|
index 69a66e4..3e50635 100644
|
|
--- a/thirdparty/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
|
|
+++ b/thirdparty/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
|
|
@@ -111,18 +111,10 @@ public:
|
|
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
|
|
|
|
//==============================================================================
|
|
/** Copies another pixel colour over this one.
|
|
@@ -336,21 +328,22 @@ private:
|
|
uint8 b, g, r, a;
|
|
#endif
|
|
#endif
|
|
- } JUCE_PACKED;
|
|
+ };
|
|
+
|
|
+ // structure must be packed but using the packed attribute causes compile
|
|
+ // failures with newer c++ compilers. Verify default packing produces same layout
|
|
+ static_assert(sizeof(Components) == 4, "Components struct is not packed");
|
|
|
|
union
|
|
{
|
|
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
|
|
- JUCE_PACKED
|
|
-#endif
|
|
-;
|
|
+};
|
|
+
|
|
+// class must be packed but using the packed attribute causes compile
|
|
+// failures with newer c++ compilers. Verify default packing produces same layout
|
|
+static_assert(sizeof(PixelARGB) == 4, "PixelARGB class is not packed");
|
|
|
|
|
|
//==============================================================================
|