diff --git a/libs/sdl2/source/main.cpp b/libs/sdl2/source/main.cpp index 1b39ce3f..41d6ccfd 100644 --- a/libs/sdl2/source/main.cpp +++ b/libs/sdl2/source/main.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -50,6 +51,12 @@ int main(int argc, char ** argv) try log::add_sink(log::default_sink(std::move(synchronized_stdout_stderr[1]), log::level::warning, log::level::error)); log::register_thread("main"); +#ifdef __EMSCRIPTEN__ + // In web builds, resources are in the root of + // the Emscripten virtual filesystem + app::set_resource_root("/"); +#endif + auto const factory = app::make_application_factory(); auto const options = factory->options(); diff --git a/package/CMakeLists.txt b/package/CMakeLists.txt index 1a90c931..fa3492e7 100644 --- a/package/CMakeLists.txt +++ b/package/CMakeLists.txt @@ -110,6 +110,7 @@ function(psemek_add_executable_impl target is_application) list(APPEND _TARGET_RUNTIME ${_TARGET_NOEXT}.js) list(APPEND _TARGET_RUNTIME ${_TARGET_NOEXT}.wasm) + list(APPEND _TARGET_RUNTIME ${_TARGET_NOEXT}.data) endif() set(_COPY_FILES ${_TARGET_FILE} ${_TARGET_RUNTIME} ${PSEMEK_PACKAGE_COPY_FILES}) @@ -228,6 +229,12 @@ function(psemek_package_files target) WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} COMMAND ${PSEMEK_COPY_FILES} ${ARGN} ) + elseif(CMAKE_SYSTEM_NAME STREQUAL Emscripten) + foreach(_FILE IN LISTS ARGN) + target_link_options(${target} PRIVATE + "--preload-file=${CMAKE_CURRENT_LIST_DIR}/${_FILE}@/${_FILE}" + ) + endforeach() else() psemek_package_output_path(${target} _OUTPUT_PATH)