xref: /llvm-project/compiler-rt/cmake/crt-config-ix.cmake (revision fab5c8fa4076614be243b0a5c95f4f3c6b725db6)
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(MIPS32 mips mipsel)
28set(MIPS64 mips64 mips64el)
29set(PPC32 powerpc powerpcspe)
30set(PPC64 powerpc64 powerpc64le)
31set(RISCV32 riscv32)
32set(RISCV64 riscv64)
33set(VE ve)
34
35set(ALL_CRT_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC32}
36    ${PPC64} ${RISCV32} ${RISCV64} ${VE} ${HEXAGON} ${LOONGARCH64}
37    ${MIPS32} ${MIPS64} ${SPARC} ${SPARCV9})
38
39include(CompilerRTUtils)
40
41if(NOT APPLE)
42  if(COMPILER_RT_CRT_STANDALONE_BUILD)
43    test_targets()
44  endif()
45  # Architectures supported by compiler-rt crt library.
46  filter_available_targets(CRT_SUPPORTED_ARCH ${ALL_CRT_SUPPORTED_ARCH})
47  message(STATUS "Supported architectures for crt: ${CRT_SUPPORTED_ARCH}")
48endif()
49
50if (CRT_SUPPORTED_ARCH AND OS_NAME MATCHES "Linux|SerenityOS" AND NOT LLVM_USE_SANITIZER)
51  set(COMPILER_RT_HAS_CRT TRUE)
52else()
53  set(COMPILER_RT_HAS_CRT FALSE)
54endif()
55