1include(BuiltinTests)
2include(CheckCSourceCompiles)
3
4# Make all the tests only check the compiler
5set(TEST_COMPILE_ONLY On)
6
7builtin_check_c_compiler_flag(-fPIC                 COMPILER_RT_HAS_FPIC_FLAG)
8builtin_check_c_compiler_flag(-std=c11              COMPILER_RT_HAS_STD_C11_FLAG)
9builtin_check_c_compiler_flag(-Wno-pedantic         COMPILER_RT_HAS_WNO_PEDANTIC)
10builtin_check_c_compiler_flag(-fno-lto              COMPILER_RT_HAS_FNO_LTO_FLAG)
11builtin_check_c_compiler_flag(-fno-profile-generate COMPILER_RT_HAS_FNO_PROFILE_GENERATE_FLAG)
12builtin_check_c_compiler_flag(-fno-profile-instr-generate COMPILER_RT_HAS_FNO_PROFILE_INSTR_GENERATE_FLAG)
13builtin_check_c_compiler_flag(-fno-profile-instr-use COMPILER_RT_HAS_FNO_PROFILE_INSTR_USE_FLAG)
14
15if(ANDROID)
16  set(OS_NAME "Android")
17else()
18  set(OS_NAME "${CMAKE_SYSTEM_NAME}")
19endif()
20
21set(ARM64 aarch64)
22set(ARM32 arm armhf)
23set(HEXAGON hexagon)
24set(X86 i386)
25set(X86_64 x86_64)
26set(LOONGARCH64 loongarch64)
27set(PPC32 powerpc powerpcspe)
28set(PPC64 powerpc64 powerpc64le)
29set(RISCV32 riscv32)
30set(RISCV64 riscv64)
31set(VE ve)
32
33set(ALL_CRT_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC32}
34    ${PPC64} ${RISCV32} ${RISCV64} ${VE} ${HEXAGON} ${LOONGARCH64})
35
36include(CompilerRTUtils)
37
38if(NOT APPLE)
39  if(COMPILER_RT_CRT_STANDALONE_BUILD)
40    test_targets()
41  endif()
42  # Architectures supported by compiler-rt crt library.
43  filter_available_targets(CRT_SUPPORTED_ARCH ${ALL_CRT_SUPPORTED_ARCH})
44  message(STATUS "Supported architectures for crt: ${CRT_SUPPORTED_ARCH}")
45endif()
46
47if (CRT_SUPPORTED_ARCH AND OS_NAME MATCHES "Linux" AND NOT LLVM_USE_SANITIZER)
48  set(COMPILER_RT_HAS_CRT TRUE)
49else()
50  set(COMPILER_RT_HAS_CRT FALSE)
51endif()
52