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