Created attachment 235479 [details] patch Like with devel/juce, use system png to fix build.
Hi Piotr, Could you please elaborate why does this fix build on powerpc64? Is there an error message? Thanks, Yuri
Sorry, it was actually powerpc64le. The error is: -- Building juceaide CMake Error at libs/JUCE/extras/Build/juceaide/CMakeLists.txt:101 (message): Failed to build juceaide [0/2] Re-checking globbed directories... [1/8] Building CXX object extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_data_structures/juce_data_structures.cpp.o [2/8] Building CXX object extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_events/juce_events.cpp.o [3/8] Building CXX object extras/Build/juceaide/CMakeFiles/juceaide.dir/Main.cpp.o [4/8] Building CXX object extras/Build/juceaide/CMakeFiles/juceaide.dir/__/juce_build_tools/juce_build_tools.cpp.o [5/8] Building CXX object extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_graphics/juce_graphics.cpp.o In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_graphics/juce_graphics.cpp:41: In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_graphics/juce_graphics.h:147: /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h:96:21: warning: definition of implicit copy constructor for 'SavedState' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy] SavedState& operator= (const SavedState&) = delete; ^ /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp:169:25: note: in implicit copy constructor for 'juce::LowLevelGraphicsPostScriptRenderer::SavedState' first required here stateStack.add (new SavedState (*stateStack.getLast())); ^ 1 warning generated. [6/8] Building CXX object extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_core/juce_core.cpp.o In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/juce_core.cpp:164: /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/system/juce_SystemStats.cpp:180:23: warning: comparison of integers of different signs: 'int' and 'unsigned long' [-Wsign-compare] for (int i = 0; i < frames; ++i) ~ ^ ~~~~~~ In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/juce_core.cpp:225: /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/native/juce_linux_Network.cpp:37:43: warning: cast from 'struct sockaddr *' to 'struct sockaddr_dl *' increases required alignment from 1 to 2 [-Wcast-align] struct sockaddr_dl* sdl = (struct sockaddr_dl*) i->ifa_addr; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/juce_core.cpp:37: In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/juce_core.h:331: /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/network/juce_URL.h:56:5: warning: definition of implicit copy constructor for 'URL' is deprecated because it has a user-declared destructor [-Wdeprecated-copy-with-dtor] ~URL() = default; ^ /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/native/juce_linux_Network.cpp:96:11: note: in implicit copy constructor for 'juce::URL' first required here url (urlToCopy), ^ In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/juce_core.cpp:232: /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/native/juce_linux_SystemStats.cpp:156:33: warning: implicit conversion from 'juce::int64' (aka 'long long') to 'double' may lose precision [-Wimplicit-int-float-conversion] return result == 0 ? (int) (memory / 1e6) : 0; ^~~~~~ ~ 4 warnings generated. [7/8] Building CXX object extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_gui_basics/juce_gui_basics.cpp.o In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/juce_gui_basics.cpp:46: In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/juce_gui_basics.h:57: In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_graphics/juce_graphics.h:58: In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/juce_core.h:331: /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/network/juce_URL.h:56:5: warning: definition of implicit copy constructor for 'URL' is deprecated because it has a user-declared destructor [-Wdeprecated-copy-with-dtor] ~URL() = default; ^ /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp:32:6: note: in implicit copy constructor for 'juce::URL' first required here url (linkURL), ^ In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/juce_gui_basics.cpp:46: In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/juce_gui_basics.h:57: In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_graphics/juce_graphics.h:58: In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/juce_core.h:331: /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/network/juce_URL.h:56:5: warning: definition of implicit copy assignment operator for 'URL' is deprecated because it has a user-declared destructor [-Wdeprecated-copy-with-dtor] ~URL() = default; ^ /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp:67:9: note: in implicit copy assignment operator for 'juce::URL' first required here url = newURL; ^ In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/juce_gui_basics.cpp:166: /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/drawables/juce_SVGParser.cpp:1751:15: warning: definition of implicit copy constructor for 'SVGState' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy] SVGState& operator= (const SVGState&) = delete; ^ /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/drawables/juce_SVGParser.cpp:154:18: note: in implicit copy constructor for 'juce::SVGState' first required here SVGState newState (*this); ^ In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/juce_gui_basics.cpp:46: In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/juce_gui_basics.h:187: /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/desktop/juce_Displays.h:170:5: warning: definition of implicit copy constructor for 'Displays' is deprecated because it has a user-declared destructor [-Wdeprecated-copy-with-dtor] ~Displays() = default; ^ /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/native/x11/juce_linux_X11_DragAndDrop.cpp:159:31: note: in implicit copy constructor for 'juce::Displays' first required here const auto displays = Desktop::getInstance().getDisplays(); ^ In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/juce_gui_basics.cpp:46: In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/juce_gui_basics.h:57: In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_graphics/juce_graphics.h:58: In file included from /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/juce_core.h:255: /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/containers/juce_ElementComparator.h:44:28: warning: definition of implicit copy constructor for 'SortFunctionConverter<juce::StringComparator>' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy] SortFunctionConverter& operator= (const SortFunctionConverter&) = delete; ^ /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/containers/juce_ElementComparator.h:92:78: note: in implicit copy constructor for 'juce::SortFunctionConverter<juce::StringComparator>' first required here std::stable_sort (array + firstElement, array + lastElement + 1, converter); ^ /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_core/containers/juce_Array.h:1112:9: note: in instantiation of function template specialization 'juce::sortArray<juce::var, juce::StringComparator>' requested here sortArray (comparator, values.begin(), 0, size() - 1, retainOrderOfEquivalentItems); ^ /wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.cpp:90:18: note: in instantiation of function template specialization 'juce::Array<juce::var, juce::DummyCriticalSection, 0>::sort<juce::StringComparator>' requested here temp.sort (c); ^ 5 warnings generated. [8/8] Linking CXX executable extras/Build/juceaide/juceaide_artefacts/Debug/juceaide FAILED: extras/Build/juceaide/juceaide_artefacts/Debug/juceaide : && /usr/bin/c++ -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -DJUCE_CUSTOM_VST3_SDK=1 -fPIC -isystem /usr/local/include -fstack-protector-strong extras/Build/juceaide/CMakeFiles/juceaide.dir/Main.cpp.o extras/Build/juceaide/CMakeFiles/juceaide.dir/__/juce_build_tools/juce_build_tools.cpp.o extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_gui_basics/juce_gui_basics.cpp.o extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_graphics/juce_graphics.cpp.o extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_events/juce_events.cpp.o extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_core/juce_core.cpp.o extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_data_structures/juce_data_structures.cpp.o -o extras/Build/juceaide/juceaide_artefacts/Debug/juceaide -Wl,-rpath,/usr/local/lib /usr/local/lib/libfreetype.so -lexecinfo -lrt -ldl -lpthread && : ld: error: undefined symbol: juce::pnglibNamespace::png_init_filter_functions_vsx(juce::pnglibNamespace::png_struct_def*, unsigned int) >>> referenced by pngrutil.c:4126 (/wrkdirs/usr/ports/audio/dexed/work/dexed-0.9.6-16-g1df9a58/libs/JUCE/modules/juce_graphics/image_formats/pnglib/pngrutil.c:4126) >>> extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_graphics/juce_graphics.cpp.o:(juce::pnglibNamespace::png_init_filter_functions(juce::pnglibNamespace::png_struct_def*)) c++: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed. -- Configuring incomplete, errors occurred! See also "/wrkdirs/usr/ports/audio/dexed/work/.build/CMakeFiles/CMakeOutput.log".
The reason is that juce's build system doesn't take powerpc64le into account and doesn't build relevant files that implement functions with VSX, but then attempts to use them.
I've added the JUCE bug report with the same error log that you reported.
Committed, thanks!
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=58b51f941282911e9e677499a0e0925c89c33905 commit 58b51f941282911e9e677499a0e0925c89c33905 Author: Piotr Kubaj <pkubaj@FreeBSD.org> AuthorDate: 2022-07-26 21:36:41 +0000 Commit: Yuri Victorovich <yuri@FreeBSD.org> CommitDate: 2022-07-26 21:37:31 +0000 audio/dexed: Fix build on powerpc64le PR: 265446 audio/dexed/Makefile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
A commit in branch 2022Q3 references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=79c810b46d9c0d6e91883568533f57183b359f62 commit 79c810b46d9c0d6e91883568533f57183b359f62 Author: Piotr Kubaj <pkubaj@FreeBSD.org> AuthorDate: 2022-07-26 21:36:41 +0000 Commit: Yuri Victorovich <yuri@FreeBSD.org> CommitDate: 2022-07-26 21:38:05 +0000 audio/dexed: Fix build on powerpc64le PR: 265446 (cherry picked from commit 58b51f941282911e9e677499a0e0925c89c33905) audio/dexed/Makefile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)