CMakeLists.txt 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. cmake_minimum_required(VERSION 3.14)
  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:--export=malloc
  49. LINKER:--export=free
  50. LINKER:--shared-memory,--max-memory=10485760
  51. LINKER:--no-check-features
  52. LINKER:--allow-undefined
  53. )
  54. if(EXISTS ${WASM_OBJDUMP})
  55. message(STATUS "Dumping ${WASM_MODULE}...")
  56. set(WASM_DUMP ${WASM_MODULE}.dump)
  57. set(DUMP_TARGET_NAME DUMP_${FILE_NAME})
  58. add_custom_command(OUTPUT ${WASM_DUMP}
  59. COMMAND ${WASM_OBJDUMP} -dx ${WASM_MODULE} > ${WASM_DUMP}
  60. COMMENT "Dumping ${WASM_MODULE}..."
  61. DEPENDS ${MAIN_TARGET_NAME}
  62. )
  63. add_custom_target(${DUMP_TARGET_NAME} ALL
  64. DEPENDS ${WASM_DUMP}
  65. )
  66. endif()
  67. endfunction()
  68. compile_with_clang(tcp_server.c)
  69. compile_with_clang(tcp_client.c)
  70. compile_with_clang(send_recv.c)
  71. compile_with_clang(addr_resolve.c)
  72. compile_with_clang(socket_opts.c)
  73. compile_with_clang(udp_client.c)
  74. compile_with_clang(udp_server.c)
  75. compile_with_clang(multicast_client.c)
  76. compile_with_clang(multicast_server.c)
  77. compile_with_clang(timeout_client.c)
  78. compile_with_clang(timeout_server.c)