From 7dd55d94a9ac76ea02705501952ed278c9caec53 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sat, 4 Jul 2026 00:46:36 +0300 Subject: [PATCH] Add template html for Emscripten builds --- CMakeLists.txt | 1 - libs/sdl2/source/window.cpp | 7 ++++++- package/CMakeLists.txt | 7 +++++++ package/web/template.html | 19 +++++++++++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 package/web/template.html diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c6f09c2..b5d765cd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,7 +61,6 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL Emscripten) if(CMAKE_BUILD_TYPE STREQUAL Debug) list(APPEND PSEMEK_CXX_FLAGS -g) endif() - set(CMAKE_EXECUTABLE_SUFFIX ".html" PARENT_SCOPE) # we want to build html, not js else() find_package(Threads REQUIRED) set(OpenGL_GL_PREFERENCE LEGACY) diff --git a/libs/sdl2/source/window.cpp b/libs/sdl2/source/window.cpp index 7bb071ae..3918aa40 100644 --- a/libs/sdl2/source/window.cpp +++ b/libs/sdl2/source/window.cpp @@ -21,8 +21,13 @@ namespace psemek::sdl2 { window::window(psemek::app::application::options const & options) - : sdl_init_(init(SDL_INIT_EVENTS | SDL_INIT_VIDEO)) { +#ifdef __EMSCRIPTEN__ + SDL_SetHint(SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT, "#canvas"); +#endif + + sdl_init_ = init(SDL_INIT_EVENTS | SDL_INIT_VIDEO); + std::uint32_t flags = SDL_WINDOW_HIDDEN | SDL_WINDOW_RESIZABLE; if (options.highdpi) flags |= SDL_WINDOW_ALLOW_HIGHDPI; diff --git a/package/CMakeLists.txt b/package/CMakeLists.txt index f7ca822a..1a90c931 100644 --- a/package/CMakeLists.txt +++ b/package/CMakeLists.txt @@ -67,6 +67,13 @@ function(psemek_add_executable_impl target is_application) else() target_link_libraries(${target} PUBLIC ${PSEMEK_BACKEND_LIBRARY}) endif() + + if(CMAKE_SYSTEM_NAME STREQUAL Emscripten) + target_link_options(${target} PRIVATE + "--shell-file=${CMAKE_CURRENT_FUNCTION_LIST_DIR}/web/template.html" + ) + set_target_properties(${target} PROPERTIES SUFFIX ".html") + endif() endif() install(TARGETS ${target}) diff --git a/package/web/template.html b/package/web/template.html new file mode 100644 index 00000000..7a4dd936 --- /dev/null +++ b/package/web/template.html @@ -0,0 +1,19 @@ + + + + + + + + + + {{{ SCRIPT }}} + +