1 # This directory contains a large amount of C code which provides
2 # generic implementations of the core runtime library along with optimized
3 # architecture-specific code in various subdirectories.
20 # FIXME: atomic.c may only be compiled if host compiler understands _Atomic
44 enable_execute_stack.c
146 atomic_flag_clear_explicit.c
147 atomic_flag_test_and_set.c
148 atomic_flag_test_and_set_explicit.c
149 atomic_signal_fence.c
150 atomic_thread_fence.c)
162 gcc_personality_v0.c)
174 set(x86_64h_SOURCES ${x86_64_SOURCES})
210 # Use C versions of functions when building on MSVC
211 # MSVC's assembler takes Intel syntax, not AT&T syntax
217 set(x86_64h_SOURCES ${x86_64_SOURCES})
218 set(i386_SOURCES ${GENERIC_SOURCES})
219 set(i686_SOURCES ${i386_SOURCES})
220 endif () # if (NOT MSVC)
224 arm/aeabi_cdcmpeq_check_nan.c
226 arm/aeabi_cfcmpeq_check_nan.c
252 arm/sync_fetch_and_add_4.S
253 arm/sync_fetch_and_add_8.S
254 arm/sync_fetch_and_and_4.S
255 arm/sync_fetch_and_and_8.S
256 arm/sync_fetch_and_max_4.S
257 arm/sync_fetch_and_max_8.S
258 arm/sync_fetch_and_min_4.S
259 arm/sync_fetch_and_min_8.S
260 arm/sync_fetch_and_nand_4.S
261 arm/sync_fetch_and_nand_8.S
262 arm/sync_fetch_and_or_4.S
263 arm/sync_fetch_and_or_8.S
264 arm/sync_fetch_and_sub_4.S
265 arm/sync_fetch_and_sub_8.S
266 arm/sync_fetch_and_umax_4.S
267 arm/sync_fetch_and_umax_8.S
268 arm/sync_fetch_and_umin_4.S
269 arm/sync_fetch_and_umin_8.S
270 arm/sync_fetch_and_xor_4.S
271 arm/sync_fetch_and_xor_8.S
272 arm/sync_synchronize.S
311 arm/floatunssidfvfp.S
312 arm/floatunssisfvfp.S
325 arm/restore_vfp_d8_d15_regs.S
326 arm/save_vfp_d8_d15_regs.S
333 set(armv7_SOURCES ${arm_SOURCES})
334 set(armv7s_SOURCES ${arm_SOURCES})
335 set(arm64_SOURCES ${aarch64_SOURCES})
337 # macho_embedded archs
338 set(armv6m_SOURCES ${GENERIC_SOURCES})
339 set(armv7m_SOURCES ${arm_SOURCES})
340 set(armv7em_SOURCES ${arm_SOURCES})
342 set(mips_SOURCES ${GENERIC_SOURCES})
343 set(mipsel_SOURCES ${mips_SOURCES})
344 set(mips64_SOURCES ${mips_SOURCES})
345 set(mips64el_SOURCES ${mips_SOURCES})
347 add_custom_target(builtins)
350 add_subdirectory(Darwin-excludes)
351 add_subdirectory(macho_embedded)
352 darwin_add_builtin_libraries(${BUILTIN_SUPPORTED_OS})
354 foreach (arch ${BUILTIN_SUPPORTED_ARCH})
355 if (CAN_TARGET_${arch})
356 # Filter out generic versions of routines that are re-implemented in
357 # architecture specific manner. This prevents multiple definitions of the
358 # same symbols, making the symbol selection non-deterministic.
359 foreach (_file ${${arch}_SOURCES})
360 if (${_file} MATCHES ${arch}/*)
361 get_filename_component(_name ${_file} NAME)
362 string(REPLACE ".S" ".c" _cname "${_name}")
363 list(REMOVE_ITEM ${arch}_SOURCES ${_cname})
367 # Rust: don't insert a reference to MSVCRT.lib/etc
371 set(_cflags -std=c99)
374 add_compiler_rt_runtime(clang_rt.builtins
377 SOURCES ${${arch}_SOURCES}
379 PARENT_TARGET builtins)
384 add_dependencies(compiler-rt builtins)