diff --git a/.github/workflows/publish_docs.yml b/.github/workflows/publish_docs.yml index 54171575..80bb6c23 100644 --- a/.github/workflows/publish_docs.yml +++ b/.github/workflows/publish_docs.yml @@ -22,6 +22,14 @@ jobs: python -m pip install --upgrade pip pip install requests pandas markdown pytablereader tabulate npm install + - name: Set up Emscripten + uses: mymindstorm/setup-emsdk@v14 + with: + version: 3.1.61 + actions-cache-folder: emsdk-cache + - name: Build browser WebAssembly decoder + run: npm run build:web + working-directory: nodejs/theengs-decoder - name: Build documentation run: | npm run docs:build diff --git a/.gitignore b/.gitignore index e5db5b23..e1bec7ce 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ docs/.vitepress/dist/ docs/.vitepress/cache/ docs/.vitepress/public/commonConfig.js docs/.vitepress/public/img/ +docs/.vitepress/public/wasm/ docs/.vitepress/data/devices.json +nodejs/theengs-decoder/build-web/ docs/devices/_app_devices.md generated/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 2dca9968..1946ae4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,27 @@ elseif(BUILD_WASM) LINK_FLAGS "-lembind -sMODULARIZE=1 -sEXPORT_NAME=createTheengsDecoderModule -sENVIRONMENT=node -sALLOW_MEMORY_GROWTH=1 -sSINGLE_FILE=1 -sNODEJS_CATCH_EXIT=0 -sNODEJS_CATCH_REJECTION=0" ) +elseif(BUILD_WASM_WEB) + message(STATUS "Building WebAssembly module via Emscripten (browser target)") + + add_executable(theengs_decoder_web + nodejs/theengs-decoder/src/wasm_bindings.cc + src/decoder.cpp + ) + + target_include_directories(theengs_decoder_web + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/src/arduino_json/src + ${CMAKE_CURRENT_SOURCE_DIR}/src + ) + + target_compile_features(theengs_decoder_web PRIVATE cxx_std_17) + + set_target_properties(theengs_decoder_web PROPERTIES + SUFFIX ".js" + LINK_FLAGS "-lembind -sMODULARIZE=1 -sEXPORT_ES6=1 -sEXPORT_NAME=createTheengsDecoderModule -sENVIRONMENT=web,worker -sALLOW_MEMORY_GROWTH=1 -sSINGLE_FILE=1" + ) + else() add_library(decoder diff --git a/docs/.vitepress/components/WebParser.vue b/docs/.vitepress/components/WebParser.vue new file mode 100644 index 00000000..5c779f76 --- /dev/null +++ b/docs/.vitepress/components/WebParser.vue @@ -0,0 +1,311 @@ + + +