CMakeLists.txt 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # Copyright (C) 2024 Xiaomi Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. cmake_minimum_required(VERSION 3.14)
  4. project(wasm-apps)
  5. set(WAMR_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../..)
  6. # Find WAMRC
  7. set(WAMRC_ROOT_DIR ${WAMR_ROOT_DIR}/wamr-compiler)
  8. find_program(WAMRC_BIN wamrc HINTS ${WAMRC_ROOT_DIR}/build REQUIRED)
  9. # Set architecture-specific WAMRC flags
  10. if (WAMR_BUILD_TARGET STREQUAL "X86_32")
  11. set(WAMRC_SHARED_HEAP_FLAGS --opt-level=3 --bounds-checks=1 --enable-shared-heap --target=i386)
  12. set(WAMRC_SHARED_HEAP_CHAIN_FLAGS --opt-level=3 --bounds-checks=1 --enable-shared-chain --target=i386)
  13. else ()
  14. set(WAMRC_SHARED_HEAP_FLAGS --opt-level=3 --bounds-checks=1 --enable-shared-heap)
  15. set(WAMRC_SHARED_HEAP_CHAIN_FLAGS --opt-level=3 --bounds-checks=1 --enable-shared-chain)
  16. endif ()
  17. #
  18. # C -> Wasm
  19. #
  20. add_executable(test.wasm test.c)
  21. target_compile_options(test.wasm PUBLIC -nostdlib -O0 -pthread)
  22. target_link_options(test.wasm PRIVATE
  23. -nostdlib
  24. LINKER:--no-entry
  25. LINKER:--initial-memory=65536
  26. LINKER:--allow-undefined
  27. LINKER:--export-all
  28. -z stack-size=1024
  29. )
  30. add_executable(test_addr_conv.wasm test_addr_conv.c)
  31. target_compile_options(test_addr_conv.wasm PUBLIC -nostdlib -O0 -pthread)
  32. target_link_options(test_addr_conv.wasm PRIVATE
  33. -nostdlib
  34. LINKER:--no-entry
  35. LINKER:--initial-memory=65536
  36. LINKER:--allow-undefined
  37. LINKER:--export-all
  38. -z stack-size=1024
  39. )
  40. # Compile AOT files (combined target)
  41. add_custom_target(compile_aot ALL
  42. COMMAND ${WAMRC_BIN} ${WAMRC_SHARED_HEAP_FLAGS} -o test.aot test.wasm
  43. COMMAND ${WAMRC_BIN} ${WAMRC_SHARED_HEAP_CHAIN_FLAGS} -o test_chain.aot test.wasm
  44. COMMAND ${WAMRC_BIN} ${WAMRC_SHARED_HEAP_FLAGS} -o test_addr_conv.aot test_addr_conv.wasm
  45. COMMAND ${WAMRC_BIN} ${WAMRC_SHARED_HEAP_CHAIN_FLAGS} -o test_addr_conv_chain.aot test_addr_conv.wasm
  46. DEPENDS test.wasm test_addr_conv.wasm
  47. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  48. )
  49. # Install WASM files
  50. set(WASM_FILES
  51. ${CMAKE_CURRENT_BINARY_DIR}/test.wasm
  52. ${CMAKE_CURRENT_BINARY_DIR}/test_addr_conv.wasm
  53. )
  54. install(FILES ${WASM_FILES} DESTINATION .)
  55. # Install AOT files
  56. set(AOT_FILES
  57. ${CMAKE_CURRENT_BINARY_DIR}/test.aot
  58. ${CMAKE_CURRENT_BINARY_DIR}/test_chain.aot
  59. ${CMAKE_CURRENT_BINARY_DIR}/test_addr_conv.aot
  60. ${CMAKE_CURRENT_BINARY_DIR}/test_addr_conv_chain.aot
  61. )
  62. install(FILES ${AOT_FILES} DESTINATION .)