iwasm_common.cmake 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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_DISABLE_APP_ENTRY EQUAL 1)
  9. list(REMOVE_ITEM c_source_all "${IWASM_COMMON_DIR}/wasm_application.c")
  10. endif ()
  11. if (CMAKE_OSX_ARCHITECTURES)
  12. string(TOLOWER "${CMAKE_OSX_ARCHITECTURES}" OSX_ARCHS)
  13. list(FIND OSX_ARCHS arm64 OSX_AARCH64)
  14. list(FIND OSX_ARCHS x86_64 OSX_X86_64)
  15. if (NOT "${OSX_AARCH64}" STREQUAL "-1" AND NOT "${OSX_X86_64}" STREQUAL "-1")
  16. set(OSX_UNIVERSAL_BUILD 1)
  17. endif()
  18. endif()
  19. if (WAMR_BUILD_INVOKE_NATIVE_GENERAL EQUAL 1)
  20. # Use invokeNative C version instead of asm code version
  21. # if WAMR_BUILD_INVOKE_NATIVE_GENERAL is explicitly set.
  22. # Note:
  23. # the maximum number of native arguments is limited to 20,
  24. # and there are possible issues when passing arguments to
  25. # native function for some cpus, e.g. int64 and double arguments
  26. # in arm and mips need to be 8-bytes aligned, and some arguments
  27. # of x86_64 are passed by registers but not stack
  28. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_general.c)
  29. elseif (OSX_UNIVERSAL_BUILD EQUAL 1)
  30. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_osx_universal.s)
  31. elseif (WAMR_BUILD_TARGET STREQUAL "X86_64" OR WAMR_BUILD_TARGET STREQUAL "AMD_64")
  32. if (NOT WAMR_BUILD_SIMD EQUAL 1)
  33. if (WAMR_BUILD_PLATFORM STREQUAL "windows")
  34. if (NOT MINGW)
  35. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_em64.asm)
  36. else ()
  37. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_mingw_x64.s)
  38. endif ()
  39. else ()
  40. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_em64.s)
  41. endif ()
  42. else ()
  43. if (WAMR_BUILD_PLATFORM STREQUAL "windows")
  44. if (NOT MINGW)
  45. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_em64_simd.asm)
  46. else ()
  47. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_mingw_x64_simd.s)
  48. endif ()
  49. else()
  50. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_em64_simd.s)
  51. endif()
  52. endif ()
  53. elseif (WAMR_BUILD_TARGET STREQUAL "X86_32")
  54. if (WAMR_BUILD_PLATFORM STREQUAL "windows")
  55. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_ia32.asm)
  56. else ()
  57. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_ia32.s)
  58. endif ()
  59. elseif (WAMR_BUILD_TARGET MATCHES "ARM.*")
  60. if (WAMR_BUILD_TARGET MATCHES "ARM.*_VFP")
  61. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_arm_vfp.s)
  62. else ()
  63. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_arm.s)
  64. endif ()
  65. elseif (WAMR_BUILD_TARGET MATCHES "THUMB.*")
  66. if (WAMR_BUILD_TARGET MATCHES "THUMB.*_VFP")
  67. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_thumb_vfp.s)
  68. else ()
  69. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_thumb.s)
  70. endif ()
  71. elseif (WAMR_BUILD_TARGET MATCHES "AARCH64.*")
  72. if (NOT WAMR_BUILD_SIMD EQUAL 1)
  73. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_aarch64.s)
  74. else()
  75. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_aarch64_simd.s)
  76. endif()
  77. elseif (WAMR_BUILD_TARGET STREQUAL "MIPS")
  78. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_mips.s)
  79. elseif (WAMR_BUILD_TARGET STREQUAL "XTENSA")
  80. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_xtensa.s)
  81. elseif (WAMR_BUILD_TARGET MATCHES "RISCV*")
  82. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_riscv.S)
  83. elseif (WAMR_BUILD_TARGET STREQUAL "ARC")
  84. set (source_all ${c_source_all} ${IWASM_COMMON_DIR}/arch/invokeNative_arc.s)
  85. else ()
  86. message (FATAL_ERROR "Build target isn't set")
  87. endif ()
  88. set (IWASM_COMMON_SOURCE ${source_all})