CMakeLists.txt 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # Copyright (C) 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. if (APPLE)
  4. set (HAVE_FLAG_SEARCH_PATHS_FIRST 0)
  5. set (CMAKE_C_LINK_FLAGS "")
  6. set (CMAKE_CXX_LINK_FLAGS "")
  7. endif ()
  8. if (NOT DEFINED WASI_SDK_DIR)
  9. set (WASI_SDK_DIR "/opt/wasi-sdk")
  10. endif ()
  11. set (CMAKE_SYSROOT "${WASI_SYSROOT}")
  12. set (CMAKE_C_COMPILER "${WASI_SDK_DIR}/bin/clang")
  13. set (CMAKE_ASM_COMPILER "${WASI_SDK_DIR}/bin/clang")
  14. set (CMAKE_EXE_LINKER_FLAGS "-target wasm32-wasi-threads")
  15. if ("$ENV{COLLECT_CODE_COVERAGE}" STREQUAL "1" OR COLLECT_CODE_COVERAGE EQUAL 1)
  16. set (CMAKE_C_FLAGS "")
  17. set (CMAKE_CXX_FLAGS "")
  18. endif ()
  19. function (compile_sample SOURCE_FILE)
  20. get_filename_component (FILE_NAME ${SOURCE_FILE} NAME_WLE)
  21. set (WASM_MODULE ${FILE_NAME}.wasm)
  22. add_executable (${WASM_MODULE} ${SOURCE_FILE} ${ARGN})
  23. target_compile_options (${WASM_MODULE} PRIVATE
  24. -pthread -ftls-model=local-exec)
  25. target_link_options (${WASM_MODULE} PRIVATE
  26. -z stack-size=32768
  27. LINKER:--export=__heap_base
  28. LINKER:--export=__data_end
  29. LINKER:--shared-memory,--max-memory=1966080
  30. LINKER:--export=wasi_thread_start
  31. LINKER:--export=malloc
  32. LINKER:--export=free
  33. )
  34. endfunction ()
  35. compile_sample(no_pthread.c wasi_thread_start.S)
  36. compile_sample(thread_termination.c wasi_thread_start.S)