Add freetype support on web
All checks were successful
Run tests / Run tests (push) Successful in 6m53s

This commit is contained in:
Nikita Lisitsa 2026-07-25 19:28:29 +03:00
parent 2be90728ed
commit c2196d7dc8
4 changed files with 12 additions and 3 deletions

View file

@ -86,6 +86,9 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
set(PSEMEK_PACKAGE_AS_LIBRARY OFF CACHE INTERNAL "Build applications as shared libraries")
list(APPEND PSEMEK_DEFINITIONS "-DPSEMEK_GLES=1")
list(APPEND PSEMEK_CXX_FLAGS -sUSE_SDL=2 -fexperimental-library)
if(PSEMEK_USE_FREETYPE)
list(APPEND PSEMEK_CXX_FLAGS -sUSE_FREETYPE=1)
endif()
# by default emcc doesn't produce catch clauses, but psemek is designed around exceptions
list(APPEND PSEMEK_CXX_FLAGS -sDISABLE_EXCEPTION_CATCHING=0)
if(CMAKE_BUILD_TYPE STREQUAL Debug)

View file

@ -4,7 +4,10 @@ file(GLOB_RECURSE PSEMEK_FONTS_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "s
list(REMOVE_ITEM PSEMEK_FONTS_SOURCES "source/freetype.cpp")
if(PSEMEK_USE_FREETYPE)
if(NOT PSEMEK_PLATFORM_WEB)
# Emscripten provides Freetype on web
find_package(Freetype REQUIRED)
endif()
list(APPEND PSEMEK_FONTS_SOURCES "source/freetype.cpp")
endif()

View file

@ -8,7 +8,10 @@ if(PSEMEK_PACKAGE_MODE)
set(PSEMEK_PACKAGE_LINK_FLAGS_RAW)
if(PSEMEK_PLATFORM_WEB)
list(APPEND PSEMEK_PACKAGE_LINK_FLAGS_RAW -sUSE_SDL=2 -sMIN_WEBGL_VERSION=2 -sNO_DISABLE_EXCEPTION_CATCHING -sFULL_ES3 -sWASMFS -sALLOW_MEMORY_GROWTH -sGROWABLE_ARRAYBUFFERS=0 -sASYNCIFY)
list(APPEND PSEMEK_PACKAGE_LINK_FLAGS_RAW -sUSE_SDL=2 -sUSE_FREETYPE=1 -sMIN_WEBGL_VERSION=2 -sNO_DISABLE_EXCEPTION_CATCHING -sFULL_ES3 -sWASMFS -sALLOW_MEMORY_GROWTH -sGROWABLE_ARRAYBUFFERS=0 -sASYNCIFY)
if(PSEMEK_USE_FREETYPE)
list(APPEND PSEMEK_PACKAGE_LINK_FLAGS_RAW -sUSE_FREETYPE=1)
endif()
list(APPEND PSEMEK_PACKAGE_LINK_FLAGS_RAW "-sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='$autoResumeAudioContext','$dynCall'")
if(CMAKE_BUILD_TYPE STREQUAL Debug)
list(APPEND PSEMEK_PACKAGE_LINK_FLAGS_RAW "-g")

View file

@ -6,7 +6,7 @@ RUN git clone --branch 6.0.2 https://github.com/emscripten-core/emsdk.git
WORKDIR /home/emsdk
RUN ./emsdk install 6.0.2
RUN ./emsdk activate 6.0.2
RUN . ./emsdk_env.sh && embuilder build sdl2 sdl2-mt
RUN . ./emsdk_env.sh && embuilder build sdl2 sdl2-mt zlib freetype
WORKDIR /home
COPY env-helper.sh .