CMakeLists.txt 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. cmake_minimum_required(VERSION 2.8...3.18)
  4. project(socket_api_sample_wasm_app)
  5. message(CHECK_START "Detecting WABT")
  6. if(NOT (DEFINED WABT_DIR OR DEFINED CACHE{WABT_DIR}))
  7. find_path(WABT_DIR
  8. wabt
  9. PATHS /opt
  10. NO_DEFAULT_PATH
  11. NO_CMAKE_FIND_ROOT_PATH
  12. )
  13. if(DEFINED WABT_DIR)
  14. set(WABT_DIR ${WABT_DIR}/wabt)
  15. endif()
  16. endif()
  17. if(WABT_DIR)
  18. message(CHECK_PASS "found")
  19. else()
  20. message(CHECK_FAIL "not found")
  21. endif()
  22. message(CHECK_START "Detecting WASM_OBJDUMP at ${WABT_DIR}")
  23. find_program(WASM_OBJDUMP
  24. wasm-objdump
  25. PATHS "${WABT_DIR}/bin"
  26. NO_DEFAULT_PATH
  27. NO_CMAKE_FIND_ROOT_PATH
  28. )
  29. if(WASM_OBJDUMP)
  30. message(CHECK_PASS "found")
  31. else()
  32. message(CHECK_FAIL "not found")
  33. endif()
  34. set(SRC ${CMAKE_CURRENT_SOURCE_DIR})
  35. include(${CMAKE_CURRENT_SOURCE_DIR}/../../../core/iwasm/libraries/lib-socket/lib_socket_wasi.cmake)
  36. function(COMPILE_WITH_CLANG SOURCE_FILE)
  37. get_filename_component(FILE_NAME ${SOURCE_FILE} NAME_WLE)
  38. set(WASM_MODULE ${FILE_NAME}.wasm)
  39. set(MAIN_TARGET_NAME MODULE_${FILE_NAME})
  40. add_executable(${MAIN_TARGET_NAME} ${SOURCE_FILE})
  41. set_target_properties(${MAIN_TARGET_NAME} PROPERTIES OUTPUT_NAME ${WASM_MODULE})
  42. target_include_directories(${MAIN_TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc)
  43. target_compile_options(${MAIN_TARGET_NAME} INTERFACE -pthread)
  44. target_link_libraries(${MAIN_TARGET_NAME} socket_wasi_ext)
  45. target_link_options(${MAIN_TARGET_NAME} PRIVATE
  46. LINKER:--export=__heap_base
  47. LINKER:--export=__data_end
  48. LINKER:--shared-memory,--max-memory=196608
  49. LINKER:--no-check-features
  50. LINKER:--allow-undefined
  51. )
  52. if(EXISTS ${WASM_OBJDUMP})
  53. message(STATUS "Dumping ${WASM_MODULE}...")
  54. set(WASM_DUMP ${WASM_MODULE}.dump)
  55. set(DUMP_TARGET_NAME DUMP_${FILE_NAME})
  56. add_custom_command(OUTPUT ${WASM_DUMP}
  57. COMMAND ${WASM_OBJDUMP} -dx ${WASM_MODULE} > ${WASM_DUMP}
  58. COMMENT "Dumping ${WASM_MODULE}..."
  59. DEPENDS ${MAIN_TARGET_NAME}
  60. )
  61. add_custom_target(${DUMP_TARGET_NAME} ALL
  62. DEPENDS ${WASM_DUMP}
  63. )
  64. endif()
  65. endfunction()
  66. compile_with_clang(tcp_server.c)
  67. compile_with_clang(tcp_client.c)