iwasm_fast_jit.cmake 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. set (IWASM_FAST_JIT_DIR ${CMAKE_CURRENT_LIST_DIR})
  4. add_definitions(-DWASM_ENABLE_FAST_JIT=1)
  5. if (WAMR_BUILD_FAST_JIT_DUMP EQUAL 1)
  6. add_definitions(-DWASM_ENABLE_FAST_JIT_DUMP=1)
  7. endif ()
  8. include_directories (${IWASM_FAST_JIT_DIR})
  9. if (WAMR_BUILD_TARGET STREQUAL "X86_64" OR WAMR_BUILD_TARGET STREQUAL "AMD_64")
  10. include(FetchContent)
  11. if (NOT WAMR_BUILD_PLATFORM STREQUAL "linux-sgx")
  12. FetchContent_Declare(
  13. asmjit
  14. GIT_REPOSITORY https://github.com/asmjit/asmjit.git
  15. GIT_TAG c1019f1642a588107148f64ba54584b0ae3ec8d1
  16. )
  17. else ()
  18. FetchContent_Declare(
  19. asmjit
  20. GIT_REPOSITORY https://github.com/asmjit/asmjit.git
  21. GIT_TAG c1019f1642a588107148f64ba54584b0ae3ec8d1
  22. PATCH_COMMAND git apply ${IWASM_FAST_JIT_DIR}/asmjit_sgx_patch.diff
  23. )
  24. endif ()
  25. FetchContent_GetProperties(asmjit)
  26. if (NOT asmjit_POPULATED)
  27. message ("-- Fetching asmjit ..")
  28. FetchContent_Populate(asmjit)
  29. add_definitions(-DASMJIT_STATIC)
  30. add_definitions(-DASMJIT_NO_DEPRECATED)
  31. add_definitions(-DASMJIT_NO_BUILDER)
  32. add_definitions(-DASMJIT_NO_COMPILER)
  33. add_definitions(-DASMJIT_NO_JIT)
  34. add_definitions(-DASMJIT_NO_LOGGING)
  35. add_definitions(-DASMJIT_NO_TEXT)
  36. add_definitions(-DASMJIT_NO_VALIDATION)
  37. add_definitions(-DASMJIT_NO_INTROSPECTION)
  38. add_definitions(-DASMJIT_NO_INTRINSICS)
  39. add_definitions(-DASMJIT_NO_AARCH64)
  40. add_definitions(-DASMJIT_NO_AARCH32)
  41. include_directories("${asmjit_SOURCE_DIR}/src")
  42. add_subdirectory(${asmjit_SOURCE_DIR} ${asmjit_BINARY_DIR} EXCLUDE_FROM_ALL)
  43. file (GLOB_RECURSE cpp_source_asmjit
  44. ${asmjit_SOURCE_DIR}/src/asmjit/core/*.cpp
  45. ${asmjit_SOURCE_DIR}/src/asmjit/x86/*.cpp
  46. )
  47. endif ()
  48. if (WAMR_BUILD_FAST_JIT_DUMP EQUAL 1)
  49. FetchContent_Declare(
  50. zycore
  51. GIT_REPOSITORY https://github.com/zyantific/zycore-c.git
  52. )
  53. FetchContent_GetProperties(zycore)
  54. if (NOT zycore_POPULATED)
  55. message ("-- Fetching zycore ..")
  56. FetchContent_Populate(zycore)
  57. option(ZYDIS_BUILD_TOOLS "" OFF)
  58. option(ZYDIS_BUILD_EXAMPLES "" OFF)
  59. include_directories("${zycore_SOURCE_DIR}/include")
  60. include_directories("${zycore_BINARY_DIR}")
  61. add_subdirectory(${zycore_SOURCE_DIR} ${zycore_BINARY_DIR} EXCLUDE_FROM_ALL)
  62. file (GLOB_RECURSE c_source_zycore ${zycore_SOURCE_DIR}/src/*.c)
  63. endif ()
  64. FetchContent_Declare(
  65. zydis
  66. GIT_REPOSITORY https://github.com/zyantific/zydis.git
  67. GIT_TAG e14a07895136182a5b53e181eec3b1c6e0b434de
  68. )
  69. FetchContent_GetProperties(zydis)
  70. if (NOT zydis_POPULATED)
  71. message ("-- Fetching zydis ..")
  72. FetchContent_Populate(zydis)
  73. option(ZYDIS_BUILD_TOOLS "" OFF)
  74. option(ZYDIS_BUILD_EXAMPLES "" OFF)
  75. include_directories("${zydis_BINARY_DIR}")
  76. include_directories("${zydis_SOURCE_DIR}/include")
  77. include_directories("${zydis_SOURCE_DIR}/src")
  78. add_subdirectory(${zydis_SOURCE_DIR} ${zydis_BINARY_DIR} EXCLUDE_FROM_ALL)
  79. file (GLOB_RECURSE c_source_zydis ${zydis_SOURCE_DIR}/src/*.c)
  80. endif ()
  81. endif ()
  82. endif ()
  83. file (GLOB c_source_jit ${IWASM_FAST_JIT_DIR}/*.c ${IWASM_FAST_JIT_DIR}/fe/*.c)
  84. if (WAMR_BUILD_TARGET STREQUAL "X86_64" OR WAMR_BUILD_TARGET STREQUAL "AMD_64")
  85. file (GLOB_RECURSE cpp_source_jit_cg ${IWASM_FAST_JIT_DIR}/cg/x86-64/*.cpp)
  86. else ()
  87. message (FATAL_ERROR "Fast JIT codegen for target ${WAMR_BUILD_TARGET} isn't implemented")
  88. endif ()
  89. set (IWASM_FAST_JIT_SOURCE ${c_source_jit} ${cpp_source_jit_cg}
  90. ${cpp_source_asmjit} ${c_source_zycore} ${c_source_zydis})