CMakeLists.txt 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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.8.2)
  4. find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
  5. project(wamr)
  6. enable_language (ASM)
  7. set (WAMR_BUILD_PLATFORM "zephyr")
  8. # WAMR Configuration:
  9. set (WAMR_BUILD_TARGET "THUMB")
  10. set (WAMR_BUILD_INTERP 1)
  11. set (WAMR_BUILD_AOT 0)
  12. set (WAMR_BUILD_LIBC_BUILTIN 1) # printf
  13. set (WAMR_BUILD_LIBC_WASI 1)
  14. set (WAMR_BUILD_LIB_PTHREAD 0)
  15. set (WAMR_BUILD_GLOBAL_HEAP_POOL 1)
  16. set (WAMR_BUILD_GLOBAL_HEAP_SIZE 98304) # 96 KB
  17. # Environment variables:
  18. # Check if WAMR_ROOT_DIR is set
  19. if(DEFINED ENV{WAMR_ROOT_DIR})
  20. set(WAMR_ROOT_DIR $ENV{WAMR_ROOT_DIR})
  21. else()
  22. message(FATAL_ERROR "'WAMR_ROOT_DIR' need to be specified")
  23. endif()
  24. message("wasi-sdk was found at ${WAMR_ROOT_DIR}")
  25. # Check if WASI_SDK_PATH is set
  26. if(NOT $ENV{WASI_SDK_PATH} STREQUAL "")
  27. set(WASI_SDK_PATH $ENV{WASI_SDK_PATH})
  28. else()
  29. find_program(WASM_C_COMPILER clang /opt/wasi-sdk/bin NO_DEFAULT_PATH)
  30. if(NOT WASM_C_COMPILER)
  31. message(FATAL_ERROR "'wasi-sdk' not found, please ensure wasi-sdk is installed.\
  32. You can download and install it from\
  33. https://github.com/WebAssembly/wasi-sdk/releases")
  34. else()
  35. set(WASI_SDK_PATH /opt/wasi-sdk)
  36. endif()
  37. endif()
  38. message("wasi-sdk was found at ${WASI_SDK_PATH}")
  39. # Check if WAMR_APP_FRAMEWORK_DIR is set
  40. if (DEFINED ENV{WAMR_APP_FRAMEWORK_DIR})
  41. set(WAMR_APP_FRAMEWORK_DIR $ENV{WAMR_APP_FRAMEWORK_DIR})
  42. else()
  43. message(FATAL_ERROR "'wamr-app-framework' not found, please ensure they are installed.\
  44. You can download and install them from\
  45. https://github.com/bytecodealliance/wamr-app-framework")
  46. endif()
  47. message("wamr-app-framework was found at ${WAMR_APP_FRAMEWORK_DIR}")
  48. # set the WAMR_SDK_DIR with the path specified in the environment variable
  49. set(WAMR_SDK_DIR
  50. ${WAMR_APP_FRAMEWORK_DIR}/wamr-sdk
  51. )
  52. # set the WAMR_LIBC_BUILTIN_DIR
  53. set(WAMR_LIBC_BUILTIN_DIR
  54. ${WAMR_SDK_DIR}/wamr-sdk/app/libc-builtin-sysroot
  55. )
  56. # set the WAMR_SDK_PACKAGE_OUT_DIR
  57. set(WAMR_SDK_PACKAGE_OUT_DIR
  58. ${CMAKE_CURRENT_BINARY_DIR}/wamr-sdk/app-sdk/wamr-app-framework
  59. )
  60. # # Reset linker flags
  61. # set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
  62. # set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
  63. include (${WAMR_ROOT_DIR}/build-scripts/runtime_lib.cmake)
  64. # include (${SHARED_DIR}/utils/uncommon/shared_uncommon.cmake) # in socket-api sample
  65. # Build the WAMR runtime
  66. target_sources(app PRIVATE
  67. ${WAMR_RUNTIME_LIB_SOURCE}
  68. src/main.c)
  69. # Link libraries like in samples.
  70. set(WASI_LIBM "${WASI_SDK_PATH}/share/wasi-sysroot/lib/wasm32-wasi/libm.a")
  71. set(WASI_LIBDL "${WASI_SDK_PATH}/share/wasi-sysroot/lib/wasm32-wasi/libdl.a")
  72. target_link_libraries(app PUBLIC ${WASI_LIBM} ${WASI_LIBDL})