[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1019471: yoshimi: FTBFS on riscv64 (undefined reference to `__atomic_compare_exchange_1')



Source: yoshimi
Version: 2.2.2-1
Severity: important
Tags: ftbfs patch
Justification: fails to build from source (but built successfully in the past)
X-Debbugs-Cc: i@hack3r.moe

Dear maintainer(s),

We are currently porting packages to riscv46 platform. yoshimi failed to build
on riscv64 due to not linking to libatomic:

```
[100%] Linking CXX executable yoshimi
/usr/bin/cmake -E cmake_link_script CMakeFiles/yoshimi.dir/link.txt --verbose=1
/usr/bin/c++ -ffast-math -fomit-frame-pointer -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -O3 -Wl,-z,relro -Wl,-z,now -rdynamic CMakeFiles/yoshimi.dir/Interface/InterChange.cpp.o CMakeFiles/yoshimi.dir/Interface/Data2Text.cpp.o CMakeFiles/yoshimi.dir/Interface/Text2Data.cpp.o CMakeFiles/yoshimi.dir/Interface/MidiLearn.cpp.o CMakeFiles/yoshimi.dir/Interface/MidiDecode.cpp.o CMakeFiles/yoshimi.dir/CLI/CmdInterface.cpp.o CMakeFiles/yoshimi.dir/CLI/CmdInterpreter.cpp.o CMakeFiles/yoshimi.dir/Misc/CmdOptions.cpp.o CMakeFiles/yoshimi.dir/Misc/Config.cpp.o CMakeFiles/yoshimi.dir/Misc/SynthEngine.cpp.o CMakeFiles/yoshimi.dir/Misc/Bank.cpp.o CMakeFiles/yoshimi.dir/Misc/BuildScheduler.cpp.o CMakeFiles/yoshimi.dir/Misc/Microtonal.cpp.o CMakeFiles/yoshimi.dir/Misc/Part.cpp.o CMakeFiles/yoshimi.dir/Misc/Splash.cpp.o CMakeFiles/yoshimi.dir/Misc/WavFile.cpp.o CMakeFiles/yoshimi.dir/Misc/XMLwrapper.cpp.o CMakeFiles/yoshimi.dir/Params/ADnoteParameters.cpp.o CMakeFiles/yoshimi.dir/Params/EnvelopeParams.cpp.o CMakeFiles/yoshimi.dir/Params/FilterParams.cpp.o CMakeFiles/yoshimi.dir/Params/LFOParams.cpp.o CMakeFiles/yoshimi.dir/Params/SUBnoteParameters.cpp.o CMakeFiles/yoshimi.dir/Params/PADnoteParameters.cpp.o CMakeFiles/yoshimi.dir/Params/Controller.cpp.o CMakeFiles/yoshimi.dir/Params/Presets.cpp.o CMakeFiles/yoshimi.dir/Params/PresetsStore.cpp.o CMakeFiles/yoshimi.dir/Params/UnifiedPresets.cpp.o CMakeFiles/yoshimi.dir/Params/OscilParameters.cpp.o CMakeFiles/yoshimi.dir/Synth/ADnote.cpp.o CMakeFiles/yoshimi.dir/Synth/Envelope.cpp.o CMakeFiles/yoshimi.dir/Synth/LFO.cpp.o CMakeFiles/yoshimi.dir/Synth/OscilGen.cpp.o CMakeFiles/yoshimi.dir/Synth/SUBnote.cpp.o CMakeFiles/yoshimi.dir/Synth/Resonance.cpp.o CMakeFiles/yoshimi.dir/Synth/PADnote.cpp.o CMakeFiles/yoshimi.dir/DSP/AnalogFilter.cpp.o CMakeFiles/yoshimi.dir/DSP/Filter.cpp.o CMakeFiles/yoshimi.dir/DSP/FormantFilter.cpp.o CMakeFiles/yoshimi.dir/DSP/SVFilter.cpp.o CMakeFiles/yoshimi.dir/DSP/Unison.cpp.o CMakeFiles/yoshimi.dir/Effects/Alienwah.cpp.o CMakeFiles/yoshimi.dir/Effects/Chorus.cpp.o CMakeFiles/yoshimi.dir/Effects/Echo.cpp.o CMakeFiles/yoshimi.dir/Effects/EffectLFO.cpp.o CMakeFiles/yoshimi.dir/Effects/EffectMgr.cpp.o CMakeFiles/yoshimi.dir/Effects/Effect.cpp.o CMakeFiles/yoshimi.dir/Effects/Phaser.cpp.o CMakeFiles/yoshimi.dir/Effects/Reverb.cpp.o CMakeFiles/yoshimi.dir/Effects/EQ.cpp.o CMakeFiles/yoshimi.dir/Effects/Distorsion.cpp.o CMakeFiles/yoshimi.dir/Effects/DynamicFilter.cpp.o CMakeFiles/yoshimi.dir/MusicIO/MusicClient.cpp.o CMakeFiles/yoshimi.dir/MusicIO/MusicIO.cpp.o CMakeFiles/yoshimi.dir/MusicIO/JackEngine.cpp.o CMakeFiles/yoshimi.dir/MusicIO/AlsaEngine.cpp.o CMakeFiles/yoshimi.dir/PresetsUI.cpp.o CMakeFiles/yoshimi.dir/EnvelopeUI.cpp.o CMakeFiles/yoshimi.dir/LFOUI.cpp.o CMakeFiles/yoshimi.dir/FilterUI.cpp.o CMakeFiles/yoshimi.dir/VirKeyboardUI.cpp.o CMakeFiles/yoshimi.dir/ConfigUI.cpp.o CMakeFiles/yoshimi.dir/SUBnoteUI.cpp.o CMakeFiles/yoshimi.dir/ResonanceUI.cpp.o CMakeFiles/yoshimi.dir/OscilGenUI.cpp.o CMakeFiles/yoshimi.dir/ADnoteUI.cpp.o CMakeFiles/yoshimi.dir/PADnoteUI.cpp.o CMakeFiles/yoshimi.dir/EffUI.cpp.o CMakeFiles/yoshimi.dir/BankUI.cpp.o CMakeFiles/yoshimi.dir/PartUI.cpp.o CMakeFiles/yoshimi.dir/MicrotonalUI.cpp.o CMakeFiles/yoshimi.dir/MasterUI.cpp.o CMakeFiles/yoshimi.dir/MasterMiscUI.cpp.o CMakeFiles/yoshimi.dir/ParametersUI.cpp.o CMakeFiles/yoshimi.dir/ConsoleUI.cpp.o CMakeFiles/yoshimi.dir/VectorUI.cpp.o CMakeFiles/yoshimi.dir/MidiLearnUI.cpp.o CMakeFiles/yoshimi.dir/UI/DynamicTooltip.cpp.o CMakeFiles/yoshimi.dir/UI/WidgetPDial.cpp.o CMakeFiles/yoshimi.dir/UI/WidgetCheckButton.cpp.o CMakeFiles/yoshimi.dir/UI/WidgetSpinner.cpp.o CMakeFiles/yoshimi.dir/UI/WidgetMWSlider.cpp.o CMakeFiles/yoshimi.dir/UI/YoshiWin.cpp.o CMakeFiles/yoshimi.dir/UI/MiscGui.cpp.o CMakeFiles/yoshimi.dir/main.cpp.o -o yoshimi  -lfontconfig -lfreetype -lfltk_images -lfltk_forms -lfltk_gl -lfltk -lSM -lICE -lX11 -lXext -lm -lmxml -lasound -ljack -lfftw3f -lcairo -lncurses -lform -lreadline -lz -Wl,-Bstatic -ldl -Wl,-Bdynamic 
/usr/bin/ld: CMakeFiles/yoshimi.dir/Params/PADnoteParameters.cpp.o: in function `std::__atomic_base<bool>::compare_exchange_strong(bool&, bool, std::memory_order, std::memory_order)':
/usr/include/c++/12/bits/new_allocator.h:158: undefined reference to `__atomic_compare_exchange_1'
/usr/bin/ld: CMakeFiles/yoshimi.dir/Params/PADnoteParameters.cpp.o: in function `std::__atomic_base<bool>::compare_exchange_strong(bool&, bool, std::memory_order, std::memory_order)':
/usr/include/c++/12/bits/atomic_base.h:560: undefined reference to `__atomic_compare_exchange_1'
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/yoshimi.dir/build.make:1522: yoshimi] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:106: CMakeFiles/yoshimi.dir/all] Error 2
make[2]: Leaving directory '/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu'
make[1]: *** [Makefile:139: all] Error 2
```

This can be fixed by manually linking libatomic, which I've included a patch to
do so. Please let me know if I missed anything.

Cheers,
Eric
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -464,6 +464,10 @@
     target_link_libraries (yoshimi ${ARGP_LIB})
 endif ()
 
+if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "riscv64")
+    target_link_libraries (yoshimi atomic)
+endif ()
+
 install (TARGETS yoshimi RUNTIME DESTINATION bin)
 
 install (DIRECTORY ../banks DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/yoshimi

Reply to: