iwasm_common.cmake 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. set (IWASM_COMMON_DIR ${CMAKE_CURRENT_LIST_DIR})
  4. include_directories (${IWASM_COMMON_DIR})
  5. add_definitions(-DBH_MALLOC=wasm_runtime_malloc)
  6. add_definitions(-DBH_FREE=wasm_runtime_free)
  7. file (GLOB c_source_all ${IWASM_COMMON_DIR}/*.c)
  8. if (WAMR_BUILD_TARGET STREQUAL "X86_64" OR WAMR_BUILD_TARGET STREQUAL "AMD_64")
  9. if (NOT WAMR_BUILD_SIMD EQUAL 1)
  10. if (WAMR_BUILD_PLATFORM STREQUAL "windows")
  11. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_em64.asm)
  12. else ()
  13. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_em64.s)
  14. endif ()
  15. else ()
  16. if (WAMR_BUILD_PLATFORM STREQUAL "windows")
  17. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_em64_simd.asm)
  18. else()
  19. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_em64_simd.s)
  20. endif()
  21. endif ()
  22. elseif (WAMR_BUILD_TARGET STREQUAL "X86_32")
  23. if (WAMR_BUILD_PLATFORM STREQUAL "windows")
  24. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_ia32.asm)
  25. else ()
  26. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_ia32.s)
  27. endif ()
  28. elseif (WAMR_BUILD_TARGET MATCHES "ARM.*")
  29. if (WAMR_BUILD_TARGET MATCHES "ARM.*_VFP")
  30. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_arm_vfp.s)
  31. else ()
  32. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_arm.s)
  33. endif ()
  34. elseif (WAMR_BUILD_TARGET MATCHES "THUMB.*")
  35. if (WAMR_BUILD_TARGET MATCHES "THUMB.*_VFP")
  36. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_thumb_vfp.s)
  37. else ()
  38. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_thumb.s)
  39. endif ()
  40. elseif (WAMR_BUILD_TARGET MATCHES "AARCH64.*")
  41. if (NOT WAMR_BUILD_SIMD EQUAL 1)
  42. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_aarch64.s)
  43. else()
  44. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_aarch64_simd.s)
  45. endif()
  46. elseif (WAMR_BUILD_TARGET STREQUAL "MIPS")
  47. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_mips.s)
  48. elseif (WAMR_BUILD_TARGET STREQUAL "XTENSA")
  49. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_xtensa.s)
  50. elseif (WAMR_BUILD_TARGET STREQUAL "RISCV64" OR WAMR_BUILD_TARGET STREQUAL "RISCV64_LP64D")
  51. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_riscv64_lp64d.s)
  52. elseif (WAMR_BUILD_TARGET STREQUAL "RISCV64_LP64")
  53. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_riscv64_lp64.s)
  54. elseif (WAMR_BUILD_TARGET STREQUAL "RISCV32" OR WAMR_BUILD_TARGET STREQUAL "RISCV32_ILP32D")
  55. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_riscv32_ilp32d.s)
  56. elseif (WAMR_BUILD_TARGET STREQUAL "RISCV32_ILP32")
  57. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_riscv32_ilp32.s)
  58. elseif (WAMR_BUILD_TARGET STREQUAL "GENERAL")
  59. # Use invokeNative_general.c instead of assembly code,
  60. # but the maximum number of native arguments is limited to 20,
  61. # and there are possible issues when passing arguments to
  62. # native function for some cpus, e.g. int64 and double arguments
  63. # in arm and mips need to be 8-bytes aligned, and some arguments
  64. # of x86_64 are passed by registers but not stack
  65. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_general.c)
  66. else ()
  67. message (FATAL_ERROR "Build target isn't set")
  68. endif ()
  69. set (IWASM_COMMON_SOURCE ${source_all})