50 lines
1.6 KiB
CMake
50 lines
1.6 KiB
CMake
# Standalone CMake project for building WASM simulator modules.
|
|
# Invoked on-demand by the superbuild's wasi-module target so that
|
|
# the WASI SDK is only fetched when WASM targets are actually built.
|
|
#
|
|
# Usage from superbuild:
|
|
# cmake -S . -B build -DPCB=X10 -DPCBREV=TX16S
|
|
# cmake --build build --target wasi-module
|
|
|
|
cmake_minimum_required(VERSION 3.21)
|
|
project(EdgeTX-WASM NONE) # NONE = no compiler check (we set a toolchain below)
|
|
|
|
# Inherit the module path from the main project
|
|
list(APPEND CMAKE_MODULE_PATH "${EDGETX_SOURCE_DIR}/cmake")
|
|
|
|
# Collect command-line args to forward, excluding EDGETX_* (consumed here)
|
|
include(Macros)
|
|
CollectCommandLineArgs(_forwarded_args EXCLUDE "^EDGETX_")
|
|
|
|
# Fetch / find WASI SDK
|
|
include(FetchWasiSDK)
|
|
find_package(WasiSDK REQUIRED)
|
|
|
|
include(ExternalProject)
|
|
|
|
ExternalProject_Add(wasm
|
|
SOURCE_DIR ${EDGETX_SOURCE_DIR}
|
|
BINARY_DIR ${CMAKE_BINARY_DIR}/wasm-build
|
|
CMAKE_ARGS
|
|
${_forwarded_args}
|
|
-Wno-dev
|
|
-DCMAKE_BUILD_TYPE=${EDGETX_BUILD_TYPE}
|
|
-DWASI_SDK_PREFIX=${WASI_SDK_PATH}
|
|
-DCMAKE_TOOLCHAIN_FILE=${EDGETX_SOURCE_DIR}/cmake/toolchain/wasi-threads.cmake
|
|
CMAKE_CACHE_ARGS
|
|
-DEdgeTX_SUPERBUILD:BOOL=0
|
|
-DNATIVE_BUILD:BOOL=1
|
|
-DDISABLE_COMPANION:BOOL=1
|
|
BUILD_ALWAYS TRUE
|
|
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target wasi-module
|
|
INSTALL_COMMAND ""
|
|
)
|
|
|
|
# Copy .wasm files up after build
|
|
ExternalProject_Add_Step(wasm copy-wasm
|
|
DEPENDEES build
|
|
COMMAND ${CMAKE_COMMAND}
|
|
-DSRC_DIR=${CMAKE_BINARY_DIR}/wasm-build -DDST_DIR=${CMAKE_BINARY_DIR}
|
|
-P ${EDGETX_SOURCE_DIR}/cmake/CopyWasmModules.cmake
|
|
)
|