JoyShockMapper icon indicating copy to clipboard operation
JoyShockMapper copied to clipboard

[Build Error] Cannot Compile For Arch Linux

Open Jazztache opened this issue 2 years ago • 4 comments

Hello! I have been trying to compile JoyShockMapper from source, since the AUR build hasn't been working. I think this might be an upstream issue, so I went to check.

I used git clone on the source code, and then followed the build instructions in the README.md. It doesn't seem to work unfortunely.

Here is the console output I was able to get.

jazztache@jazztarche-revengance ~/S/J/build (master)> cmake .. -DCMAKE_CXX_COMPILE=clang++ && cmake --build .
-- JSM version is v3.5.1
-- CPM: adding package SDL2@ (release-2.28.2)
-- dynamic libasound -> libasound.so.2
-- dynamic libjack -> libjack.so.0
-- dynamic libpipewire-0.3 -> libpipewire-0.3.so.0
-- dynamic libpulse-simple -> libpulse-simple.so.0
-- Checking for module 'esound'
--   Package 'esound', required by 'virtual:world', not found
-- dynamic libsndio -> libsndio.so.7
-- Checking for modules 'bcm_host;brcmegl'
--   Package 'bcm_host', required by 'virtual:world', not found
--   Package 'brcmegl', required by 'virtual:world', not found
-- dynamic libX11 -> libX11.so.6
-- dynamic libXext -> libXext.so.6
-- dynamic libXcursor -> libXcursor.so.1
-- dynamic libXi -> libXi.so.6
-- dynamic libXfixes -> libXfixes.so.3
-- dynamic libXrandr -> libXrandr.so.2
-- dynamic libXrender -> libXrender.so.1
-- dynamic libXss -> libXss.so.1
-- dynamic libdrm -> libdrm.so.2
-- dynamic libgbm -> libgbm.so.1
-- dynamic libwayland-client -> libwayland-client.so.0
-- dynamic libwayland-egl -> libwayland-egl.so.1
-- dynamic libwayland-cursor -> libwayland-cursor.so.0
-- dynamic libxkbcommon -> libxkbcommon.so.0
-- dynamic libdecor-0 -> libdecor-0.so.0
-- dynamic libudev -> libudev.so.1
-- Checking for one of the modules 'ibus-1.0;ibus'
CMake Deprecation Warning at build/_deps/sdl2-src/CMakeLists.txt:3185 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- 
-- SDL2 was configured with the following options:
-- 
-- Platform: Linux-6.5.3-arch1-1
-- 64-bit:   TRUE
-- Compiler: /usr/bin/cc
-- Revision: SDL-release-2.28.2-0-g031912c4b
-- 
-- Subsystems:
--   Atomic:    ON
--   Audio:     ON
--   Video:     ON
--   Render:    ON
--   Events:    ON
--   Joystick:  ON
--   Haptic:    ON
--   Hidapi:    ON
--   Power:     ON
--   Threads:   ON
--   Timers:    ON
--   File:      ON
--   Loadso:    ON
--   CPUinfo:   ON
--   Filesystem:        ON
--   Sensor:    ON
--   Locale:    ON
--   Misc:      ON
-- 
-- Options:
--   SDL2_DISABLE_INSTALL        (Wanted: ON): OFF
--   SDL2_DISABLE_SDL2MAIN       (Wanted: OFF): OFF
--   SDL2_DISABLE_UNINSTALL      (Wanted: OFF): OFF
--   SDL_3DNOW                   (Wanted: ON): ON
--   SDL_ALSA                    (Wanted: ON): ON
--   SDL_ALSA_SHARED             (Wanted: ON): ON
--   SDL_ALTIVEC                 (Wanted: ON): OFF
--   SDL_ARMNEON                 (Wanted: OFF): OFF
--   SDL_ARMSIMD                 (Wanted: OFF): OFF
--   SDL_ARTS                    (Wanted: ON): OFF
--   SDL_ARTS_SHARED             (Wanted: ON): OFF
--   SDL_ASAN                    (Wanted: OFF): OFF
--   SDL_ASSEMBLY                (Wanted: ON): ON
--   SDL_ASSERTIONS              (Wanted: auto): auto
--   SDL_BACKGROUNDING_SIGNAL    (Wanted: OFF): OFF
--   SDL_CCACHE                  (Wanted: ON): ON
--   SDL_CLOCK_GETTIME           (Wanted: ON): ON
--   SDL_COCOA                   (Wanted: OFF): OFF
--   SDL_DBUS                    (Wanted: ON): ON
--   SDL_DIRECTFB                (Wanted: OFF): OFF
--   SDL_DIRECTFB_SHARED         (Wanted: OFF): OFF
--   SDL_DIRECTX                 (Wanted: OFF): OFF
--   SDL_DISKAUDIO               (Wanted: ON): ON
--   SDL_DUMMYAUDIO              (Wanted: ON): ON
--   SDL_DUMMYVIDEO              (Wanted: ON): ON
--   SDL_ESD                     (Wanted: ON): OFF
--   SDL_ESD_SHARED              (Wanted: ON): OFF
--   SDL_FOREGROUNDING_SIGNAL    (Wanted: OFF): OFF
--   SDL_FUSIONSOUND             (Wanted: OFF): OFF
--   SDL_FUSIONSOUND_SHARED      (Wanted: OFF): OFF
--   SDL_GCC_ATOMICS             (Wanted: ON): ON
--   SDL_HIDAPI                  (Wanted: ON): ON
--   SDL_HIDAPI_JOYSTICK         (Wanted: ON): ON
--   SDL_HIDAPI_LIBUSB           (Wanted: OFF): OFF
--   SDL_IBUS                    (Wanted: ON): OFF
--   SDL_INSTALL_TESTS           (Wanted: OFF): OFF
--   SDL_JACK                    (Wanted: ON): ON
--   SDL_JACK_SHARED             (Wanted: ON): ON
--   SDL_KMSDRM                  (Wanted: ON): ON
--   SDL_KMSDRM_SHARED           (Wanted: ON): ON
--   SDL_LASX                    (Wanted: OFF): OFF
--   SDL_LIBC                    (Wanted: ON): ON
--   SDL_LIBSAMPLERATE           (Wanted: ON): ON
--   SDL_LIBSAMPLERATE_SHARED    (Wanted: ON): ON
--   SDL_LIBUDEV                 (Wanted: ON): OFF
--   SDL_LSX                     (Wanted: OFF): OFF
--   SDL_METAL                   (Wanted: OFF): OFF
--   SDL_MMX                     (Wanted: ON): ON
--   SDL_NAS                     (Wanted: ON): OFF
--   SDL_NAS_SHARED              (Wanted: ON): OFF
--   SDL_OFFSCREEN               (Wanted: ON): ON
--   SDL_OPENGL                  (Wanted: ON): ON
--   SDL_OPENGLES                (Wanted: ON): ON
--   SDL_OSS                     (Wanted: ON): ON
--   SDL_PIPEWIRE                (Wanted: ON): ON
--   SDL_PIPEWIRE_SHARED         (Wanted: ON): ON
--   SDL_PTHREADS                (Wanted: ON): ON
--   SDL_PTHREADS_SEM            (Wanted: ON): ON
--   SDL_PULSEAUDIO              (Wanted: ON): ON
--   SDL_PULSEAUDIO_SHARED       (Wanted: ON): ON
--   SDL_RENDER_D3D              (Wanted: OFF): OFF
--   SDL_RENDER_METAL            (Wanted: OFF): OFF
--   SDL_RPATH                   (Wanted: ON): ON
--   SDL_RPI                     (Wanted: ON): OFF
--   SDL_SNDIO                   (Wanted: ON): ON
--   SDL_SNDIO_SHARED            (Wanted: ON): ON
--   SDL_SSE                     (Wanted: ON): ON
--   SDL_SSE2                    (Wanted: ON): ON
--   SDL_SSE3                    (Wanted: ON): ON
--   SDL_SSEMATH                 (Wanted: ON): ON
--   SDL_STATIC_PIC              (Wanted: OFF): OFF
--   SDL_SYSTEM_ICONV            (Wanted: ON): ON
--   SDL_TESTS                   (Wanted: OFF): OFF
--   SDL_VENDOR_INFO             (Wanted: ): OFF
--   SDL_VIRTUAL_JOYSTICK        (Wanted: ON): ON
--   SDL_VIVANTE                 (Wanted: ON): OFF
--   SDL_VULKAN                  (Wanted: ON): ON
--   SDL_WASAPI                  (Wanted: OFF): OFF
--   SDL_WAYLAND                 (Wanted: ON): ON
--   SDL_WAYLAND_LIBDECOR        (Wanted: ON): ON
--   SDL_WAYLAND_LIBDECOR_SHARED (Wanted: ON): ON
--   SDL_WAYLAND_QT_TOUCH        (Wanted: ON): ON
--   SDL_WAYLAND_SHARED          (Wanted: ON): ON
--   SDL_X11                     (Wanted: ON): ON
--   SDL_X11_SHARED              (Wanted: ON): ON
--   SDL_X11_XCURSOR             (Wanted: ON): ON
--   SDL_X11_XDBE                (Wanted: ON): ON
--   SDL_X11_XFIXES              (Wanted: ON): ON
--   SDL_X11_XINPUT              (Wanted: ON): ON
--   SDL_X11_XRANDR              (Wanted: ON): ON
--   SDL_X11_XSCRNSAVER          (Wanted: ON): ON
--   SDL_X11_XSHAPE              (Wanted: ON): ON
--   SDL_XINPUT                  (Wanted: OFF): OFF
-- 
--  CFLAGS:         -idirafter "/home/jazztache/Source/JoyShockMapper/build/_deps/sdl2-src/src/video/khronos" -DHAVE_LINUX_VERSION_H
--  EXTRA_CFLAGS:   -Wall -fno-strict-aliasing -Wdeclaration-after-statement -fvisibility=hidden -Wshadow -Wno-unused-local-typedefs -mmmx -m3dnow -msse -msse2 -msse3 -D_REENTRANT -I/usr/include/pipewire-0.3 -I/usr/include/spa-0.2 -I/usr/include -I/usr/include/libdrm
--  EXTRA_LDFLAGS: -pthread -Wl,--no-undefined
--  EXTRA_LIBS:    m
-- 
--  Build Shared Library: ON
--  Build Static Library: ON
--  Build Static Library with Position Independent Code: OFF
-- 
-- If something was not detected, although the libraries
-- were installed, then make sure you have set the
-- CFLAGS and LDFLAGS environment variables correctly.
-- 
-- CPM: adding package magic_enum@0 (47e34ada93e0bf70dcea551636755cd66d893768)
-- CPM: adding package pocket_fsm@0 (e447ec24c7a547bd1fbe8d964baa866a9cf146c8)
-- CPM: adding package GamepadMotionHelpers@0 (39b578aacf34c3a1c584d8f7f194adc776f88055)
-- Configuring done (0.9s)
-- Generating done (0.0s)
-- Build files have been written to: /home/jazztache/Source/JoyShockMapper/build
[ 14%] Built target sdl_headers_copy
[ 54%] Built target SDL2
[ 54%] Building CXX object JoyShockMapper/CMakeFiles/JoyShockMapper.dir/src/main.cpp.o
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:412:18: error: explicit specialization in non-namespace scope ‘class JoyShock’
  412 |         template<>
      |                  ^
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:413:17: error: template-id ‘getSetting<FloatXY>’ in declaration of primary template
  413 |         FloatXY getSetting<FloatXY>(SettingID index)
      |                 ^~~~~~~~~~~~~~~~~~~
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:413:17: error: ‘FloatXY JoyShock::getSetting(SettingID)’ cannot be overloaded with ‘float JoyShock::getSetting(SettingID)’
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:378:15: note: previous declaration ‘float JoyShock::getSetting(SettingID)’
  378 |         float getSetting(SettingID index)
      |               ^~~~~~~~~~
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:428:18: error: explicit specialization in non-namespace scope ‘class JoyShock’
  428 |         template<>
      |                  ^
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:429:22: error: template-id ‘getSetting<GyroSettings>’ in declaration of primary template
  429 |         GyroSettings getSetting<GyroSettings>(SettingID index)
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:429:22: error: ‘GyroSettings JoyShock::getSetting(SettingID)’ cannot be overloaded with ‘float JoyShock::getSetting(SettingID)’
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:378:15: note: previous declaration ‘float JoyShock::getSetting(SettingID)’
  378 |         float getSetting(SettingID index)
      |               ^~~~~~~~~~
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:446:18: error: explicit specialization in non-namespace scope ‘class JoyShock’
  446 |         template<>
      |                  ^
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:447:15: error: template-id ‘getSetting<Color>’ in declaration of primary template
  447 |         Color getSetting<Color>(SettingID index)
      |               ^~~~~~~~~~~~~~~~~
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:447:15: error: ‘Color JoyShock::getSetting(SettingID)’ cannot be overloaded with ‘float JoyShock::getSetting(SettingID)’
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:378:15: note: previous declaration ‘float JoyShock::getSetting(SettingID)’
  378 |         float getSetting(SettingID index)
      |               ^~~~~~~~~~
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:464:18: error: explicit specialization in non-namespace scope ‘class JoyShock’
  464 |         template<>
      |                  ^
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:465:32: error: template-id ‘getSetting<AdaptiveTriggerSetting>’ in declaration of primary template
  465 |         AdaptiveTriggerSetting getSetting<AdaptiveTriggerSetting>(SettingID index)
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:465:32: error: ‘AdaptiveTriggerSetting JoyShock::getSetting(SettingID)’ cannot be overloaded with ‘float JoyShock::getSetting(SettingID)’
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:378:15: note: previous declaration ‘float JoyShock::getSetting(SettingID)’
  378 |         float getSetting(SettingID index)
      |               ^~~~~~~~~~
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:479:18: error: explicit specialization in non-namespace scope ‘class JoyShock’
  479 |         template<>
      |                  ^
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:480:22: error: template-id ‘getSetting<AxisSignPair>’ in declaration of primary template
  480 |         AxisSignPair getSetting<AxisSignPair>(SettingID index)
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:480:22: error: ‘AxisSignPair JoyShock::getSetting(SettingID)’ cannot be overloaded with ‘float JoyShock::getSetting(SettingID)’
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:378:15: note: previous declaration ‘float JoyShock::getSetting(SettingID)’
  378 |         float getSetting(SettingID index)
      |               ^~~~~~~~~~
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp: In instantiation of ‘E JoyShock::getSetting(SettingID) [with E = Color]’:
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:214:33:   required from here
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:315:43: error: static assertion failed: Parameter of JoyShock::getSetting<E> has to be an enum type
  315 |                 static_assert(is_enum<E>::value, "Parameter of JoyShock::getSetting<E> has to be an enum type");
      |                                           ^~~~~
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:315:43: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp: In instantiation of ‘E JoyShock::getSetting(SettingID) [with E = FloatXY]’:
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:1664:45:   required from here
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:315:43: error: static assertion failed: Parameter of JoyShock::getSetting<E> has to be an enum type
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:315:43: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp: In instantiation of ‘E JoyShock::getSetting(SettingID) [with E = std::pair<AxisMode, AxisMode>]’:
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:2060:42:   required from here
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:315:43: error: static assertion failed: Parameter of JoyShock::getSetting<E> has to be an enum type
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:315:43: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp: In instantiation of ‘E JoyShock::getSetting(SettingID) [with E = GyroSettings]’:
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:2655:42:   required from here
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:315:43: error: static assertion failed: Parameter of JoyShock::getSetting<E> has to be an enum type
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:315:43: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp: In instantiation of ‘E JoyShock::getSetting(SettingID) [with E = AdaptiveTriggerSetting]’:
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:3102:59:   required from here
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:315:43: error: static assertion failed: Parameter of JoyShock::getSetting<E> has to be an enum type
/home/jazztache/Source/JoyShockMapper/JoyShockMapper/src/main.cpp:315:43: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
make[2]: *** [JoyShockMapper/CMakeFiles/JoyShockMapper.dir/build.make:76: JoyShockMapper/CMakeFiles/JoyShockMapper.dir/src/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:177: JoyShockMapper/CMakeFiles/JoyShockMapper.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
jazztache@jazztarche-revengance ~/S/J/build (master) [2]> 

Jazztache avatar Sep 25 '23 10:09 Jazztache

Was this addressed? Any dependencies fixed or other necessary changes made?

Jazztache avatar Sep 28 '23 03:09 Jazztache

I'll reopen to let the linux specialist look at it.

Electronicks avatar Sep 28 '23 14:09 Electronicks

Thankyou. If they're not too busy, it might be fruitful to ping them here. It might also be useful to check if a similar issue is on JoyShockLibrary as well, since it could be an upstream issue.

Jazztache avatar Sep 28 '23 19:09 Jazztache

I just compiled JoyShockMapper on Arch Linux, and it works. Seems like you had a typo in your command: you used -DCMAKE_CXX_COMPILE=clang++, but it should have been -DCMAKE_CXX_COMPILER=clang++ (you forgot an R).

The AUR is indeed slightly broken as it tries to delete files which don't exist. You can fix it by removing the rm line near the end of the PKGBUILD file and replacing it with

find "${pkgdir}/usr/lib" -name '*.a' -exec rm "{}" \;
find "${pkgdir}/usr/lib" -name '*.so*' -exec rm "{}" \;

rtiemann avatar Oct 20 '23 21:10 rtiemann