iwasm_fast_jit.cmake 4.0 KB

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