|
|
@@ -5,105 +5,67 @@ cmake_minimum_required(VERSION 3.14)
|
|
|
project(wasm-apps)
|
|
|
|
|
|
set(WAMR_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../..)
|
|
|
-set(WAMRC_ROOT_DIR ${WAMR_ROOT_DIR}/wamr-compiler/build)
|
|
|
|
|
|
-set(CMAKE_SYSTEM_PROCESSOR wasm32)
|
|
|
-set(CMAKE_SYSROOT ${WAMR_ROOT_DIR}/wamr-sdk/app/libc-builtin-sysroot)
|
|
|
-
|
|
|
-if (NOT DEFINED WASI_SDK_DIR)
|
|
|
- set(WASI_SDK_DIR "/opt/wasi-sdk")
|
|
|
-endif ()
|
|
|
-
|
|
|
-set(CMAKE_C_FLAGS "-nostdlib -pthread -Qunused-arguments")
|
|
|
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -z stack-size=8192 -nostdlib -O0")
|
|
|
-set(CMAKE_C_COMPILER_TARGET "wasm32")
|
|
|
-set(CMAKE_C_COMPILER "${WASI_SDK_DIR}/bin/clang")
|
|
|
-
|
|
|
-set(DEFINED_SYMBOLS
|
|
|
- "${WAMR_ROOT_DIR}/wamr-sdk/app/libc-builtin-sysroot/share/defined-symbols.txt")
|
|
|
-
|
|
|
-set(CMAKE_EXE_LINKER_FLAGS
|
|
|
- "-Wl,--no-entry \
|
|
|
- -Wl,--initial-memory=65536 \
|
|
|
- -Wl,--export-all \
|
|
|
- -Wl,--allow-undefined"
|
|
|
- )
|
|
|
+# Find WAMRC
|
|
|
+set(WAMRC_ROOT_DIR ${WAMR_ROOT_DIR}/wamr-compiler)
|
|
|
+find_program(WAMRC_BIN wamrc HINTS ${WAMRC_ROOT_DIR}/build REQUIRED)
|
|
|
|
|
|
+# Set architecture-specific WAMRC flags
|
|
|
if (WAMR_BUILD_TARGET STREQUAL "X86_32")
|
|
|
- set (WAMR_COMPILER_FLAGS --opt-level=3 --bounds-checks=1 --enable-shared-heap --target=i386)
|
|
|
- set (WAMR_COMPILER_CHAIN_FLAGS --opt-level=3 --bounds-checks=1 --enable-shared-chain --target=i386)
|
|
|
+ set(WAMRC_SHARED_HEAP_FLAGS --opt-level=3 --bounds-checks=1 --enable-shared-heap --target=i386)
|
|
|
+ set(WAMRC_SHARED_HEAP_CHAIN_FLAGS --opt-level=3 --bounds-checks=1 --enable-shared-chain --target=i386)
|
|
|
else ()
|
|
|
- set (WAMR_COMPILER_FLAGS --opt-level=3 --bounds-checks=1 --enable-shared-heap)
|
|
|
- set (WAMR_COMPILER_CHAIN_FLAGS --opt-level=3 --bounds-checks=1 --enable-shared-chain)
|
|
|
+ set(WAMRC_SHARED_HEAP_FLAGS --opt-level=3 --bounds-checks=1 --enable-shared-heap)
|
|
|
+ set(WAMRC_SHARED_HEAP_CHAIN_FLAGS --opt-level=3 --bounds-checks=1 --enable-shared-chain)
|
|
|
endif ()
|
|
|
|
|
|
-function(copy_wasm TARGET_NAME)
|
|
|
- add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
|
|
|
- COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
- ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}
|
|
|
- ${CMAKE_CURRENT_BINARY_DIR}/../
|
|
|
- COMMENT "Copy ${TARGET_NAME} to the same directory of google test"
|
|
|
- )
|
|
|
-endfunction()
|
|
|
-
|
|
|
-function(compile_and_copy_aot_from TARGET_NAME)
|
|
|
- string(REPLACE ".wasm" ".aot" AOT_TARGET ${TARGET_NAME})
|
|
|
- string(REPLACE ".wasm" "_chain.aot" AOT_CHAIN_TARGET ${TARGET_NAME})
|
|
|
-
|
|
|
- add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
|
|
|
- COMMAND ${WAMRC_ROOT_DIR}/wamrc ${WAMR_COMPILER_FLAGS}
|
|
|
- -o ${AOT_TARGET}
|
|
|
- ${TARGET_NAME}
|
|
|
- COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
- ${CMAKE_CURRENT_BINARY_DIR}/${AOT_TARGET}
|
|
|
- ${CMAKE_CURRENT_BINARY_DIR}/../
|
|
|
- COMMAND ${WAMRC_ROOT_DIR}/wamrc ${WAMR_COMPILER_CHAIN_FLAGS}
|
|
|
- -o ${AOT_CHAIN_TARGET}
|
|
|
- ${TARGET_NAME}
|
|
|
- COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
- ${CMAKE_CURRENT_BINARY_DIR}/${AOT_CHAIN_TARGET}
|
|
|
- ${CMAKE_CURRENT_BINARY_DIR}/../
|
|
|
- COMMENT "Compile and copy ${AOT_TARGET} to the same directory of google test"
|
|
|
- )
|
|
|
-endfunction()
|
|
|
-
|
|
|
+#
|
|
|
+# C -> Wasm
|
|
|
+#
|
|
|
add_executable(test.wasm test.c)
|
|
|
-target_link_libraries(test.wasm)
|
|
|
-copy_wasm(test.wasm)
|
|
|
-compile_and_copy_aot_from(test.wasm)
|
|
|
+target_compile_options(test.wasm PUBLIC -nostdlib -O0 -pthread)
|
|
|
+target_link_options(test.wasm PRIVATE
|
|
|
+ -nostdlib
|
|
|
+ LINKER:--no-entry
|
|
|
+ LINKER:--initial-memory=65536
|
|
|
+ LINKER:--allow-undefined
|
|
|
+ LINKER:--export-all
|
|
|
+ -z stack-size=1024
|
|
|
+)
|
|
|
|
|
|
add_executable(test_addr_conv.wasm test_addr_conv.c)
|
|
|
-target_link_libraries(test_addr_conv.wasm)
|
|
|
-copy_wasm(test_addr_conv.wasm)
|
|
|
-compile_and_copy_aot_from(test_addr_conv.wasm)
|
|
|
-
|
|
|
-# copy and compile aot for bulk memory test
|
|
|
-set(SOURCE_WASM ${CMAKE_CURRENT_SOURCE_DIR}/bulk-memory/test_bulk_memory.wasm)
|
|
|
-set(BUILD_WASM ${CMAKE_CURRENT_BINARY_DIR}/../test_bulk_memory.wasm)
|
|
|
-set(OUTPUT_AOT ${CMAKE_CURRENT_BINARY_DIR}/../test_bulk_memory.aot)
|
|
|
-set(OUTPUT_CHAIN_AOT ${CMAKE_CURRENT_BINARY_DIR}/../test_bulk_memory_chain.aot)
|
|
|
-
|
|
|
-add_custom_command(
|
|
|
- OUTPUT ${BUILD_WASM}
|
|
|
- COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
- ${SOURCE_WASM}
|
|
|
- ${BUILD_WASM}
|
|
|
- DEPENDS ${SOURCE_WASM}
|
|
|
- COMMENT "Copying bulk memory WASM to build directory"
|
|
|
+target_compile_options(test_addr_conv.wasm PUBLIC -nostdlib -O0 -pthread)
|
|
|
+target_link_options(test_addr_conv.wasm PRIVATE
|
|
|
+ -nostdlib
|
|
|
+ LINKER:--no-entry
|
|
|
+ LINKER:--initial-memory=65536
|
|
|
+ LINKER:--allow-undefined
|
|
|
+ LINKER:--export-all
|
|
|
+ -z stack-size=1024
|
|
|
)
|
|
|
|
|
|
-add_custom_command(
|
|
|
- OUTPUT ${OUTPUT_AOT}
|
|
|
- COMMAND ${WAMRC_ROOT_DIR}/wamrc ${WAMR_COMPILER_FLAGS}
|
|
|
- -o ${OUTPUT_AOT}
|
|
|
- ${BUILD_WASM}
|
|
|
- COMMAND ${WAMRC_ROOT_DIR}/wamrc ${WAMR_COMPILER_CHAIN_FLAGS}
|
|
|
- -o ${OUTPUT_CHAIN_AOT}
|
|
|
- ${BUILD_WASM}
|
|
|
- DEPENDS ${BUILD_WASM}
|
|
|
- COMMENT "Compiling bulk memory AOT from copied WASM"
|
|
|
+# Compile AOT files (combined target)
|
|
|
+add_custom_target(compile_aot ALL
|
|
|
+ COMMAND ${WAMRC_BIN} ${WAMRC_SHARED_HEAP_FLAGS} -o test.aot test.wasm
|
|
|
+ COMMAND ${WAMRC_BIN} ${WAMRC_SHARED_HEAP_CHAIN_FLAGS} -o test_chain.aot test.wasm
|
|
|
+ COMMAND ${WAMRC_BIN} ${WAMRC_SHARED_HEAP_FLAGS} -o test_addr_conv.aot test_addr_conv.wasm
|
|
|
+ COMMAND ${WAMRC_BIN} ${WAMRC_SHARED_HEAP_CHAIN_FLAGS} -o test_addr_conv_chain.aot test_addr_conv.wasm
|
|
|
+ DEPENDS test.wasm test_addr_conv.wasm
|
|
|
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
|
)
|
|
|
|
|
|
-add_custom_target(compile_bulk_memory_aot ALL
|
|
|
- DEPENDS ${OUTPUT_AOT}
|
|
|
+# Install WASM files
|
|
|
+set(WASM_FILES
|
|
|
+ ${CMAKE_CURRENT_BINARY_DIR}/test.wasm
|
|
|
+ ${CMAKE_CURRENT_BINARY_DIR}/test_addr_conv.wasm
|
|
|
+)
|
|
|
+install(FILES ${WASM_FILES} DESTINATION .)
|
|
|
+
|
|
|
+# Install AOT files
|
|
|
+set(AOT_FILES
|
|
|
+ ${CMAKE_CURRENT_BINARY_DIR}/test.aot
|
|
|
+ ${CMAKE_CURRENT_BINARY_DIR}/test_chain.aot
|
|
|
+ ${CMAKE_CURRENT_BINARY_DIR}/test_addr_conv.aot
|
|
|
+ ${CMAKE_CURRENT_BINARY_DIR}/test_addr_conv_chain.aot
|
|
|
)
|
|
|
+install(FILES ${AOT_FILES} DESTINATION .)
|