NovaSquirrel/Mesen-X

[Libretro] build failes with numerous "error: undefined reference to xyz"

Closed this issue · 1 comments

Building the libretro core failes on Linux for multiple targets (x86/arm) with e.g. error: undefined reference to 'OPN2_Reset'

I use the LibreELEC toolchain, my package file: https://github.com/SupervisedThinking/LibreELEC-RR/blob/master-rr/packages/supervisedthinking/emulation/libretro/mesen/package.mk & currently https://github.com/NovaSquirrel/Mesen-X/releases/tag/0.9.9 builds fine.

This is the last proper building master commit 3e1b195

/mnt/dev/LibreELEC-RR/build.LibreELEC-AMLG12B.arm-11.0-devel/toolchain/bin/armv8a-libreelec-linux-gnueabihf-g++ -fPIC -pthread -shared -Wl,--version-script=./link.T -Wl,--no-undefined  -omesen_libretro.so ../SevenZip/7zAlloc.o ../SevenZip/7zArcIn.o ../SevenZip/7zBuf.o ../SevenZip/7zCrc.o ../SevenZip/7zCrcOpt.o ../SevenZip/7zDec.o ../SevenZip/7zFile.o ../SevenZip/7zMemBuffer.o ../SevenZip/7zStream.o ../SevenZip/Bcj2.o ../SevenZip/Bra.o ../SevenZip/Bra86.o ../SevenZip/BraIA64.o ../SevenZip/CpuArch.o ../SevenZip/Delta.o ../SevenZip/Lzma2Dec.o ../SevenZip/LzmaDec.o ../SevenZip/Ppmd7.o ../SevenZip/Ppmd7Dec.o ../SevenZip/Precomp.o ./libretro.o ../Core/APU.o ../Core/Assembler.o ../Core/AutomaticRomTest.o ../Core/AutoSaveManager.o ../Core/BaseControlDevice.o ../Core/BaseExpansionAudio.o ../Core/BaseMapper.o ../Core/BaseRenderer.o ../Core/BaseVideoFilter.o ../Core/BatteryManager.o ../Core/BisqwitNtscFilter.o ../Core/BizhawkMovie.o ../Core/Breakpoint.o ../Core/CheatManager.o ../Core/CodeDataLogger.o ../Core/CodeRunner.o ../Core/Console.o ../Core/ControlManager.o ../Core/CPU.o ../Core/CrossFeedFilter.o ../Core/Debugger.o ../Core/DebugHud.o ../Core/DefaultVideoFilter.o ../Core/RawVideoFilter.o ../Core/DeltaModulationChannel.o ../Core/Disassembler.o ../Core/DisassemblyInfo.o ../Core/EmulationSettings.o ../Core/EventManager.o ../Core/ExpressionEvaluator.o ../Core/FceuxMovie.o ../Core/FDS.o ../Core/FdsLoader.o ../Core/GameClient.o ../Core/GameClientConnection.o ../Core/GameConnection.o ../Core/GameDatabase.o ../Core/GameServer.o ../Core/GameServerConnection.o ../Core/HdAudioDevice.o ../Core/HdNesPack.o ../Core/HdPackBuilder.o ../Core/HdPackLoader.o ../Core/HdPpu.o ../Core/HdVideoFilter.o ../Core/HistoryViewer.o ../Core/iNesLoader.o ../Core/KeyManager.o ../Core/LabelManager.o ../Core/MapperFactory.o ../Core/MemoryAccessCounter.o ../Core/MemoryDumper.o ../Core/MemoryManager.o ../Core/MesenMovie.o ../Core/MessageManager.o ../Core/MovieManager.o ../Core/MovieRecorder.o ../Core/NESHeader.o ../Core/NotificationManager.o ../Core/NsfLoader.o ../Core/NsfMapper.o ../Core/NsfPpu.o ../Core/NtscFilter.o ../Core/OggMixer.o ../Core/OggReader.o ../Core/PPU.o ../Core/PerformanceTracker.o ../Core/PgoUtilities.o ../Core/Profiler.o ../Core/RecordedRomTest.o ../Core/ReverbFilter.o ../Core/RewindData.o ../Core/RewindManager.o ../Core/RomLoader.o ../Core/RotateFilter.o ../Core/SaveStateManager.o ../Core/ScaleFilter.o ../Core/ScriptHost.o ../Core/ScriptingContext.o ../Core/ShortcutKeyHandler.o ../Core/Snapshotable.o ../Core/SoundMixer.o ../Core/stdafx.o ../Core/StereoCombFilter.o ../Core/StereoDelayFilter.o ../Core/StereoPanningFilter.o ../Core/StudyBoxLoader.o ../Core/TraceLogger.o ../Core/UnifLoader.o ../Core/VideoDecoder.o ../Core/VideoHud.o ../Core/VideoRenderer.o ../Core/VirtualFile.o ../Core/VsControlManager.o ../Core/WaveRecorder.o ../Utilities/ArchiveReader.o ../Utilities/AutoResetEvent.o ../Utilities/AviRecorder.o ../Utilities/AviWriter.o ../Utilities/blip_buf.o ../Utilities/BpsPatcher.o ../Utilities/CamstudioCodec.o ../Utilities/CRC32.o ../Utilities/FolderUtilities.o ../Utilities/GifRecorder.o ../Utilities/HexUtilities.o ../Utilities/IpsPatcher.o ../Utilities/md5.o ../Utilities/miniz.o ../Utilities/nes_ntsc.o ../Utilities/PlatformUtilities.o ../Utilities/PNGHelper.o ../Utilities/sha1.o ../Utilities/SimpleLock.o ../Utilities/Socket.o ../Utilities/stb_vorbis.o ../Utilities/stdafx.o ../Utilities/SZReader.o ../Utilities/Timer.o ../Utilities/UpsPatcher.o ../Utilities/UTF8Util.o ../Utilities/WavReader.o ../Utilities/ZipReader.o ../Utilities/ZipWriter.o ../Utilities/ZmbvCodec.o ../Utilities/HQX/hq2x.o ../Utilities/HQX/hq3x.o ../Utilities/HQX/hq4x.o ../Utilities/HQX/init.o ../Utilities/KreedSaiEagle/2xSai.o ../Utilities/KreedSaiEagle/Super2xSai.o ../Utilities/KreedSaiEagle/SuperEagle.o ../Utilities/Scale2x/scale2x.o ../Utilities/Scale2x/scale3x.o ../Utilities/Scale2x/scalebit.o ../Utilities/xBRZ/xbrz.o -march=armv8-a+crc -mtune=cortex-a73.cortex-a53 -Wl,--as-needed -fuse-ld=gold -lm
make: Leaving directory '/mnt/dev/LibreELEC-RR/build.LibreELEC-AMLG12B.arm-11.0-devel/build/mesen-3e1b19507e159f69964d4c62daad972a8aafe911/Libretro'
'Libretro/mesen_libretro.so' -> '/mnt/dev/LibreELEC-RR/build.LibreELEC-AMLG12B.arm-11.0-devel/install_pkg/mesen-3e1b19507e159f69964d4c62daad972a8aafe911/usr/lib/libretro/mesen_libretro.so'

It's broken after edd8106

/mnt/dev/LibreELEC-RR/build.LibreELEC-AMLG12B.arm-11.0-devel/toolchain/bin/armv8a-libreelec-linux-gnueabihf-g++ -fPIC -pthread -shared -Wl,--version-script=./link.T -Wl,--no-undefined  -omesen_libretro.so ../SevenZip/7zAlloc.o ../SevenZip/7zArcIn.o ../SevenZip/7zBuf.o ../SevenZip/7zCrc.o ../SevenZip/7zCrcOpt.o ../SevenZip/7zDec.o ../SevenZip/7zFile.o ../SevenZip/7zMemBuffer.o ../SevenZip/7zStream.o ../SevenZip/Bcj2.o ../SevenZip/Bra.o ../SevenZip/Bra86.o ../SevenZip/BraIA64.o ../SevenZip/CpuArch.o ../SevenZip/Delta.o ../SevenZip/Lzma2Dec.o ../SevenZip/LzmaDec.o ../SevenZip/Ppmd7.o ../SevenZip/Ppmd7Dec.o ../SevenZip/Precomp.o ./libretro.o ../Core/APU.o ../Core/Assembler.o ../Core/AutomaticRomTest.o ../Core/AutoSaveManager.o ../Core/BaseControlDevice.o ../Core/BaseExpansionAudio.o ../Core/BaseMapper.o ../Core/BaseRenderer.o ../Core/BaseVideoFilter.o ../Core/BatteryManager.o ../Core/BisqwitNtscFilter.o ../Core/BizhawkMovie.o ../Core/Breakpoint.o ../Core/CheatManager.o ../Core/CodeDataLogger.o ../Core/CodeRunner.o ../Core/Console.o ../Core/ControlManager.o ../Core/CPU.o ../Core/CrossFeedFilter.o ../Core/Debugger.o ../Core/DebugHud.o ../Core/DefaultVideoFilter.o ../Core/RawVideoFilter.o ../Core/DeltaModulationChannel.o ../Core/Disassembler.o ../Core/DisassemblyInfo.o ../Core/EmulationSettings.o ../Core/EventManager.o ../Core/ExpressionEvaluator.o ../Core/FceuxMovie.o ../Core/FDS.o ../Core/FdsLoader.o ../Core/GameClient.o ../Core/GameClientConnection.o ../Core/GameConnection.o ../Core/GameDatabase.o ../Core/GameServer.o ../Core/GameServerConnection.o ../Core/HdAudioDevice.o ../Core/HdNesPack.o ../Core/HdPackBuilder.o ../Core/HdPackLoader.o ../Core/HdPpu.o ../Core/HdVideoFilter.o ../Core/HistoryViewer.o ../Core/iNesLoader.o ../Core/KeyManager.o ../Core/LabelManager.o ../Core/MapperFactory.o ../Core/MemoryAccessCounter.o ../Core/MemoryDumper.o ../Core/MemoryManager.o ../Core/MesenMovie.o ../Core/MessageManager.o ../Core/MovieManager.o ../Core/MovieRecorder.o ../Core/NESHeader.o ../Core/NotificationManager.o ../Core/NsfLoader.o ../Core/NsfMapper.o ../Core/NsfPpu.o ../Core/NtscFilter.o ../Core/OggMixer.o ../Core/OggReader.o ../Core/PPU.o ../Core/PerformanceTracker.o ../Core/PgoUtilities.o ../Core/Profiler.o ../Core/RecordedRomTest.o ../Core/ReverbFilter.o ../Core/RewindData.o ../Core/RewindManager.o ../Core/RomLoader.o ../Core/RotateFilter.o ../Core/SaveStateManager.o ../Core/ScaleFilter.o ../Core/ScriptHost.o ../Core/ScriptingContext.o ../Core/ShortcutKeyHandler.o ../Core/Snapshotable.o ../Core/SoundMixer.o ../Core/stdafx.o ../Core/StereoCombFilter.o ../Core/StereoDelayFilter.o ../Core/StereoPanningFilter.o ../Core/StudyBoxLoader.o ../Core/TraceLogger.o ../Core/UnifLoader.o ../Core/VideoDecoder.o ../Core/VideoHud.o ../Core/VideoRenderer.o ../Core/VirtualFile.o ../Core/VsControlManager.o ../Core/WaveRecorder.o ../Utilities/ArchiveReader.o ../Utilities/AutoResetEvent.o ../Utilities/AviRecorder.o ../Utilities/AviWriter.o ../Utilities/blip_buf.o ../Utilities/BpsPatcher.o ../Utilities/CamstudioCodec.o ../Utilities/CRC32.o ../Utilities/FolderUtilities.o ../Utilities/GifRecorder.o ../Utilities/HexUtilities.o ../Utilities/IpsPatcher.o ../Utilities/md5.o ../Utilities/miniz.o ../Utilities/nes_ntsc.o ../Utilities/PlatformUtilities.o ../Utilities/PNGHelper.o ../Utilities/sha1.o ../Utilities/SimpleLock.o ../Utilities/Socket.o ../Utilities/stb_vorbis.o ../Utilities/stdafx.o ../Utilities/SZReader.o ../Utilities/Timer.o ../Utilities/UpsPatcher.o ../Utilities/UTF8Util.o ../Utilities/WavReader.o ../Utilities/ZipReader.o ../Utilities/ZipWriter.o ../Utilities/ZmbvCodec.o ../Utilities/HQX/hq2x.o ../Utilities/HQX/hq3x.o ../Utilities/HQX/hq4x.o ../Utilities/HQX/init.o ../Utilities/KreedSaiEagle/2xSai.o ../Utilities/KreedSaiEagle/Super2xSai.o ../Utilities/KreedSaiEagle/SuperEagle.o ../Utilities/Scale2x/scale2x.o ../Utilities/Scale2x/scale3x.o ../Utilities/Scale2x/scalebit.o ../Utilities/xBRZ/xbrz.o -march=armv8-a+crc -mtune=cortex-a73.cortex-a53 -Wl,--as-needed -fuse-ld=gold -lm
../Core/BaseMapper.o:BaseMapper.cpp:function BaseMapper::Initialize(RomData&): error: undefined reference to 'OPN2_Reset'
../Core/BaseMapper.o:BaseMapper.cpp:function BaseMapper::Initialize(RomData&): error: undefined reference to 'OPN2_SetChipType'
../Core/BaseMapper.o:BaseMapper.cpp:function EPSGAudio::ClockAudio(): error: undefined reference to 'OPN2_Clock'
../Core/BaseMapper.o:BaseMapper.cpp:function EPSGAudio::ClockAudio(): error: undefined reference to 'OPN2_Write'
../Core/MapperFactory.o:MapperFactory.cpp:function Vrc7Audio::ClockAudio(): error: undefined reference to 'OPLL_Clock(opll_t*, int*)'
../Core/MapperFactory.o:MapperFactory.cpp:function Vrc7Audio::ClockAudio(): error: undefined reference to 'OPLL_Write(opll_t*, unsigned int, unsigned char)'
../Core/MapperFactory.o:MapperFactory.cpp:function VRC7::InitMapper(): error: undefined reference to 'OPLL_Reset(opll_t*, unsigned int)'
../Core/NsfMapper.o:NsfMapper.cpp:function NsfMapper::InitMapper(): error: undefined reference to 'OPLL_Reset(opll_t*, unsigned int)'
../Core/NsfMapper.o:NsfMapper.cpp:function NsfMapper::InitMapper(): error: undefined reference to 'OPN2_Reset'
../Core/NsfMapper.o:NsfMapper.cpp:function NsfMapper::InitMapper(): error: undefined reference to 'OPN2_SetChipType'
collect2: error: ld returned 1 exit status
make: *** [Makefile:340: mesen_libretro.so] Error 1
make: Leaving directory '/mnt/dev/LibreELEC-RR/build.LibreELEC-AMLG12B.arm-11.0-devel/build/mesen-edd8106a5a56d5ac07c3a1e54f58ce5b71103d1f/Libretro'

See my answer in issues/46