juce-framework / JUCE

JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins.
https://juce.com
Other
6.64k stars 1.74k forks source link

[Bug]: juceaide fails to build on powerpc64le #1094

Open yurivict opened 2 years ago

yurivict commented 2 years ago

Detailed steps on how to reproduce the bug

Regular build on the powerpc64le architecture.

Error log:

-- 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)

Downstream bug report: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265446#c2

What is the expected behaviour?

success

Operating systems

Other

What versions of the operating systems?

FreeBSD 13.1

Architectures

64-bit

Stacktrace

n/a

Plug-in formats (if applicable)

Standalone

Plug-in host applications (DAWs) (if applicable)

n/a

Testing on the develop branch

I have not tested against the develop branch

Code of Conduct

umlaeute commented 2 years ago

just a data-point: on Debian/ppc64el juceaide builds fine, at least for JUCE-7.0.1

https://buildd.debian.org/status/fetch.php?pkg=juce&arch=ppc64el&ver=7.0.1%7Eds0-1&stamp=1659651853

EDIT: on closer inspection I see that your error is about undefined symbols related to png. For the Debian package, we take care to properly link against the system's libpng, so that might explain why it works for us.