if(CONFIG_INTERPRETERS_WAMR)
set(WAMR_DIR ${CMAKE_CURRENT_LIST_DIR}/wamr)
if(NOT EXISTS ${WAMR_DIR})
set(WAMR_URL_BASE
https://github.com/bytecodealliance/wasm-micro-runtime/archive/)
FetchContent_Declare(
wamr_fetch
URL ${WAMR_URL_BASE}/${CONFIG_INTERPRETERS_WAMR_VERSION}.zip SOURCE_DIR
${CMAKE_CURRENT_LIST_DIR}/wamr BINARY_DIR
${CMAKE_BINARY_DIR}/apps/interpreters/wamr/wamr
DOWNLOAD_NO_PROGRESS true
TIMEOUT 30)
FetchContent_GetProperties(wamr_fetch)
if(NOT wamr_fetch_POPULATED)
FetchContent_Populate(wamr_fetch)
endif()
endif()
set(MREMAP_EXISTS 0)
nuttx_add_library(wamr STATIC)
set_property(
TARGET nuttx
APPEND
PROPERTY NUTTX_INCLUDE_DIRECTORIES
${CMAKE_CURRENT_SOURCE_DIR}/wamr/core/iwasm/include)
include(${WAMR_DIR}/product-mini/platforms/nuttx/CMakeLists.txt)
target_sources(wamr PRIVATE ${WAMR_SOURCES})
target_compile_options(wamr PRIVATE ${WAMR_CFLAGS})
nuttx_add_application(
MODULE
${CONFIG_INTERPRETERS_WAMR}
NAME
iwasm
STACKSIZE
${CONFIG_INTERPRETERS_WAMR_STACKSIZE}
PRIORITY
${CONFIG_INTERPRETERS_WAMR_PRIORITY}
SRCS
${WAMR_DIR}/product-mini/platforms/nuttx/main.c
COMPILE_FLAGS
${WAMR_CFLAGS}
DEFINITIONS
${WAMR_DEFINITIONS}
INCLUDE_DIRECTORIES
${WAMR_INCDIRS}
DEPENDS
wamr)
if(CONFIG_INTERPRETERS_WAMR_UNIT_TEST)
set(CXXEXT .cc)
list(APPEND WAMR_UNIT_TEST_SRCS ${CMAKE_CURRENT_LIST_DIR}/wamr_unit_test.cc)
nuttx_add_application(
NAME
wamr_unit_test
PRIORITY
${CONFIG_INTERPRETERS_WAMR_UNIT_TEST_PRIORITY}
STACKSIZE
${CONFIG_INTERPRETERS_WAMR_UNIT_TEST_STACKSIZE}
SRCS
${WAMR_UNIT_TEST_SRCS}
INCLUDE_DIRECTORIES
${WAMR_INCDIRS}
COMPILE_FLAGS
${WAMR_UNIT_TEST_FLAGS}
DEPENDS
wamr)
endif()
nuttx_append_source_file_properties(
${WAMR_DIR}/product-mini/platforms/nuttx/main.c COMPILE_FLAGS
-Dwasm_runtime_full_init=wamr_custom_init)
target_sources(wamr PRIVATE wamr_custom_init.c)
set(WAMR_MODULE_LIST ${CMAKE_BINARY_DIR}/wamrmod/wamr_external_module_list.h)
set(WAMR_MODULE_PROTO
${CMAKE_BINARY_DIR}/wamrmod/wamr_external_module_proto.h)
add_custom_target(
wamr_module_gen
COMMAND ${CMAKE_COMMAND} -E touch ${WAMR_MODULE_LIST}
COMMAND ${CMAKE_COMMAND} -E touch ${WAMR_MODULE_PROTO})
nuttx_add_dependencies(TARGET wamr DEPENDS wamr_module_gen)
target_include_directories(wamr PRIVATE ${CMAKE_BINARY_DIR}/wamrmod)
endif()