mirror of
https://github.com/ggerganov/ggwave.git
synced 2026-02-06 08:37:59 +08:00
close #19 : add cmake option for single-file wasm build
If enabled, we build ggwave using "-s SINGLE_FILE=1" which causes the WASM to be embedded inside the .js file. Otherwise, 2 separate files are produced: - libggwave.js - libggwave.wasm
This commit is contained in:
@@ -21,6 +21,8 @@ endif()
|
||||
if (EMSCRIPTEN)
|
||||
set(GGWAVE_SUPPORT_SDL2_DEFAULT ON)
|
||||
set(BUILD_SHARED_LIBS_DEFAULT OFF)
|
||||
|
||||
option(GGWAVE_WASM_SINGLE_FILE "ggwave: embed WASM inside the generated ggwave.js" ON)
|
||||
else()
|
||||
set(GGWAVE_SUPPORT_SDL2_DEFAULT ON)
|
||||
set(BUILD_SHARED_LIBS_DEFAULT ON)
|
||||
|
||||
@@ -8,17 +8,23 @@ target_link_libraries(${TARGET} PRIVATE
|
||||
ggwave
|
||||
)
|
||||
|
||||
unset(EXTRA_FLAGS)
|
||||
if (GGWAVE_WASM_SINGLE_FILE)
|
||||
set(EXTRA_FLAGS "-s SINGLE_FILE=1")
|
||||
message(STATUS "Embedding WASM inside ggwave.js")
|
||||
|
||||
add_custom_command(
|
||||
TARGET libggwave POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_BINARY_DIR}/bin/libggwave.js
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ggwave.js
|
||||
)
|
||||
endif()
|
||||
|
||||
set_target_properties(${TARGET} PROPERTIES LINK_FLAGS " \
|
||||
--bind \
|
||||
-s MODULARIZE=1 \
|
||||
-s SINGLE_FILE=1 \
|
||||
-s ALLOW_MEMORY_GROWTH=1 \
|
||||
-s EXPORT_NAME=\"'ggwave_factory'\" \
|
||||
${EXTRA_FLAGS} \
|
||||
")
|
||||
|
||||
add_custom_command(
|
||||
TARGET libggwave POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_BINARY_DIR}/bin/libggwave.js
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ggwave.js
|
||||
)
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user