Compare commits

...

2 commits

Author SHA1 Message Date
c2196d7dc8 Add freetype support on web
All checks were successful
Run tests / Run tests (push) Successful in 6m53s
2026-07-25 19:28:29 +03:00
2be90728ed Fix file globbing in psemek_package_files on web 2026-07-25 19:28:19 +03:00
4 changed files with 14 additions and 4 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)
find_package(Freetype REQUIRED)
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")
@ -216,7 +219,8 @@ function(psemek_package_files_impl target as_resources)
COMMAND ${PSEMEK_COPY_FILES} ${ARGN}
)
elseif(PSEMEK_PLATFORM_WEB AND as_resources)
foreach(_FILE IN LISTS ARGN)
file(GLOB_RECURSE _FILES RELATIVE "${CMAKE_CURRENT_LIST_DIR}" ${ARGN})
foreach(_FILE IN LISTS _FILES)
target_link_options(${target} PRIVATE
"--preload-file=${CMAKE_CURRENT_LIST_DIR}/${_FILE}@/resources/${_FILE}"
)

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 .