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.63k stars 1.74k forks source link

[Bug]: Failed build on OpenBSD #1462

Open rnkn opened 6 days ago

rnkn commented 6 days ago

Detailed steps on how to reproduce the bug

Hello. I understand that OpenBSD is not a targeted system, but I'm hoping that in your good graces you may offer some insights in my attempts to build...

$ git clone --depth 1 https://github.com/juce-framework/JUCE.git
$ cd JUCE
$ cmake . -B build

What is the expected behaviour?

Moderately successful build.

Operating systems

Other

What versions of the operating systems?

$ uname -a
OpenBSD ghost.home 7.6 GENERIC.MP#196 arm64

Architectures

ARM

Stacktrace

-- The C compiler identification is Clang 16.0.6
-- The CXX compiler identification is Clang 16.0.6
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2")
-- Checking for module 'alsa'
--   
-- Checking for modules 'freetype2;fontconfig'
--   Found freetype2, version 26.1.20
--   Found fontconfig, version 2.14.1
-- Checking for module 'gl'
--   Found gl, version 23.3.6
-- Checking for module 'libcurl'
--   Found libcurl, version 8.10.1
-- Checking for modules 'webkit2gtk-4.0;gtk+-x11-3.0'
--   
--   
-- Configuring juceaide
-- Building juceaide
CMake Error at extras/Build/juceaide/CMakeLists.txt:142 (message):
  Failed to build juceaide

  [ 9%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/Main.cpp.o

  [ 18%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/juce_build_tools/juce_build_tools.cpp.o

  [ 27%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_gui_basics/juce_gui_basics.cpp.o

  [ 36%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_graphics/juce_graphics.cpp.o

  [ 45%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_graphics/juce_graphics_Harfbuzz.cpp.o

  [ 54%] Building C object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_graphics/juce_graphics_Sheenbidi.c.o

  [ 63%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_events/juce_events.cpp.o

  [ 72%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_core/juce_core.cpp.o

  In file included from
  /home/rnkn/src/JUCE/modules/juce_core/juce_core.cpp:158:

  /home/rnkn/src/JUCE/modules/juce_core/native/juce_SharedCode_posix.h:1007:6:
  error: use of undeclared identifier 'pthread_setname_np'

       pthread_setname_np (pthread_self(), name.toRawUTF8());
       ^

  In file included from
  /home/rnkn/src/JUCE/modules/juce_core/juce_core.cpp:195:

  In file included from
  /home/rnkn/src/JUCE/modules/juce_core/javascript/juce_Javascript.cpp:41:

  /home/rnkn/src/JUCE/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h:11624:12:
  error: use of undeclared identifier 'malloc_usable_size'; did you mean
  'JSMallocFunctions::js_malloc_usable_size'?

      return malloc_usable_size(ptr);
             ^~~~~~~~~~~~~~~~~~
             JSMallocFunctions::js_malloc_usable_size

  /home/rnkn/src/JUCE/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h:8669:14:
  note: 'JSMallocFunctions::js_malloc_usable_size' declared here

      size_t (*js_malloc_usable_size)(const void *ptr);
               ^

  /home/rnkn/src/JUCE/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h:11624:12:
  error: invalid use of non-static data member 'js_malloc_usable_size'

      return malloc_usable_size(ptr);
             ^~~~~~~~~~~~~~~~~~

  /home/rnkn/src/JUCE/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h:11698:5:
  error: use of undeclared identifier 'malloc_usable_size'; did you mean
  'js_malloc_usable_size'?

      malloc_usable_size,
      ^~~~~~~~~~~~~~~~~~
      js_malloc_usable_size

  /home/rnkn/src/JUCE/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h:11315:8:
  note: 'js_malloc_usable_size' declared here

  size_t js_malloc_usable_size(JSContext *ctx, const void *ptr)

         ^

  /home/rnkn/src/JUCE/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h:11698:5:
  error: cannot initialize a member subobject of type 'size_t (*)(const void
  *)' (aka 'unsigned long (*)(const void *)') with an lvalue of type 'size_t
  (JSContext *, const void *)' (aka 'unsigned long ((anonymous
  namespace)::choc::javascript::quickjs::JSContext *, const void *)'):
  different number of parameters (1 vs 2)

      malloc_usable_size,
      ^~~~~~~~~~~~~~~~~~

  In file included from
  /home/rnkn/src/JUCE/modules/juce_core/juce_core.cpp:246:

  /home/rnkn/src/JUCE/modules/juce_core/native/juce_Files_linux.cpp:51:21:
  error: no member named 'f_type' in 'statfs'

               && buf.f_type == (unsigned int) U_ISOFS_SUPER_MAGIC;
                  ~~~ ^

  /home/rnkn/src/JUCE/modules/juce_core/native/juce_Files_linux.cpp:60:21:
  error: no member named 'f_type' in 'statfs'

          switch (buf.f_type)
                  ~~~ ^

  In file included from
  /home/rnkn/src/JUCE/modules/juce_core/juce_core.cpp:252:

  /home/rnkn/src/JUCE/modules/juce_core/native/juce_SystemStats_linux.cpp:151:19:
  error: use of undeclared identifier 'sysctlbyname'

      auto result = sysctlbyname ("hw.clockrate", &clockRate, &clockRateSize, nullptr, 0);
                    ^

  /home/rnkn/src/JUCE/modules/juce_core/native/juce_SystemStats_linux.cpp:431:33:
  error: no member named 'ki_flag' in 'kinfo_proc'

      return result == 0 ? ((info.ki_flag & P_TRACED) != 0) : false;
                             ~~~~ ^

  /home/rnkn/src/JUCE/modules/juce_core/native/juce_SystemStats_linux.cpp:431:43:
  error: use of undeclared identifier 'P_TRACED'

      return result == 0 ? ((info.ki_flag & P_TRACED) != 0) : false;
                                            ^

  10 errors generated.

  *** Error 1 in .
  (extras/Build/juceaide/CMakeFiles/juceaide.dir/build.make:174
  'extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_core/juce_core.cpp.o')

  *** Error 2 in .  (CMakeFiles/Makefile2:131
  'extras/Build/juceaide/CMakeFiles/juceaide.dir/all': /usr/bin/make -s -f
  extras/Build/juceaide/CM...)

  *** Error 2 in /home/rnkn/src/JUCE/build/tools (Makefile:136 'all':
  /usr/bin/make -s -f CMakeFiles/Makefile2 all)

-- Configuring incomplete, errors occurred!

Plug-in formats (if applicable)

No response

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

No response

Testing on the develop branch

I have not tested against the develop branch

Code of Conduct

epsilon-0 commented 6 days ago

For the first error for pthread , you need to use a different non-portable extension for openbsd pthread_set_name_np - https://man.openbsd.org/pthreads.3#pthread_set_name_np.

Note the _ difference between the error'd function name and the available function in the man page.

rnkn commented 6 days ago

Thanks so much for your quick response!

So I just did the most obvious thing and replaced pthread_setname_np with pthread_set_name_np and get the same error with the extension:

-- The C compiler identification is Clang 16.0.6
-- The CXX compiler identification is Clang 16.0.6
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2")
-- Checking for module 'alsa'
--   
-- Checking for modules 'freetype2;fontconfig'
--   Found freetype2, version 26.1.20
--   Found fontconfig, version 2.14.1
-- Checking for module 'gl'
--   Found gl, version 23.3.6
-- Checking for module 'libcurl'
--   Found libcurl, version 8.10.1
-- Checking for modules 'webkit2gtk-4.0;gtk+-x11-3.0'
--   
--   
-- Configuring juceaide
-- Building juceaide
CMake Error at extras/Build/juceaide/CMakeLists.txt:142 (message):
  Failed to build juceaide

  [ 9%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/Main.cpp.o

  [ 18%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/juce_build_tools/juce_build_tools.cpp.o

  [ 27%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_gui_basics/juce_gui_basics.cpp.o

  [ 36%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_graphics/juce_graphics.cpp.o

  [ 45%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_graphics/juce_graphics_Harfbuzz.cpp.o

  [ 54%] Building C object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_graphics/juce_graphics_Sheenbidi.c.o

  [ 63%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_events/juce_events.cpp.o

  [ 72%] Building CXX object
  extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_core/juce_core.cpp.o

  In file included from
  /home/rnkn/src/JUCE/modules/juce_core/juce_core.cpp:158:

  /home/rnkn/src/JUCE/modules/juce_core/native/juce_SharedCode_posix.h:1007:6:
  error: use of undeclared identifier 'pthread_set_name_np'

       pthread_set_name_np (pthread_self(), name.toRawUTF8());
       ^

  In file included from
  /home/rnkn/src/JUCE/modules/juce_core/juce_core.cpp:195:

  In file included from
  /home/rnkn/src/JUCE/modules/juce_core/javascript/juce_Javascript.cpp:41:

  /home/rnkn/src/JUCE/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h:11624:12:
  error: use of undeclared identifier 'malloc_usable_size'; did you mean
  'JSMallocFunctions::js_malloc_usable_size'?

      return malloc_usable_size(ptr);
             ^~~~~~~~~~~~~~~~~~
             JSMallocFunctions::js_malloc_usable_size

  /home/rnkn/src/JUCE/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h:8669:14:
  note: 'JSMallocFunctions::js_malloc_usable_size' declared here

      size_t (*js_malloc_usable_size)(const void *ptr);
               ^

  /home/rnkn/src/JUCE/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h:11624:12:
  error: invalid use of non-static data member 'js_malloc_usable_size'

      return malloc_usable_size(ptr);
             ^~~~~~~~~~~~~~~~~~

  /home/rnkn/src/JUCE/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h:11698:5:
  error: use of undeclared identifier 'malloc_usable_size'; did you mean
  'js_malloc_usable_size'?

      malloc_usable_size,
      ^~~~~~~~~~~~~~~~~~
      js_malloc_usable_size

  /home/rnkn/src/JUCE/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h:11315:8:
  note: 'js_malloc_usable_size' declared here

  size_t js_malloc_usable_size(JSContext *ctx, const void *ptr)

         ^

  /home/rnkn/src/JUCE/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h:11698:5:
  error: cannot initialize a member subobject of type 'size_t (*)(const void
  *)' (aka 'unsigned long (*)(const void *)') with an lvalue of type 'size_t
  (JSContext *, const void *)' (aka 'unsigned long ((anonymous
  namespace)::choc::javascript::quickjs::JSContext *, const void *)'):
  different number of parameters (1 vs 2)

      malloc_usable_size,
      ^~~~~~~~~~~~~~~~~~

  In file included from
  /home/rnkn/src/JUCE/modules/juce_core/juce_core.cpp:246:

  /home/rnkn/src/JUCE/modules/juce_core/native/juce_Files_linux.cpp:51:21:
  error: no member named 'f_type' in 'statfs'

               && buf.f_type == (unsigned int) U_ISOFS_SUPER_MAGIC;
                  ~~~ ^

  /home/rnkn/src/JUCE/modules/juce_core/native/juce_Files_linux.cpp:60:21:
  error: no member named 'f_type' in 'statfs'

          switch (buf.f_type)
                  ~~~ ^

  In file included from
  /home/rnkn/src/JUCE/modules/juce_core/juce_core.cpp:252:

  /home/rnkn/src/JUCE/modules/juce_core/native/juce_SystemStats_linux.cpp:151:19:
  error: use of undeclared identifier 'sysctlbyname'

      auto result = sysctlbyname ("hw.clockrate", &clockRate, &clockRateSize, nullptr, 0);
                    ^

  /home/rnkn/src/JUCE/modules/juce_core/native/juce_SystemStats_linux.cpp:431:33:
  error: no member named 'ki_flag' in 'kinfo_proc'

      return result == 0 ? ((info.ki_flag & P_TRACED) != 0) : false;
                             ~~~~ ^

  /home/rnkn/src/JUCE/modules/juce_core/native/juce_SystemStats_linux.cpp:431:43:
  error: use of undeclared identifier 'P_TRACED'

      return result == 0 ? ((info.ki_flag & P_TRACED) != 0) : false;
                                            ^

  10 errors generated.

  *** Error 1 in .
  (extras/Build/juceaide/CMakeFiles/juceaide.dir/build.make:174
  'extras/Build/juceaide/CMakeFiles/juceaide.dir/__/__/__/modules/juce_core/juce_core.cpp.o')

  *** Error 2 in .  (CMakeFiles/Makefile2:131
  'extras/Build/juceaide/CMakeFiles/juceaide.dir/all': /usr/bin/make -s -f
  extras/Build/juceaide/CM...)

  *** Error 2 in /home/rnkn/src/JUCE/build/tools (Makefile:136 'all':
  /usr/bin/make -s -f CMakeFiles/Makefile2 all)

-- Configuring incomplete, errors occurred!