/ 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)