I can get SDL to work for audio, input and video but as soon as I try to use anything in TTF, I get crazy link errors.
Here is the relevent portion of my makefile
ARCH := -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE
CFLAGS := -g -Wall -O2 -ffunction-sections \
$(ARCH) $(DEFINES)
CFLAGS += $(INCLUDE) -D__SWITCH__
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
ASFLAGS := -g $(ARCH)
LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
LIBS := -lSDL2_ttf -lSDL2_gfx -lSDL2_image -lSDL2_mixer -lSDL2 -lpng -ljpeg -lglad -lEGL -lglapi -ldrm_nouveau -lvorbisidec -logg -lmpg123 -lmodplug -lstdc++ -lavformat -lavcodec -lswresample -lswscale -lavutil -lbz2 -lass -ltheora -lvorbis -lopus -lnx
and here is the code in question
#include <switch.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>
...
if (TTF_Init() < 0)
{
printf("Error initializing TTF : %s\n", TTF_GetError());
return false;
}
as soon as TTF_Init is put in the code, I get this in the terminal.
aarch64-none-elf-g++ -MMD -MP -MF /c/development/Projects/CPP/Switch_SDLPractice/Switch_SDLPractice/build/window.d -g -Wall -O2 -ffunction-sections -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE -I/c/development/Projects/CPP/Switch_SDLPractice/Switch_SDLPractice/include -I/C\devkitPro/portlibs/switch/include -IC:\devkitPro/libnx/include -I/c/development/Projects/CPP/Switch_SDLPractice/Switch_SDLPractice/build -D__SWITCH__ -fno-rtti -fno-exceptions -c /c/development/Projects/CPP/Switch_SDLPractice/Switch_SDLPractice/source/window.cpp -o window.o
linking Switch_SDLPractice.elf
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `Load_Glyph':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:602: undefined reference to `FT_Load_Glyph'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:687: undefined reference to `FT_Render_Glyph'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:888: undefined reference to `FT_Done_Glyph'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:600: undefined reference to `FT_Get_Char_Index'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:602: undefined reference to `FT_Load_Glyph'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:670: undefined reference to `FT_Get_Glyph'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:671: undefined reference to `FT_Stroker_New'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:675: undefined reference to `FT_Stroker_Set'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:676: undefined reference to `FT_Glyph_Stroke'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:677: undefined reference to `FT_Stroker_Done'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:679: undefined reference to `FT_Glyph_To_Bitmap'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:664: undefined reference to `FT_Outline_Transform'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:681: undefined reference to `FT_Done_Glyph'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `TTF_Init':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:339: undefined reference to `FT_Init_FreeType'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `TTF_CloseFont':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:920: undefined reference to `FT_Done_Face'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `TTF_OpenFontIndexRW':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:431: undefined reference to `FT_Open_Face'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:453: undefined reference to `FT_Set_Charmap'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:483: undefined reference to `FT_Set_Pixel_Sizes'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:459: undefined reference to `FT_Set_Char_Size'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:468: undefined reference to `FT_MulFix'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:469: undefined reference to `FT_MulFix'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:471: undefined reference to `FT_MulFix'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:472: undefined reference to `FT_MulFix'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: /home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:473: undefined reference to `FT_MulFix'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `TTF_GlyphIsProvided':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:1131: undefined reference to `FT_Get_Char_Index'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `TTF_SizeUTF8':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:1234: undefined reference to `FT_Get_Kerning'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `TTF_RenderUTF8_Solid':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:1422: undefined reference to `FT_Get_Kerning'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `TTF_RenderUTF8_Shaded':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:1603: undefined reference to `FT_Get_Kerning'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `TTF_RenderUTF8_Blended':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:1773: undefined reference to `FT_Get_Kerning'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `TTF_RenderUTF8_Blended_Wrapped':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:2041: undefined reference to `FT_Get_Kerning'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `TTF_Quit':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:2189: undefined reference to `FT_Done_FreeType'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `TTF_GetFontKerningSize':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:2203: undefined reference to `FT_Get_Kerning'
c:/devkitpro/devkita64/bin/../lib/gcc/aarch64-none-elf/8.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/devkitPro/portlibs/switch/lib\libSDL2_ttf.a(SDL_ttf.o): in function `TTF_GetFontKerningSizeGlyphs':
/home/davem/projects/devkitpro/pacman-packages/switch/SDL2_ttf/src/SDL2_ttf-2.0.14/SDL_ttf.c:2235: undefined reference to `FT_Get_Kerning'
collect2.exe: error: ld returned 1 exit status
make[1]: *** [C:\devkitPro/libnx/switch_rules:80: /c/development/Projects/CPP/Switch_SDLPractice/Switch_SDLPractice/Switch_SDLPractice.elf] Error 1
make: *** [Makefile:290: build] Error 2
I've tried:
- reinstalling all switch related pacman packages.
- Re-ordering include statements.
- Re-ordering libs := ...
Does anyone have any pointers for where to go next with this?