XITRIX / Moonlight-Switch

Moonlight port for Nintendo Switch
907 stars 49 forks source link

Problem when building in the msys2 with devkitpro environment #97

Closed derfehler closed 1 year ago

derfehler commented 1 year ago

I am trying to build in msys2 environment with devkitpro, all updated to current versions, all dependencies installed. At the linking stage it shows errors:

linking Moonlight-Switch.elf
C:/msys64/opt/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: C:/msys64/opt/d
evkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: DWARF error: can't find .debug
_ranges section.
C:/msys64/opt/devkitpro/portlibs/switch/lib\libSDL2.a(SDL_switchaudio.o): in function `SWITCHAUDIO_CloseDevice':
SDL_switchaudio.c:(.text.SWITCHAUDIO_CloseDevice+0x10): undefined reference to `audoutStopAudioOut'
C:/msys64/opt/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: C:/msys64/opt/d
evkitpro/portlibs/switch/lib\libSDL2.a(SDL_switchaudio.o): in function `SWITCHAUDIO_WaitDevice':
SDL_switchaudio.c:(.text.SWITCHAUDIO_WaitDevice+0x10): undefined reference to `audoutWaitPlayFinish'
C:/msys64/opt/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: C:/msys64/opt/d
evkitpro/portlibs/switch/lib\libSDL2.a(SDL_switchaudio.o): in function `SWITCHAUDIO_PlayDevice':
SDL_switchaudio.c:(.text.SWITCHAUDIO_PlayDevice+0x2c): undefined reference to `audoutAppendAudioOutBuffer'
C:/msys64/opt/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: C:/msys64/opt/d
evkitpro/portlibs/switch/lib\libSDL2.a(SDL_switchaudio.o): in function `SWITCHAUDIO_OpenDevice':
SDL_switchaudio.c:(.text.SWITCHAUDIO_OpenDevice+0x2c): undefined reference to `audoutInitialize'
C:/msys64/opt/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: SDL_switchaudio
.c:(.text.SWITCHAUDIO_OpenDevice+0x38): undefined reference to `audoutGetPcmFormat'
C:/msys64/opt/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: SDL_switchaudio
.c:(.text.SWITCHAUDIO_OpenDevice+0xa4): undefined reference to `audoutGetSampleRate'
C:/msys64/opt/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: SDL_switchaudio
.c:(.text.SWITCHAUDIO_OpenDevice+0xac): undefined reference to `audoutGetChannelCount'
C:/msys64/opt/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: SDL_switchaudio
.c:(.text.SWITCHAUDIO_OpenDevice+0x1b4): undefined reference to `audoutAppendAudioOutBuffer'
C:/msys64/opt/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: SDL_switchaudio
.c:(.text.SWITCHAUDIO_OpenDevice+0x1c0): undefined reference to `audoutStartAudioOut'
C:/msys64/opt/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: C:/msys64/opt/d
evkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: DWARF error: can't find .debug
_ranges section.
C:/msys64/opt/devkitpro/portlibs/switch/lib\libSDL2.a(SDL_sysjoystick.o): in function `SWITCH_UpdateControllerSupport':
SDL_sysjoystick.c:(.text.SWITCH_UpdateControllerSupport+0x164): undefined reference to `hidLaCreateControllerSupportArg'
C:/msys64/opt/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/13.1.0/../../../../aarch64-none-elf/bin/ld.exe: SDL_sysjoystick
.c:(.text.SWITCH_UpdateControllerSupport+0x17c): undefined reference to `hidLaShowControllerSupportForSystem'
collect2.exe: error: ld returned 1 exit status
make[1]: *** [/opt/devkitpro/libnx/switch_rules:81: /home/derfe/build/Moonlight-Switch/Moonlight-Switch.elf] Error 1
make: *** [Makefile:184: build.nx] Error 2
derfehler commented 1 year ago

I solved my problem, I added the following changes to the Makefile: (many thanks to gbatemp.net folks - jonyluke, XorTroll)

CFLAGS += !!! existing code !!! `sdl2-config --cflags`

LIBS    :=  !!! existing code !!!  `sdl2-config --libs`