DetectArchitecture.cmake 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. include(CheckSymbolExists)
  2. if (CMAKE_OSX_ARCHITECTURES)
  3. set(DYNARMIC_MULTIARCH_BUILD 1)
  4. set(ARCHITECTURE "${CMAKE_OSX_ARCHITECTURES}")
  5. return()
  6. endif()
  7. function(detect_architecture symbol arch)
  8. if (NOT DEFINED ARCHITECTURE)
  9. set(CMAKE_REQUIRED_QUIET YES)
  10. check_symbol_exists("${symbol}" "" DETECT_ARCHITECTURE_${arch})
  11. unset(CMAKE_REQUIRED_QUIET)
  12. if (DETECT_ARCHITECTURE_${arch})
  13. set(ARCHITECTURE "${arch}" PARENT_SCOPE)
  14. endif()
  15. unset(DETECT_ARCHITECTURE_${arch} CACHE)
  16. endif()
  17. endfunction()
  18. detect_architecture("__ARM64__" arm64)
  19. detect_architecture("__aarch64__" arm64)
  20. detect_architecture("_M_ARM64" arm64)
  21. detect_architecture("__arm__" arm)
  22. detect_architecture("__TARGET_ARCH_ARM" arm)
  23. detect_architecture("_M_ARM" arm)
  24. detect_architecture("__x86_64" x86_64)
  25. detect_architecture("__x86_64__" x86_64)
  26. detect_architecture("__amd64" x86_64)
  27. detect_architecture("_M_X64" x86_64)
  28. detect_architecture("__i386" x86)
  29. detect_architecture("__i386__" x86)
  30. detect_architecture("_M_IX86" x86)
  31. detect_architecture("__ia64" ia64)
  32. detect_architecture("__ia64__" ia64)
  33. detect_architecture("_M_IA64" ia64)
  34. detect_architecture("__mips" mips)
  35. detect_architecture("__mips__" mips)
  36. detect_architecture("_M_MRX000" mips)
  37. detect_architecture("__ppc64__" ppc64)
  38. detect_architecture("__powerpc64__" ppc64)
  39. detect_architecture("__ppc__" ppc)
  40. detect_architecture("__ppc" ppc)
  41. detect_architecture("__powerpc__" ppc)
  42. detect_architecture("_ARCH_COM" ppc)
  43. detect_architecture("_ARCH_PWR" ppc)
  44. detect_architecture("_ARCH_PPC" ppc)
  45. detect_architecture("_M_MPPC" ppc)
  46. detect_architecture("_M_PPC" ppc)
  47. detect_architecture("__riscv" riscv)
  48. detect_architecture("__EMSCRIPTEN__" wasm)