Emscripten build gives an error in building, error is about SDL3_ttf

16 hours ago 3
ARTICLE AD BOX

I am making a game engine and a game in said engine. So i thought its time to split them up in to a static lib and a exe. I made 2 sepperate extra cmakelists for it. one for the engine and one for the game.

This used to work when i had one big cmake file. And began to break when i split them into 3 files (main, game, engine)

Now my problem is, emscripten doesnt seem to like what i do for my engine for SDL3_ttf...

Could someone help me out in this one?

Here is my cmake code:

cmake_minimum_required(VERSION 3.26) project(MiniginWorkspace) # --- 1. Global Platform Setup --- if (EMSCRIPTEN) set(TARGET_NAME BurgerTime_web) set(TARGET_PARAM "") file(WRITE "${CMAKE_BINARY_DIR}/dummy_freetype.a" "") set(Freetype_FOUND TRUE CACHE BOOL "" FORCE) set(FREETYPE_FOUND TRUE CACHE BOOL "" FORCE) set(FREETYPE_INCLUDE_DIRS "EMSCRIPTEN_INTERNAL" CACHE PATH "" FORCE) set(FREETYPE_LIBRARY "${CMAKE_BINARY_DIR}/dummy_freetype.a" CACHE FILEPATH "" FORCE) set(FREETYPE_LIBRARIES "${CMAKE_BINARY_DIR}/dummy_freetype.a" CACHE FILEPATH "" FORCE) file(WRITE "${CMAKE_BINARY_DIR}/dummy_harfbuzz.a" "") set(HarfBuzz_FOUND TRUE CACHE BOOL "" FORCE) set(HarfBuzz_INCLUDE_DIRS "EMSCRIPTEN_INTERNAL" CACHE PATH "" FORCE) set(HarfBuzz_LIBRARIES "${CMAKE_BINARY_DIR}/dummy_harfbuzz.a" CACHE FILEPATH "" FORCE) add_compile_options("-sUSE_FREETYPE=1" "-sUSE_HARFBUZZ=1") add_link_options("-sUSE_FREETYPE=1" "-sUSE_HARFBUZZ=1") else () set(TARGET_NAME BurgerTime) set(TARGET_PARAM WIN32) endif () # --- 2. Dependencies (FetchContent) --- include(FetchContent) # GLM find_package(glm CONFIG QUIET) if (NOT glm_FOUND) FetchContent_Declare(glm URL https://github.com/g-truc/glm/releases/download/1.0.3/glm-1.0.3.zip) FetchContent_MakeAvailable(glm) endif () # SDL3 find_package(SDL3 3.4 CONFIG QUIET) if (NOT SDL3_FOUND) if (WIN32) FetchContent_Declare(SDL3 URL https://www.libsdl.org/release/SDL3-devel-3.4.0-VC.zip) FetchContent_MakeAvailable(SDL3) list(PREPEND CMAKE_PREFIX_PATH "${sdl3_SOURCE_DIR}") find_package(SDL3 CONFIG REQUIRED) else () FetchContent_Declare(SDL3 GIT_REPOSITORY https://github.com/libsdl-org/SDL.git GIT_TAG release-3.4.0) FetchContent_MakeAvailable(SDL3) endif () endif () # Add SDL3_ttf find_package(SDL3_ttf 3.2.2 CONFIG QUIET) if (NOT SDL3_ttf_FOUND) if (WIN32) FetchContent_Declare(SDL3_ttf URL https://www.libsdl.org/projects/SDL_ttf/release/SDL3_ttf-devel-3.2.2-VC.zip) FetchContent_MakeAvailable(SDL3_ttf) list(PREPEND CMAKE_PREFIX_PATH "${sdl3_ttf_SOURCE_DIR}") find_package(SDL3_ttf CONFIG REQUIRED) else () FetchContent_Declare(SDL3_ttf GIT_REPOSITORY https://github.com/libsdl-org/SDL_ttf.git GIT_TAG release-3.2.2) if (EMSCRIPTEN) set(SDL3TTF_VENDORED OFF CACHE BOOL "" FORCE) set(SDL3TTF_SYSTEM_FREETYPE ON CACHE BOOL "" FORCE) set(SDL3TTF_HARFBUZZ ON CACHE BOOL "" FORCE) set(SDL3TTF_INSTALL OFF CACHE BOOL "" FORCE) set(Freetype_DIR "${CMAKE_BINARY_DIR}" CACHE PATH "" FORCE) endif () FetchContent_MakeAvailable(SDL3_ttf) endif () endif () # ImGui & ImPlot FetchContent_Declare(imgui GIT_REPOSITORY https://github.com/ocornut/imgui GIT_TAG v1.92.5-docking) FetchContent_Declare(implot GIT_REPOSITORY https://github.com/epezent/implot.git GIT_TAG v0.17) FetchContent_MakeAvailable(imgui implot) # --- 3. Optional Features (VLD/Steam) --- if (WIN32) find_package(VLD CONFIG) endif () list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/steam") find_package(Steamworks QUIET) # --- 4. Add Subdirectories --- add_subdirectory(Minigin) add_subdirectory(Game)

And here is the error I;ve gotten from the github action:

-- GLM: Version 1.0.3 -- GLM: Disable -Wc++98-compat warnings -- GLM: Build with C++ features auto detection -- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.1") -- Detecting Target CPU Architecture -- Detecting Target CPU Architecture - EMSCRIPTEN -- Performing Test COMPILER_SUPPORTS_FCOLOR_DIAGNOSTICS -- Performing Test COMPILER_SUPPORTS_FCOLOR_DIAGNOSTICS - Success -- Looking for getresgid -- Looking for getresgid - found -- Looking for getresuid -- Looking for getresuid - found -- Checking for modules 'libunwind;libunwind-generic' -- Package 'libunwind', required by 'virtual:world', not found -- Package 'libunwind-generic', required by 'virtual:world', not found -- Performing Test HAVE_POSIX_SPAWN -- Performing Test HAVE_POSIX_SPAWN - Failed -- Looking for vfork -- Looking for vfork - found -- -- SDL3 was configured with the following options: -- -- Platform: Emscripten-1 -- 64-bit: FALSE -- Compiler: /home/runner/work/_temp/21a43070-12d7-4f27-af94-251902edc8f1/emsdk-main/upstream/emscripten/emcc -- Revision: SDL-3.4.0-release-3.4.0 -- Vendor: -- -- Subsystems: -- Audio: ON -- Video: ON -- GPU: ON -- Render: ON -- Camera: ON -- Joystick: ON -- Haptic: ON -- Hidapi: ON -- Power: ON -- Sensor: ON -- Dialog: ON -- Tray: ON -- -- Options: -- SDL_ALSA (Wanted: ON): OFF -- SDL_ALSA_SHARED (Wanted: OFF): OFF -- SDL_ALTIVEC (Wanted: OFF): OFF -- SDL_ARMNEON (Wanted: OFF): OFF -- SDL_ASAN (Wanted: OFF): OFF -- SDL_ASSEMBLY (Wanted: OFF): OFF -- SDL_ASSERTIONS (Wanted: auto): auto -- SDL_AVX (Wanted: OFF): OFF -- SDL_AVX2 (Wanted: OFF): OFF -- SDL_AVX512F (Wanted: OFF): OFF -- SDL_BACKGROUNDING_SIGNAL (Wanted: OFF): OFF -- SDL_CCACHE (Wanted: OFF): OFF -- SDL_CLANG_TIDY (Wanted: OFF): OFF -- SDL_CLOCK_GETTIME (Wanted: ON): ON -- SDL_COCOA (Wanted: OFF): OFF -- SDL_DBUS (Wanted: ON): OFF -- SDL_DEPS_SHARED (Wanted: OFF): OFF -- SDL_DIRECTX (Wanted: OFF): OFF -- SDL_DISKAUDIO (Wanted: ON): ON -- SDL_DLOPEN_NOTES (Wanted: ON): OFF -- SDL_DUMMYAUDIO (Wanted: ON): ON -- SDL_DUMMYCAMERA (Wanted: ON): ON -- SDL_DUMMYVIDEO (Wanted: ON): ON -- SDL_EXAMPLES (Wanted: OFF): OFF -- SDL_EXAMPLES_LINK_SHARED (Wanted: OFF): OFF -- SDL_FOREGROUNDING_SIGNAL (Wanted: OFF): OFF -- SDL_FRIBIDI (Wanted: ON): OFF -- SDL_FRIBIDI_SHARED (Wanted: OFF): OFF -- SDL_GCC_ATOMICS (Wanted: ON): ON -- SDL_HIDAPI (Wanted: ON): OFF -- SDL_HIDAPI_JOYSTICK (Wanted: ON): OFF -- SDL_HIDAPI_LIBUSB (Wanted: ON): OFF -- SDL_HIDAPI_LIBUSB_SHARED (Wanted: OFF): OFF -- SDL_IBUS (Wanted: ON): OFF -- SDL_INSTALL (Wanted: OFF): OFF -- SDL_INSTALL_TESTS (Wanted: OFF): OFF -- SDL_JACK (Wanted: ON): OFF -- SDL_JACK_SHARED (Wanted: OFF): OFF -- SDL_KMSDRM (Wanted: ON): OFF -- SDL_KMSDRM_SHARED (Wanted: OFF): OFF -- SDL_LASX (Wanted: OFF): OFF -- SDL_LIBC (Wanted: ON): ON -- SDL_LIBICONV (Wanted: OFF): OFF -- SDL_LIBTHAI (Wanted: ON): OFF -- SDL_LIBTHAI_SHARED (Wanted: OFF): OFF -- SDL_LIBUDEV (Wanted: ON): OFF -- SDL_LIBURING (Wanted: ON): OFF -- SDL_LSX (Wanted: OFF): OFF -- SDL_METAL (Wanted: OFF): OFF -- SDL_MMX (Wanted: OFF): OFF -- SDL_OFFSCREEN (Wanted: ON): ON -- SDL_OPENGL (Wanted: ON): OFF -- SDL_OPENGLES (Wanted: ON): ON -- SDL_OPENVR (Wanted: OFF): OFF -- SDL_OSS (Wanted: ON): OFF -- SDL_PIPEWIRE (Wanted: ON): OFF -- SDL_PIPEWIRE_SHARED (Wanted: OFF): OFF -- SDL_PTHREADS (Wanted: OFF): OFF -- SDL_PTHREADS_SEM (Wanted: OFF): OFF -- SDL_PULSEAUDIO (Wanted: ON): OFF -- SDL_PULSEAUDIO_SHARED (Wanted: OFF): OFF -- SDL_RENDER_D3D (Wanted: OFF): OFF -- SDL_RENDER_D3D11 (Wanted: OFF): OFF -- SDL_RENDER_D3D12 (Wanted: OFF): OFF -- SDL_RENDER_GPU (Wanted: ON): OFF -- SDL_RENDER_METAL (Wanted: OFF): OFF -- SDL_RENDER_VULKAN (Wanted: OFF): OFF -- SDL_ROCKCHIP (Wanted: OFF): OFF -- SDL_RPATH (Wanted: ON): OFF -- SDL_RPI (Wanted: OFF): OFF -- SDL_SNDIO (Wanted: ON): OFF -- SDL_SNDIO_SHARED (Wanted: OFF): OFF -- SDL_SSE (Wanted: OFF): OFF -- SDL_SSE2 (Wanted: OFF): OFF -- SDL_SSE3 (Wanted: OFF): OFF -- SDL_SSE4_1 (Wanted: OFF): OFF -- SDL_SSE4_2 (Wanted: OFF): OFF -- SDL_SYSTEM_ICONV (Wanted: ON): ON -- SDL_TESTS (Wanted: OFF): OFF -- SDL_TESTS_LINK_SHARED (Wanted: OFF): OFF -- SDL_UNINSTALL (Wanted: OFF): OFF -- SDL_VIRTUAL_JOYSTICK (Wanted: ON): ON -- SDL_VIVANTE (Wanted: OFF): OFF -- SDL_VULKAN (Wanted: OFF): OFF -- SDL_WASAPI (Wanted: OFF): OFF -- SDL_WAYLAND (Wanted: ON): OFF -- SDL_WAYLAND_LIBDECOR (Wanted: ON): OFF -- SDL_WAYLAND_LIBDECOR_SHARED (Wanted: OFF): OFF -- SDL_WAYLAND_SHARED (Wanted: OFF): OFF -- SDL_X11 (Wanted: ON): OFF -- SDL_X11_SHARED (Wanted: OFF): OFF -- SDL_X11_XCURSOR (Wanted: ON): OFF -- SDL_X11_XDBE (Wanted: ON): OFF -- SDL_X11_XFIXES (Wanted: ON): OFF -- SDL_X11_XINPUT (Wanted: ON): OFF -- SDL_X11_XRANDR (Wanted: ON): OFF -- SDL_X11_XSCRNSAVER (Wanted: ON): OFF -- SDL_X11_XSHAPE (Wanted: ON): OFF -- SDL_X11_XSYNC (Wanted: ON): OFF -- SDL_X11_XTEST (Wanted: ON): OFF -- SDL_XINPUT (Wanted: OFF): OFF -- -- Build Shared Library: OFF -- Build Static Library: ON -- -- Enabled backends: -- Video drivers: dummy emscripten offscreen -- Render drivers: ogl_es2 -- GPU drivers: -- Audio drivers: disk dummy emscripten -- Joystick drivers: emscripten virtual -- Camera drivers: dummy emscripten -- -- If something was not detected, although the libraries -- were installed, then make sure you have set the -- CMAKE_C_FLAGS and CMAKE_PREFIX_PATH CMake variables correctly. -- -- Configuring SDL3_ttf 3.2.2 -- Performing Test LINKER_SUPPORTS_VERSION_SCRIPT -- Performing Test LINKER_SUPPORTS_VERSION_SCRIPT - Failed -- Could NOT find harfbuzz: Found unsuitable version "harfbuzz_VERSION-NOTFOUND", but required is at least "2.3.1" (found harfbuzz_LIBRARY-NOTFOUND) -- harfbuzz NOT found -- SDL3_ttf: Using system freetype library -- Found Freetype: /home/runner/work/Prog4_GeertsWarre/Prog4_GeertsWarre/build-web/dummy_freetype.a -- Could NOT find plutovg (missing: plutovg_LIBRARY plutovg_INCLUDE_PATH) -- Could NOT find plutosvg (missing: plutosvg_LIBRARY plutosvg_INCLUDE_PATH plutovg_FOUND) -- plutosvg NOT found -- SDL3_ttf backends: -- - enabled: freetype -- - disabled: harfbuzz plutosvg -- Configuring done (7.5s) CMake Error in build-web/_deps/sdl3_ttf-src/CMakeLists.txt: Imported target "Freetype::Freetype" includes non-existent path "EMSCRIPTEN_INTERNAL" in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include: * The path was deleted, renamed, or moved to another location. * An install or uninstall procedure did not complete successfully. * The installation package was faulty and references files it does not provide. CMake Warning: -- Generating done (0.1s) Manually-specified variables were not used by the project: SDL_TEST CMake Generate step failed. Build files cannot be regenerated correctly. Error: Process completed with exit code 1.
Read Entire Article