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