File: CheckCPUArchitecture.cmake

package info (click to toggle)
libsdl2 2.32.4%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 72,020 kB
  • sloc: ansic: 310,242; objc: 10,843; cpp: 9,959; xml: 6,904; sh: 5,714; perl: 3,277; python: 1,643; makefile: 1,022; asm: 661; javascript: 286
file content (44 lines) | stat: -rw-r--r-- 1,794 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
include(CheckCSourceCompiles)
include(CMakePushCheckState)

function(_internal_check_cpu_architecture macro_check NAME VARIABLE)
  cmake_push_check_state(RESET)
  string(TOUPPER "${NAME}" UPPER_NAME)
  set(CACHE_VARIABLE "CHECK_CPU_ARCHITECTURE_${UPPER_NAME}")
  set(test_src "
int main(int argc, char *argv[]) {
#if ${macro_check}
  return 0;
#else
  choke
#endif
}
")
  check_c_source_compiles("${test_src}" "${CACHE_VARIABLE}")
  cmake_pop_check_state()
  if(${CACHE_VARIABLE})
    set(${VARIABLE} "TRUE" PARENT_SCOPE)
  else()
    set(${VARIABLE} "FALSE" PARENT_SCOPE)
  endif()
endfunction()

function(check_cpu_architecture ARCH VARIABLE)
  if(ARCH STREQUAL "x86")
    _internal_check_cpu_architecture("defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) ||defined( __i386) || defined(_M_IX86)" x86 ${VARIABLE})
  elseif(ARCH STREQUAL "x64")
    _internal_check_cpu_architecture("(defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)) && !defined(_M_ARM64EC)" x64 ${VARIABLE})
  elseif(ARCH STREQUAL "arm32")
    _internal_check_cpu_architecture("defined(__arm__) || defined(_M_ARM)" arm32 ${VARIABLE})
  elseif(ARCH STREQUAL "arm64")
    _internal_check_cpu_architecture("defined(__aarch64__) || defined(_M_ARM64)" arm64 ${VARIABLE})
  elseif(ARCH STREQUAL "arm64ec")
    _internal_check_cpu_architecture("defined(_M_ARM64EC)" arm64ec ${VARIABLE})
  elseif(ARCH STREQUAL "loongarch64")
    _internal_check_cpu_architecture("defined(__loongarch64)" loongarch64 ${VARIABLE})
  else()
    message(WARNING "Unknown CPU architectures (${ARCH}).")
    set(${VARIABLE} FALSE)
  endif()
  set("${VARIABLE}" "${${VARIABLE}}" PARENT_SCOPE)
endfunction()