iwasm_aot.cmake 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. # Yes. To solve the compatibility issue with CMAKE (>= 4.0), we need to update
  4. # our `cmake_minimum_required()` to 3.5. However, there are CMakeLists.txt
  5. # from 3rd parties that we should not alter. Therefore, in addition to
  6. # changing the `cmake_minimum_required()`, we should also add a configuration
  7. # here that is compatible with earlier versions.
  8. set(CMAKE_POLICY_VERSION_MINIMUM 3.5 FORCE)
  9. set (IWASM_AOT_DIR ${CMAKE_CURRENT_LIST_DIR})
  10. add_definitions (-DWASM_ENABLE_AOT=1)
  11. include_directories (${IWASM_AOT_DIR})
  12. list (APPEND c_source_all
  13. ${IWASM_AOT_DIR}/aot_intrinsic.c
  14. ${IWASM_AOT_DIR}/aot_loader.c
  15. ${IWASM_AOT_DIR}/aot_runtime.c
  16. )
  17. if (WAMR_BUILD_LINUX_PERF EQUAL 1)
  18. list (APPEND c_source_all ${IWASM_AOT_DIR}/aot_perf_map.c)
  19. endif ()
  20. if (WAMR_BUILD_AOT_VALIDATOR EQUAL 1)
  21. list (APPEND c_source_all ${IWASM_AOT_DIR}/aot_validator.c)
  22. endif ()
  23. if (WAMR_BUILD_WAMR_COMPILER EQUAL 1)
  24. # AOT reloc functions are not used during AOT compilation
  25. set (arch_source ${IWASM_AOT_DIR}/arch/aot_reloc_dummy.c)
  26. elseif (WAMR_BUILD_TARGET STREQUAL "X86_64" OR WAMR_BUILD_TARGET STREQUAL "AMD_64")
  27. set (arch_source ${IWASM_AOT_DIR}/arch/aot_reloc_x86_64.c)
  28. elseif (WAMR_BUILD_TARGET STREQUAL "X86_32")
  29. set (arch_source ${IWASM_AOT_DIR}/arch/aot_reloc_x86_32.c)
  30. elseif (WAMR_BUILD_TARGET MATCHES "AARCH64.*")
  31. set (arch_source ${IWASM_AOT_DIR}/arch/aot_reloc_aarch64.c)
  32. elseif (WAMR_BUILD_TARGET MATCHES "ARM.*")
  33. set (arch_source ${IWASM_AOT_DIR}/arch/aot_reloc_arm.c)
  34. elseif (WAMR_BUILD_TARGET MATCHES "THUMB.*")
  35. set (arch_source ${IWASM_AOT_DIR}/arch/aot_reloc_thumb.c)
  36. elseif (WAMR_BUILD_TARGET STREQUAL "MIPS")
  37. set (arch_source ${IWASM_AOT_DIR}/arch/aot_reloc_mips.c)
  38. elseif (WAMR_BUILD_TARGET STREQUAL "XTENSA")
  39. set (arch_source ${IWASM_AOT_DIR}/arch/aot_reloc_xtensa.c)
  40. elseif (WAMR_BUILD_TARGET MATCHES "RISCV*")
  41. set (arch_source ${IWASM_AOT_DIR}/arch/aot_reloc_riscv.c)
  42. elseif (WAMR_BUILD_TARGET STREQUAL "ARC")
  43. set (arch_source ${IWASM_AOT_DIR}/arch/aot_reloc_arc.c)
  44. else ()
  45. message (FATAL_ERROR "Build target isn't set")
  46. endif ()
  47. if (WAMR_BUILD_DEBUG_AOT EQUAL 1)
  48. add_definitions(-DWASM_ENABLE_DEBUG_AOT=1)
  49. file(GLOB debug_source ${IWASM_AOT_DIR}/debug/*.c)
  50. endif()
  51. if ((WAMR_BUILD_TARGET STREQUAL "X86_64" OR WAMR_BUILD_TARGET STREQUAL "AMD_64")
  52. AND (WAMR_BUILD_PLATFORM STREQUAL "windows")
  53. AND (NOT WAMR_DISABLE_HW_BOUND_CHECK EQUAL 1))
  54. include(FetchContent)
  55. FetchContent_Declare(
  56. zycore
  57. GIT_REPOSITORY https://github.com/zyantific/zycore-c.git
  58. )
  59. FetchContent_GetProperties(zycore)
  60. if (NOT zycore_POPULATED)
  61. message ("-- Fetching zycore ..")
  62. FetchContent_Populate(zycore)
  63. include_directories("${zycore_SOURCE_DIR}/include")
  64. include_directories("${zycore_BINARY_DIR}")
  65. add_definitions(-DZYCORE_STATIC_BUILD=1)
  66. add_subdirectory(${zycore_SOURCE_DIR} ${zycore_BINARY_DIR} EXCLUDE_FROM_ALL)
  67. file (GLOB_RECURSE c_source_zycore ${zycore_SOURCE_DIR}/src/*.c)
  68. endif ()
  69. FetchContent_Declare(
  70. zydis
  71. GIT_REPOSITORY https://github.com/zyantific/zydis.git
  72. GIT_TAG e14a07895136182a5b53e181eec3b1c6e0b434de
  73. )
  74. FetchContent_GetProperties(zydis)
  75. if (NOT zydis_POPULATED)
  76. message ("-- Fetching zydis ..")
  77. FetchContent_Populate(zydis)
  78. option(ZYDIS_FEATURE_ENCODER "" OFF)
  79. option(ZYDIS_BUILD_TOOLS "" OFF)
  80. option(ZYDIS_BUILD_EXAMPLES "" OFF)
  81. option(ZYDIS_BUILD_MAN "" OFF)
  82. option(ZYDIS_BUILD_DOXYGEN "" OFF)
  83. include_directories("${zydis_BINARY_DIR}")
  84. include_directories("${zydis_SOURCE_DIR}/include")
  85. include_directories("${zydis_SOURCE_DIR}/src")
  86. add_definitions(-DZYDIS_STATIC_BUILD=1)
  87. add_subdirectory(${zydis_SOURCE_DIR} ${zydis_BINARY_DIR} EXCLUDE_FROM_ALL)
  88. file (GLOB_RECURSE c_source_zydis ${zydis_SOURCE_DIR}/src/*.c)
  89. endif ()
  90. endif ()
  91. set (IWASM_AOT_SOURCE ${c_source_all} ${arch_source} ${debug_source}
  92. ${c_source_zycore} ${c_source_zydis})