mosra/corrade

Error building Magnum 2019.10 on FreeBSD/powerpc64

pkubaj opened this issue · 9 comments

Reporting here, because the error is about Corrade's header:

/usr/local/bin/g++9  -DCORRADE_DYNAMIC_PLUGIN -DWavAudioImporter_EXPORTS -I/wrkdirs/usr/ports/graphics/magnum/work/magnum-2019.10/src -Isrc -I/usr/local/include/AL -O2 -pipe  -fstack-protector-strong -Wl,-rpath=/usr/local/lib/gcc9  -Wl,-rpath=/usr/local/lib/gcc9 -O2 -pipe  -fstack-protector-strong -Wl,-rpath=/usr/local/lib/gcc9  -Wl,-rpath=/usr/local/lib/gcc9 -fPIC   -std=c++11 -Wall -Wextra -Wold-style-cast -Winit-self -Werror=return-type -Wmissing-declarations -pedantic -fvisibility=hidden -fvisibility-inlines-hidden -Wzero-as-null-pointer-constant -Wdouble-promotion -fno-strict-aliasing -MD -MT src/MagnumPlugins/WavAudioImporter/CMakeFiles/WavAudioImporter.dir/WavImporter.cpp.o -MF src/MagnumPlugins/WavAudioImporter/CMakeFiles/WavAudioImporter.dir/WavImporter.cpp.o.d -o src/MagnumPlugins/WavAudioImporter/CMakeFiles/WavAudioImporter.dir/WavImporter.cpp.o -c /wrkdirs/usr/ports/graphics/magnum/work/magnum-2019.10/src/MagnumPlugins/WavAudioImporter/WavImporter.cpp
In file included from /wrkdirs/usr/ports/graphics/magnum/work/magnum-2019.10/src/MagnumPlugins/WavAudioImporter/WavImporter.cpp:31:
/usr/local/include/Corrade/Utility/Endianness.h: In instantiation of 'static void Corrade::Utility::Endianness::littleEndianInPlaceInternal(T&, U& ...) [with T = const unsigned int; U = {const Magnum::Audio::Implementation::WavAudioFormat, const short unsigned int, const unsigned int, const unsigned int, const short unsigned int, const short unsigned int}]':
/usr/local/include/Corrade/Utility/Endianness.h:108:40:   required from 'static void Corrade::Utility::Endianness::littleEndianInPlace(T& ...) [with T = {const unsigned int, const Magnum::Audio::Implementation::WavAudioFormat, const short unsigned int, const unsigned int, const unsigned int, const short unsigned int, const short unsigned int}]'
/wrkdirs/usr/ports/graphics/magnum/work/magnum-2019.10/src/MagnumPlugins/WavAudioImporter/WavImporter.cpp:125:35:   required from here
/usr/local/include/Corrade/Utility/Endianness.h:127:19: error: assignment of read-only reference 'first'
  127 |             first = littleEndian(first);
      |             ~~~~~~^~~~~~~~~~~~~~~~~~~~~

The host runs FreeBSD 12.1-RELEASE (big-endian). Corrade is version 2019.10.

mosra commented

Hi again :)

This will be a bit more involved, because the importer takes a shortcut and asserts the system is LE: https://github.com/mosra/magnum/blob/31a08cf573e37e519fc03deb536d11694ff10d7c/src/MagnumPlugins/WavAudioImporter/WavImporter.cpp#L210-L211 So I need to fix that too.

Like last time, is it okay if I ping you back with a patch to test? Thank you!

Sure, I can test it.

BTW, if you want to have access to big-endian PPC for development, you can get for free a PPC64 OpenStack access (intended for open-source developers) at https://osuosl.org/services/powerdev/request_hosting/.

BTW2, IBM says that big-endian is being dropped etc. to force people to buy new hardware, but there are systems (like FreeBSD, but also Adelie Linux, Void Linux and Gentoo) that will still target big-endian PPC.

mosra commented

I think with corrade master (especially ef64471) and mosra/magnum@2ff5d32 this should be fixed. In order to test this on my (LE) machine, I added support for Big-Endian RIFX WAVs and unless I messed up something real bad, the BE support on LE platforms should also ensure LE support on BE platforms works.

Would be great if you could confirm with running corrade's UtilityEndiannessTest and magnum's WavAudioImporterTest. Thanks again!

Corrade passes all tests:

Starting Corrade::Utility::Test::EndiannessTest with 6 test cases...
Big endian system
    OK [1] endianness()
    OK [2] floats()
    OK [3] inPlace()
    OK [4] inPlaceUnaligned()
    OK [5] inPlaceList()
    OK [6] enumClass()
Finished Corrade::Utility::Test::EndiannessTest with 0 errors out of 44 checks.

But there are a number of problems with Magnum.

  1. It misses -lGL:
FAILED: Release/bin/PlatformWindowlessGlxApplicationTest
: && /usr/local/bin/g++9  -O2 -pipe  -fstack-protector-strong -Wl,-rpath=/usr/local/lib/gcc9  -Wl,-rpath=/usr/local/lib/gcc9 -O2 -pipe  -fstack-protector-strong -Wl,-rpath=/usr/local/lib/gcc9  -Wl,-rpath=/usr/local/lib/gcc9  -fstack-protector-strong -Wl,-rpath=/usr/local/lib/gcc9 -L/usr/local/lib/gcc9 src/Magnum/Platform/Test/CMakeFiles/PlatformWindowlessGlxApplicationTest.dir/WindowlessGlxApplicationTest.cpp.o  -o Release/bin/PlatformWindowlessGlxApplicationTest  -Wl,-rpath,/usr/local/poudriere/ports/default/graphics/magnum/work/.build/Release/lib:/usr/local/lib Release/lib/libMagnumWindowlessGlxApplication.a Release/lib/libMagnumGL.so.2.3 Release/lib/libMagnum.so.2.3 /usr/local/lib/libCorradeUtility.so /usr/local/lib/libGLESv2.so /usr/local/lib/libSM.so /usr/local/lib/libICE.so /usr/local/lib/libX11.so /usr/local/lib/libXext.so && :
/usr/local/bin/ld: Release/lib/libMagnumWindowlessGlxApplication.a(WindowlessGlxApplication.cpp.o): in function `Magnum::Platform::WindowlessGlxContext::WindowlessGlxContext(Magnum::Platform::WindowlessGlxContext::Configuration const&, Magnum::Platform::GLContext*)':WindowlessGlxApplication.cpp:(.text+0x68): undefined reference to `glXQueryVersion'
/usr/local/bin/ld: WindowlessGlxApplication.cpp:(.text+0xb0): undefined reference to `glXChooseFBConfig'
/usr/local/bin/ld: WindowlessGlxApplication.cpp:(.text+0xd4): undefined reference to `glXCreatePbuffer'
/usr/local/bin/ld: WindowlessGlxApplication.cpp:(.text+0xec): undefined reference to `glXGetProcAddress'
/usr/local/bin/ld: Release/lib/libMagnumWindowlessGlxApplication.a(WindowlessGlxApplication.cpp.o): in function `Magnum::Platform::WindowlessGlxContext::~WindowlessGlxContext()':WindowlessGlxApplication.cpp:(.text+0x354): undefined reference to `glXDestroyContext'
/usr/local/bin/ld: WindowlessGlxApplication.cpp:(.text+0x390): undefined reference to `glXDestroyPbuffer'
/usr/local/bin/ld: Release/lib/libMagnumWindowlessGlxApplication.a(WindowlessGlxApplication.cpp.o): in function `Magnum::Platform::WindowlessGlxContext::makeCurrent()':WindowlessGlxApplication.cpp:(.text+0x424): undefined reference to `glXMakeContextCurrent'
/usr/local/bin/ld: Release/lib/libMagnumWindowlessGlxApplication.a(OpenGLFunctionLoader.cpp.o): in function `Magnum::Platform::Implementation::OpenGLFunctionLoader::load(char const*)':OpenGLFunctionLoader.cpp:(.text+0x30): undefined reference to `glXGetProcAddressARB'
collect2: error: ld returned 1 exit status
  1. After adding manually LDFLAGS+=-lGL in my environment (this should be fixed in Magnum's files instead):
In file included from /usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp:29:
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp: In member function 'void Magnum::Audio::Test::{anonymous}::WavImporterTest::invalidFactChunk()':
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp:206:47: error: narrowing conversion of '-27' from 'int' to 'char' [-Wnarrowing]
  206 |             -27, -11, -1, -9, 24, -6, 127, -5}}),
      |                                               ^
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp: In member function 'void Magnum::Audio::Test::{anonymous}::WavImporterTest::mono8ALaw()':
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp:264:47: error: narrowing conversion of '-43' from 'int' to 'char' [-Wnarrowing]
  264 |             87, 84, 85, 85, 85, -43, -43, -43}}),
      |                                               ^
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp: In member function 'void Magnum::Audio::Test::{anonymous}::WavImporterTest::mono8MuLaw()':
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp:278:47: error: narrowing conversion of '-5' from 'int' to 'char' [-Wnarrowing]
  278 |             -5, -3, -1, -2, -1, 127, 127, 126}}),
      |                                               ^
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp: In member function 'void Magnum::Audio::Test::{anonymous}::WavImporterTest::stereo8ALaw()':
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp:340:51: error: narrowing conversion of '-43' from 'int' to 'char' [-Wnarrowing]
  340 |             -43, -43, -43, -43, -43, -43, 85, -43}}),
      |                                                   ^
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp: In member function 'void Magnum::Audio::Test::{anonymous}::WavImporterTest::stereo8MuLaw()':
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp:354:45: error: narrowing conversion of '-1' from 'int' to 'char' [-Wnarrowing]
  354 |             -1, -1, -1, -1, -1, -1, 127, -1}}),
      |                                             ^
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp: In member function 'void Magnum::Audio::Test::{anonymous}::WavImporterTest::mono32f()':
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp:407:78: error: narrowing conversion of '-103' from
'int' to 'char' [-Wnarrowing]
  407 |             0, 0, 0, 0, 108, 57, -103, 59, 3, 63, 42, 60, -33, -81, -120, 60}}),
      |                                                                              ^
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp: In member function 'void Magnum::Audio::Test::{anonymous}::WavImporterTest::mono32fBigEndian()':
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp:420:78: error: narrowing conversion of '-103' from
'int' to 'char' [-Wnarrowing]
  420 |             0, 0, 0, 0, 108, 57, -103, 59, 3, 63, 42, 60, -33, -81, -120, 60}}),
      |                                                                              ^
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp: In member function 'void Magnum::Audio::Test::{anonymous}::WavImporterTest::stereo32f()':
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp:434:46: error: narrowing conversion of '-77' from 'int' to 'char' [-Wnarrowing]
  434 |             17, -77, -103, 56, 5, 50, 72, 56}}),
      |                                              ^
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp: In member function 'void Magnum::Audio::Test::{anonymous}::WavImporterTest::stereo64f()':
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp:451:63: error: narrowing conversion of '-65' from 'int' to 'char' [-Wnarrowing]
  451 |             0, 0, 0, 0, 0, 0, 24, -65, 0, 0, 0, 0, 0, 0, 0, 0}}),
      |                                                               ^
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp: In member function 'void Magnum::Audio::Test::{anonymous}::WavImporterTest::stereo64fBigEndian()':
/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp:467:63: error: narrowing conversion of '-65' from 'int' to 'char' [-Wnarrowing]
  467 |             0, 0, 0, 0, 0, 0, 24, -65, 0, 0, 0, 0, 0, 0, 0, 0}}),
      |                                                               ^

char is unsigned by default on all ARM and PPC platforms, so if you want to use negative values, you should make them explicitly signed. This is not about endianness, on little-endian ARM and PPC there will be the same error.
3. I also got:

/usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/WavImporter.cpp:31:10: fatal error: Corrade/Utility/EndiannessBatch.h: No such file or directory
   31 | #include <Corrade/Utility/EndiannessBatch.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

There is Corrade/Utility/Endianness.h, but not Corrade/Utility/EndiannessBatch.h. Is that a typo?

mosra commented
  1. somehow it links to libGLESv2 instead, do you have TARGET_GLES enabled? In that case WindowlessGlxApplication won't work, only the EGL variants
  2. argh, forgot about unsigned chars, sorry ... will fix (in the meantime, -Wno-narrowing maybe?)
  3. that header is there: https://github.com/mosra/corrade/tree/master/src/Corrade/Utility .. maybe you just forgot to install master?
  1. I had TARGET_GLES2 disabled, but not TARGET_GLES. Thanks for that.
  2. Yes, it builds with -Wno-narrowing. But it may still cause runtime issues.
  3. The pkg-plist (I'm building from FreeBSD ports) is from 2019.10 release so it was missing this file, thanks.

Test results:

Starting Magnum::Audio::Test::WavImporterTest with 31 test cases...
    OK [01] empty()
    OK [02] wrongSignature()
    OK [03] unsupportedFormat()
    OK [04] unsupportedChannelCount()
    OK [05] invalidPadding()
    OK [06] invalidLength()
    OK [07] invalidDataChunk()
  FAIL [08] invalidFactChunk() at /usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp on line 204
        Containers importer->data().prefix(8) and (Containers::Array<char>{Containers::InPlaceInit, { -27, -11, -1, -9, 24, -6, 127, -5}}) have different contents, actual:
        {245, 229, 247, 255, 250, 24, 251, 127}
        but expected
        {229, 245, 255, 247, 24, 250, 127, 251}
        Actual 245 but 229 expected on position 0.
    OK [09] zeroSamples()
    OK [10] mono4()
    OK [11] mono8()
    OK [12] mono8junk()
    OK [13] mono8ALaw()
    OK [14] mono8MuLaw()
  FAIL [15] mono16() at /usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp on line 289
        Containers importer->data() and (Containers::Array<char>{Containers::InPlaceInit, { '\x1d', '\x10', '\x71', '\xc5'}}) have different contents, actual:
        {16, 29, 197, 113}
        but expected
        {29, 16, 113, 197}
        Actual 16 but 29 expected on position 0.
  FAIL [16] mono16BigEndian() at /usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp on line 302
        Containers importer->data() and (Containers::Array<char>{Containers::InPlaceInit, { '\x1d', '\x10', '\x71', '\xc5'}}) have different contents, actual:
        {16, 29, 197, 113}
        but expected
        {29, 16, 113, 197}
        Actual 16 but 29 expected on position 0.
    OK [17] stereo4()
    OK [18] stereo8()
    OK [19] stereo8ALaw()
    OK [20] stereo8MuLaw()
    OK [21] stereo12()
  FAIL [22] stereo16() at /usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp on line 374
        Containers importer->data() and (Containers::Array<char>{Containers::InPlaceInit, {39, 79, 39, 79}}) have different contents, actual:
        {79, 39, 79, 39}
        but expected
        {39, 79, 39, 79}
        Actual 79 but 39 expected on position 0.
    OK [23] stereo24()
    OK [24] stereo32()
  FAIL [25] mono32f() at /usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp on line 405
        Containers importer->data().prefix(16) and (Containers::Array<char>{Containers::InPlaceInit, { 0, 0, 0, 0, 108, 57, -103, 59, 3, 63, 42, 60, -33, -81, -120, 60}}) have different contents, actual:
        {0, 0, 0, 0, 59, 153, 57, 108, 60, 42, 63, 3, 60, 136, 175, 223}
        but expected
        {0, 0, 0, 0, 108, 57, 153, 59, 3, 63, 42, 60, 223, 175, 136, 60}
        Actual 59 but 108 expected on position 4.
  FAIL [26] mono32fBigEndian() at /usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp on line 418
        Containers importer->data() and (Containers::Array<char>{Containers::InPlaceInit, { 0, 0, 0, 0, 108, 57, -103, 59, 3, 63, 42, 60, -33, -81, -120, 60}}) have different contents, actual:
        {0, 0, 0, 0, 59, 153, 57, 108, 60, 42, 63, 3, 60, 136, 175, 223}
        but expected
        {0, 0, 0, 0, 108, 57, 153, 59, 3, 63, 42, 60, 223, 175, 136, 60}
        Actual 59 but 108 expected on position 4.
  FAIL [27] stereo32f() at /usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp on line 432
        Containers importer->data().prefix(8) and (Containers::Array<char>{Containers::InPlaceInit, { 17, -77, -103, 56, 5, 50, 72, 56}}) have different contents, actual:
        {56, 153, 179, 17, 56, 72, 50, 5}
        but expected
        {17, 179, 153, 56, 5, 50, 72, 56}
        Actual 56 but 17 expected on position 0.
  FAIL [28] stereo64f() at /usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp on line 446
        Containers importer->data().prefix(64) and (Containers::Array<char>{Containers::InPlaceInit, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 16, 63, 0, 0
, 0, 0, 0, 0, 24, -65, 0, 0, 0, 0, 0, 0, 0, 0}}) have different contents, actual:
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 16, 0, 0, 0, 0, 0, 0, 191, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
        but expected
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 16, 63, 0, 0, 0, 0, 0, 0, 24, 191, 0, 0, 0, 0, 0, 0, 0, 0}
        Actual 63 but 0 expected on position 32.
  FAIL [29] stereo64fBigEndian() at /usr/local/poudriere/ports/default/graphics/magnum/work/magnum-7cfa170/src/MagnumPlugins/WavAudioImporter/Test/WavImporterTest.cpp on line 462
        Containers importer->data() and (Containers::Array<char>{Containers::InPlaceInit, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 16, 63, 0, 0, 0, 0, 0,
0, 24, -65, 0, 0, 0, 0, 0, 0, 0, 0}}) have different contents, actual:
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 16, 0, 0, 0, 0, 0, 0, 191, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
        but expected
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 16, 63, 0, 0, 0, 0, 0, 0, 24, 191, 0, 0, 0, 0, 0, 0, 0, 0}
        Actual 63 but 0 expected on position 32.
    OK [30] surround51Channel16()
    OK [31] surround71Channel24()
Finished Magnum::Audio::Test::WavImporterTest with 9 errors out of 105 checks.

It looks like the actual values are misplaced every 4 values.

mosra commented

Yep, sorry, realized too late the test itself suffers from endianness issues as well.

Should be fixed in mosra/magnum@16f845e (the next branch right now, not master yet), -Wno-narrowing should not be needed anymore either. Can you confirm? Thanks a lot!

Looks like it passed now:

Starting Magnum::Audio::Test::WavImporterTest with 31 test cases...
    OK [01] empty()
    OK [02] wrongSignature()
    OK [03] unsupportedFormat()
    OK [04] unsupportedChannelCount()
    OK [05] invalidPadding()
    OK [06] invalidLength()
    OK [07] invalidDataChunk()
    OK [08] invalidFactChunk()
    OK [09] zeroSamples()
    OK [10] mono4()
    OK [11] mono8()
    OK [12] mono8junk()
    OK [13] mono8ALaw()
    OK [14] mono8MuLaw()
    OK [15] mono16()
    OK [16] mono16BigEndian()
    OK [17] stereo4()
    OK [18] stereo8()
    OK [19] stereo8ALaw()
    OK [20] stereo8MuLaw()
    OK [21] stereo12()
    OK [22] stereo16()
    OK [23] stereo24()
    OK [24] stereo32()
    OK [25] mono32f()
    OK [26] mono32fBigEndian()
    OK [27] stereo32f()
    OK [28] stereo64f()
    OK [29] stereo64fBigEndian()
    OK [30] surround51Channel16()
    OK [31] surround71Channel24()
Finished Magnum::Audio::Test::WavImporterTest with 0 errors out of 105 checks.

Thanks!

mosra commented

Wonderful, thanks for the confirmation!