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)
226 arm/aeabi_cdcmpeq_check_nan.c
228 arm/aeabi_cfcmpeq_check_nan.c
258 arm/floatunssidfvfp.S
259 arm/floatunssisfvfp.S
275 arm/restore_vfp_d8_d15_regs.S
276 arm/save_vfp_d8_d15_regs.S
283 arm/sync_fetch_and_add_4.S
284 arm/sync_fetch_and_add_8.S
285 arm/sync_fetch_and_and_4.S
286 arm/sync_fetch_and_and_8.S
287 arm/sync_fetch_and_max_4.S
288 arm/sync_fetch_and_max_8.S
289 arm/sync_fetch_and_min_4.S
290 arm/sync_fetch_and_min_8.S
291 arm/sync_fetch_and_nand_4.S
292 arm/sync_fetch_and_nand_8.S
293 arm/sync_fetch_and_or_4.S
294 arm/sync_fetch_and_or_8.S
295 arm/sync_fetch_and_sub_4.S
296 arm/sync_fetch_and_sub_8.S
297 arm/sync_fetch_and_umax_4.S
298 arm/sync_fetch_and_umax_8.S
299 arm/sync_fetch_and_umin_4.S
300 arm/sync_fetch_and_umin_8.S
301 arm/sync_fetch_and_xor_4.S
302 arm/sync_fetch_and_xor_8.S
303 arm/sync_synchronize.S
331 set(armhf_SOURCES ${arm_SOURCES})
332 set(armv7_SOURCES ${arm_SOURCES})
333 set(armv7s_SOURCES ${arm_SOURCES})
334 set(arm64_SOURCES ${aarch64_SOURCES})
336 # macho_embedded archs
337 set(armv6m_SOURCES ${GENERIC_SOURCES})
338 set(armv7m_SOURCES ${arm_SOURCES})
339 set(armv7em_SOURCES ${arm_SOURCES})
341 set(mips_SOURCES ${GENERIC_SOURCES})
342 set(mipsel_SOURCES ${mips_SOURCES})
343 set(mips64_SOURCES ${mips_SOURCES})
344 set(mips64el_SOURCES ${mips_SOURCES})
346 add_custom_target(builtins)
349 add_subdirectory(Darwin-excludes)
350 add_subdirectory(macho_embedded)
351 darwin_add_builtin_libraries(${BUILTIN_SUPPORTED_OS})
353 foreach (arch ${BUILTIN_SUPPORTED_ARCH})
354 if (CAN_TARGET_${arch})
355 # Filter out generic versions of routines that are re-implemented in
356 # architecture specific manner. This prevents multiple definitions of the
357 # same symbols, making the symbol selection non-deterministic.
358 foreach (_file ${${arch}_SOURCES})
359 if (${_file} MATCHES ${arch}/*)
360 get_filename_component(_name ${_file} NAME)
361 string(REPLACE ".S" ".c" _cname "${_name}")
362 list(REMOVE_ITEM ${arch}_SOURCES ${_cname})
366 # Rust: don't insert a reference to MSVCRT.lib/etc
370 set(_cflags -std=c99)
373 add_compiler_rt_runtime(clang_rt.builtins
376 SOURCES ${${arch}_SOURCES}
378 PARENT_TARGET builtins)
383 add_dependencies(compiler-rt builtins)