blob: a5704e5fed537d249ad53cfd88794ea66f131182 [file] [log] [blame]
Chris Bieneman18929dd2016-05-09 21:45:52 +00001include(BuiltinTests)
Chris Bieneman8a229382016-08-12 01:29:26 +00002include(CheckCSourceCompiles)
Chris Bieneman18929dd2016-05-09 21:45:52 +00003
4# Make all the tests only check the compiler
5set(TEST_COMPILE_ONLY On)
Chris Bieneman18929dd2016-05-09 21:45:52 +00006
Dean Michael Berrisa1df33d2016-11-16 01:01:13 +00007# Check host compiler support for certain flags
Chris Bieneman18929dd2016-05-09 21:45:52 +00008builtin_check_c_compiler_flag(-fPIC COMPILER_RT_HAS_FPIC_FLAG)
9builtin_check_c_compiler_flag(-fPIE COMPILER_RT_HAS_FPIE_FLAG)
10builtin_check_c_compiler_flag(-fno-builtin COMPILER_RT_HAS_FNO_BUILTIN_FLAG)
Saleem Abdulrasoolc6c13e52016-11-29 02:31:40 +000011builtin_check_c_compiler_flag(-std=c11 COMPILER_RT_HAS_STD_C11_FLAG)
Chris Bieneman18929dd2016-05-09 21:45:52 +000012builtin_check_c_compiler_flag(-fvisibility=hidden COMPILER_RT_HAS_VISIBILITY_HIDDEN_FLAG)
13builtin_check_c_compiler_flag(-fomit-frame-pointer COMPILER_RT_HAS_OMIT_FRAME_POINTER_FLAG)
14builtin_check_c_compiler_flag(-ffreestanding COMPILER_RT_HAS_FREESTANDING_FLAG)
Dean Michael Berrisa1df33d2016-11-16 01:01:13 +000015builtin_check_c_compiler_flag(-fxray-instrument COMPILER_RT_HAS_XRAY_COMPILER_FLAG)
Chris Bieneman18929dd2016-05-09 21:45:52 +000016
Chris Bienemana00b2132016-08-15 20:12:43 +000017builtin_check_c_compiler_source(COMPILER_RT_HAS_ATOMIC_KEYWORD
Chris Bieneman8a229382016-08-12 01:29:26 +000018"
19int foo(int x, int y) {
20 _Atomic int result = x * y;
21 return result;
22}
23")
24
25
Chris Bieneman18929dd2016-05-09 21:45:52 +000026set(ARM64 aarch64)
Jonathan Roelofs3e7872b2017-05-24 15:53:24 +000027set(ARM32 arm armhf armv6m armv7m armv7em armv7 armv7s armv7k)
Sid Manning45688582018-05-09 14:44:54 +000028set(HEXAGON hexagon)
Michal Gorny9d511002017-08-28 20:30:12 +000029set(X86 i386)
Chris Bieneman18929dd2016-05-09 21:45:52 +000030set(X86_64 x86_64)
31set(MIPS32 mips mipsel)
32set(MIPS64 mips64 mips64el)
33set(PPC64 powerpc64 powerpc64le)
Shiva Chen9008dc92018-03-01 07:47:27 +000034set(RISCV32 riscv32)
35set(RISCV64 riscv64)
Chris Bieneman18929dd2016-05-09 21:45:52 +000036set(WASM32 wasm32)
37set(WASM64 wasm64)
38
39if(APPLE)
40 set(ARM64 arm64)
41 set(ARM32 armv7 armv7k armv7s)
42 set(X86_64 x86_64 x86_64h)
43endif()
44
45set(ALL_BUILTIN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64}
Sid Manning45688582018-05-09 14:44:54 +000046 ${HEXAGON} ${MIPS32} ${MIPS64} ${PPC64} ${RISCV32} ${RISCV64} ${WASM32} ${WASM64})
Chris Bieneman18929dd2016-05-09 21:45:52 +000047
48include(CompilerRTUtils)
49include(CompilerRTDarwinUtils)
50
Chris Bieneman18929dd2016-05-09 21:45:52 +000051if(APPLE)
52
53 find_darwin_sdk_dir(DARWIN_osx_SYSROOT macosx)
54 find_darwin_sdk_dir(DARWIN_iossim_SYSROOT iphonesimulator)
55 find_darwin_sdk_dir(DARWIN_ios_SYSROOT iphoneos)
56 find_darwin_sdk_dir(DARWIN_watchossim_SYSROOT watchsimulator)
57 find_darwin_sdk_dir(DARWIN_watchos_SYSROOT watchos)
58 find_darwin_sdk_dir(DARWIN_tvossim_SYSROOT appletvsimulator)
59 find_darwin_sdk_dir(DARWIN_tvos_SYSROOT appletvos)
60
61 set(DARWIN_EMBEDDED_PLATFORMS)
62 set(DARWIN_osx_BUILTIN_MIN_VER 10.5)
63 set(DARWIN_osx_BUILTIN_MIN_VER_FLAG
64 -mmacosx-version-min=${DARWIN_osx_BUILTIN_MIN_VER})
65
66 if(COMPILER_RT_ENABLE_IOS)
67 list(APPEND DARWIN_EMBEDDED_PLATFORMS ios)
68 set(DARWIN_ios_MIN_VER_FLAG -miphoneos-version-min)
69 set(DARWIN_ios_BUILTIN_MIN_VER 6.0)
70 set(DARWIN_ios_BUILTIN_MIN_VER_FLAG
71 ${DARWIN_ios_MIN_VER_FLAG}=${DARWIN_ios_BUILTIN_MIN_VER})
72 endif()
73 if(COMPILER_RT_ENABLE_WATCHOS)
74 list(APPEND DARWIN_EMBEDDED_PLATFORMS watchos)
75 set(DARWIN_watchos_MIN_VER_FLAG -mwatchos-version-min)
76 set(DARWIN_watchos_BUILTIN_MIN_VER 2.0)
77 set(DARWIN_watchos_BUILTIN_MIN_VER_FLAG
78 ${DARWIN_watchos_MIN_VER_FLAG}=${DARWIN_watchos_BUILTIN_MIN_VER})
79 endif()
80 if(COMPILER_RT_ENABLE_TVOS)
81 list(APPEND DARWIN_EMBEDDED_PLATFORMS tvos)
82 set(DARWIN_tvos_MIN_VER_FLAG -mtvos-version-min)
83 set(DARWIN_tvos_BUILTIN_MIN_VER 9.0)
84 set(DARWIN_tvos_BUILTIN_MIN_VER_FLAG
85 ${DARWIN_tvos_MIN_VER_FLAG}=${DARWIN_tvos_BUILTIN_MIN_VER})
86 endif()
87
88 set(BUILTIN_SUPPORTED_OS osx)
89
90 # We're setting the flag manually for each target OS
91 set(CMAKE_OSX_DEPLOYMENT_TARGET "")
92
93 if(NOT DARWIN_osx_ARCHS)
94 set(DARWIN_osx_ARCHS i386 x86_64 x86_64h)
95 endif()
96
97 set(DARWIN_sim_ARCHS i386 x86_64)
98 set(DARWIN_device_ARCHS armv7 armv7s armv7k arm64)
99
100 message(STATUS "OSX supported arches: ${DARWIN_osx_ARCHS}")
101 foreach(arch ${DARWIN_osx_ARCHS})
102 list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
103 set(CAN_TARGET_${arch} 1)
104 endforeach()
105
106 # Need to build a 10.4 compatible libclang_rt
107 set(DARWIN_10.4_SYSROOT ${DARWIN_osx_SYSROOT})
108 set(DARWIN_10.4_BUILTIN_MIN_VER 10.4)
109 set(DARWIN_10.4_BUILTIN_MIN_VER_FLAG
110 -mmacosx-version-min=${DARWIN_10.4_BUILTIN_MIN_VER})
111 set(DARWIN_10.4_SKIP_CC_KEXT On)
112 darwin_test_archs(10.4 DARWIN_10.4_ARCHS i386 x86_64)
113 message(STATUS "OSX 10.4 supported builtin arches: ${DARWIN_10.4_ARCHS}")
114 if(DARWIN_10.4_ARCHS)
115 # don't include the Haswell slice in the 10.4 compatibility library
116 list(REMOVE_ITEM DARWIN_10.4_ARCHS x86_64h)
117 list(APPEND BUILTIN_SUPPORTED_OS 10.4)
118 endif()
119
120 foreach(platform ${DARWIN_EMBEDDED_PLATFORMS})
121 if(DARWIN_${platform}sim_SYSROOT)
122 set(DARWIN_${platform}sim_BUILTIN_MIN_VER
123 ${DARWIN_${platform}_BUILTIN_MIN_VER})
124 set(DARWIN_${platform}sim_BUILTIN_MIN_VER_FLAG
125 ${DARWIN_${platform}_BUILTIN_MIN_VER_FLAG})
126
127 set(DARWIN_${platform}sim_SKIP_CC_KEXT On)
128
129 set(test_arches ${DARWIN_sim_ARCHS})
130 if(DARWIN_${platform}sim_ARCHS)
131 set(test_arches DARWIN_${platform}sim_ARCHS)
132 endif()
133
134 darwin_test_archs(${platform}sim
135 DARWIN_${platform}sim_ARCHS
136 ${test_arches})
137 message(STATUS "${platform} Simulator supported builtin arches: ${DARWIN_${platform}sim_ARCHS}")
138 if(DARWIN_${platform}sim_ARCHS)
139 list(APPEND BUILTIN_SUPPORTED_OS ${platform}sim)
140 endif()
141 foreach(arch ${DARWIN_${platform}sim_ARCHS})
142 list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
143 set(CAN_TARGET_${arch} 1)
144 endforeach()
145 endif()
146
147 if(DARWIN_${platform}_SYSROOT)
148 set(test_arches ${DARWIN_device_ARCHS})
149 if(DARWIN_${platform}_ARCHS)
150 set(test_arches DARWIN_${platform}_ARCHS)
151 endif()
152
153 darwin_test_archs(${platform}
154 DARWIN_${platform}_ARCHS
155 ${test_arches})
156 message(STATUS "${platform} supported builtin arches: ${DARWIN_${platform}_ARCHS}")
157 if(DARWIN_${platform}_ARCHS)
158 list(APPEND BUILTIN_SUPPORTED_OS ${platform})
159 endif()
160 foreach(arch ${DARWIN_${platform}_ARCHS})
161 list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
162 set(CAN_TARGET_${arch} 1)
163 endforeach()
164 endif()
165 endforeach()
166
167 list_intersect(BUILTIN_SUPPORTED_ARCH ALL_BUILTIN_SUPPORTED_ARCH COMPILER_RT_SUPPORTED_ARCH)
168
169else()
170 # If we're not building the builtins standalone, just rely on the tests in
171 # config-ix.cmake to tell us what to build. Otherwise we need to do some leg
172 # work here...
173 if(COMPILER_RT_BUILTINS_STANDALONE_BUILD)
174 test_targets()
175 endif()
176 # Architectures supported by compiler-rt libraries.
177 filter_available_targets(BUILTIN_SUPPORTED_ARCH
178 ${ALL_BUILTIN_SUPPORTED_ARCH})
179endif()
180
181message(STATUS "Builtin supported architectures: ${BUILTIN_SUPPORTED_ARCH}")