CMakeLists.txt 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # Copyright (C) 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. cmake_minimum_required (VERSION 3.14)
  4. project (debut_tools_wasm)
  5. set (CMAKE_BUILD_TYPE Debug) # Otherwise no debug symbols (addr2line)
  6. list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/../../cmake)
  7. find_package (WAMRC REQUIRED)
  8. option(SOURCE_MAP_DEMO "Enable source map demo" OFF)
  9. if (SOURCE_MAP_DEMO)
  10. find_package(EMSCRIPTEN 3.1.50 REQUIRED)
  11. endif ()
  12. ################ wasm and aot compilation ################
  13. function (compile_sample SOURCE_FILE)
  14. get_filename_component (FILE_NAME ${SOURCE_FILE} NAME_WLE)
  15. ## wasm
  16. set (WASM_FILE ${FILE_NAME}.wasm)
  17. add_executable (${FILE_NAME} ${SOURCE_FILE})
  18. set_target_properties (${FILE_NAME} PROPERTIES SUFFIX .wasm)
  19. ## aot
  20. set (AOT_FILE ${FILE_NAME}.aot)
  21. add_custom_target (
  22. ${FILE_NAME}_aot
  23. ALL
  24. DEPENDS ${WAMRC_BIN} ${WASM_FILE}
  25. # Use --enable-dump-call-stack to generate stack trace (addr2line)
  26. COMMAND ${WAMRC_BIN} --size-level=0 --enable-dump-call-stack -o ${AOT_FILE} ${WASM_FILE}
  27. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  28. )
  29. ## wasm + sourcemap
  30. if (DEFINED EMSCRIPTEN)
  31. add_custom_target(
  32. ${FILE_NAME}_w_sourcemap
  33. ALL
  34. DEPENDS ${SOURCE_FILE}
  35. COMMAND ${EMCC} -O0 -gsource-map -o ${FILE_NAME}.sourcemap.wasm ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE}
  36. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  37. )
  38. endif ()
  39. ## install both
  40. install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${WASM_FILE} DESTINATION wasm-apps)
  41. install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${AOT_FILE} DESTINATION wasm-apps)
  42. if (DEFINED EMSCRIPTEN)
  43. install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${FILE_NAME}.sourcemap.wasm DESTINATION wasm-apps)
  44. install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${FILE_NAME}.sourcemap.wasm.map DESTINATION wasm-apps)
  45. endif ()
  46. endfunction ()
  47. compile_sample(trap.c)