diff options
Diffstat (limited to 'lib/builtins/CMakeLists.txt')
| -rw-r--r-- | lib/builtins/CMakeLists.txt | 278 | 
1 files changed, 278 insertions, 0 deletions
| diff --git a/lib/builtins/CMakeLists.txt b/lib/builtins/CMakeLists.txt new file mode 100644 index 000000000000..999faa86739d --- /dev/null +++ b/lib/builtins/CMakeLists.txt @@ -0,0 +1,278 @@ +# This directory contains a large amount of C code which provides +# generic implementations of the core runtime library along with optimized +# architecture-specific code in various subdirectories. + +set(GENERIC_SOURCES +  absvdi2.c +  absvsi2.c +  absvti2.c +  adddf3.c +  addsf3.c +  addtf3.c +  addvdi3.c +  addvsi3.c +  addvti3.c +  apple_versioning.c +  ashldi3.c +  ashlti3.c +  ashrdi3.c +  ashrti3.c +  # FIXME: atomic.c may only be compiled if host compiler understands _Atomic +  # atomic.c +  clear_cache.c +  clzdi2.c +  clzsi2.c +  clzti2.c +  cmpdi2.c +  cmpti2.c +  comparedf2.c +  comparesf2.c +  ctzdi2.c +  ctzsi2.c +  ctzti2.c +  divdc3.c +  divdf3.c +  divdi3.c +  divmoddi4.c +  divmodsi4.c +  divsc3.c +  divsf3.c +  divsi3.c +  divti3.c +  divtf3.c +  divxc3.c +  enable_execute_stack.c +  eprintf.c +  extendsfdf2.c +  ffsdi2.c +  ffsti2.c +  fixdfdi.c +  fixdfsi.c +  fixdfti.c +  fixsfdi.c +  fixsfsi.c +  fixsfti.c +  fixunsdfdi.c +  fixunsdfsi.c +  fixunsdfti.c +  fixunssfdi.c +  fixunssfsi.c +  fixunssfti.c +  fixunsxfdi.c +  fixunsxfsi.c +  fixunsxfti.c +  fixxfdi.c +  fixxfti.c +  floatdidf.c +  floatdisf.c +  floatdixf.c +  floatsidf.c +  floatsisf.c +  floattidf.c +  floattisf.c +  floattixf.c +  floatundidf.c +  floatundisf.c +  floatundixf.c +  floatunsidf.c +  floatunsisf.c +  floatuntidf.c +  floatuntisf.c +  floatuntixf.c +  gcc_personality_v0.c +  int_util.c +  lshrdi3.c +  lshrti3.c +  moddi3.c +  modsi3.c +  modti3.c +  muldc3.c +  muldf3.c +  muldi3.c +  mulodi4.c +  mulosi4.c +  muloti4.c +  mulsc3.c +  mulsf3.c +  multi3.c +  multf3.c +  mulvdi3.c +  mulvsi3.c +  mulvti3.c +  mulxc3.c +  negdf2.c +  negdi2.c +  negsf2.c +  negti2.c +  negvdi2.c +  negvsi2.c +  negvti2.c +  paritydi2.c +  paritysi2.c +  parityti2.c +  popcountdi2.c +  popcountsi2.c +  popcountti2.c +  powidf2.c +  powisf2.c +  powitf2.c +  powixf2.c +  subdf3.c +  subsf3.c +  subvdi3.c +  subvsi3.c +  subvti3.c +  subtf3.c +  trampoline_setup.c +  truncdfsf2.c +  ucmpdi2.c +  ucmpti2.c +  udivdi3.c +  udivmoddi4.c +  udivmodsi4.c +  udivmodti4.c +  udivsi3.c +  udivti3.c +  umoddi3.c +  umodsi3.c +  umodti3.c) + +set(x86_64_SOURCES +  x86_64/floatdidf.c +  x86_64/floatdisf.c +  x86_64/floatdixf.c +  x86_64/floatundidf.S +  x86_64/floatundisf.S +  x86_64/floatundixf.S +  ${GENERIC_SOURCES}) + +set(i386_SOURCES +  i386/ashldi3.S +  i386/ashrdi3.S +  i386/divdi3.S +  i386/floatdidf.S +  i386/floatdisf.S +  i386/floatdixf.S +  i386/floatundidf.S +  i386/floatundisf.S +  i386/floatundixf.S +  i386/lshrdi3.S +  i386/moddi3.S +  i386/muldi3.S +  i386/udivdi3.S +  i386/umoddi3.S +  ${GENERIC_SOURCES}) + +set(i686_SOURCES +  ${i386_SOURCES}) + +set(arm_SOURCES +  arm/adddf3vfp.S +  arm/addsf3vfp.S +  arm/aeabi_dcmp.S +  arm/aeabi_div0.c +  arm/aeabi_fcmp.S +  arm/aeabi_idivmod.S +  arm/aeabi_ldivmod.S +  arm/aeabi_memcmp.S +  arm/aeabi_memcpy.S +  arm/aeabi_memmove.S +  arm/aeabi_memset.S +  arm/aeabi_uidivmod.S +  arm/aeabi_uldivmod.S +  arm/bswapdi2.S +  arm/bswapsi2.S +  arm/comparesf2.S +  arm/divdf3vfp.S +  arm/divmodsi4.S +  arm/divsf3vfp.S +  arm/divsi3.S +  arm/eqdf2vfp.S +  arm/eqsf2vfp.S +  arm/extendsfdf2vfp.S +  arm/fixdfsivfp.S +  arm/fixsfsivfp.S +  arm/fixunsdfsivfp.S +  arm/fixunssfsivfp.S +  arm/floatsidfvfp.S +  arm/floatsisfvfp.S +  arm/floatunssidfvfp.S +  arm/floatunssisfvfp.S +  arm/gedf2vfp.S +  arm/gesf2vfp.S +  arm/gtdf2vfp.S +  arm/gtsf2vfp.S +  arm/ledf2vfp.S +  arm/lesf2vfp.S +  arm/ltdf2vfp.S +  arm/ltsf2vfp.S +  arm/modsi3.S +  arm/muldf3vfp.S +  arm/mulsf3vfp.S +  arm/nedf2vfp.S +  arm/negdf2vfp.S +  arm/negsf2vfp.S +  arm/nesf2vfp.S +  arm/restore_vfp_d8_d15_regs.S +  arm/save_vfp_d8_d15_regs.S +  arm/subdf3vfp.S +  arm/subsf3vfp.S +  arm/switch16.S +  arm/switch32.S +  arm/switch8.S +  arm/switchu8.S +  arm/sync_fetch_and_add_4.S +  arm/sync_fetch_and_add_8.S +  arm/sync_fetch_and_and_4.S +  arm/sync_fetch_and_and_8.S +  arm/sync_fetch_and_max_4.S +  arm/sync_fetch_and_max_8.S +  arm/sync_fetch_and_min_4.S +  arm/sync_fetch_and_min_8.S +  arm/sync_fetch_and_nand_4.S +  arm/sync_fetch_and_nand_8.S +  arm/sync_fetch_and_or_4.S +  arm/sync_fetch_and_or_8.S +  arm/sync_fetch_and_sub_4.S +  arm/sync_fetch_and_sub_8.S +  arm/sync_fetch_and_umax_4.S +  arm/sync_fetch_and_umax_8.S +  arm/sync_fetch_and_umin_4.S +  arm/sync_fetch_and_umin_8.S +  arm/sync_fetch_and_xor_4.S +  arm/sync_fetch_and_xor_8.S +  arm/sync_synchronize.S +  arm/truncdfsf2vfp.S +  arm/udivmodsi4.S +  arm/udivsi3.S +  arm/umodsi3.S +  arm/unorddf2vfp.S +  arm/unordsf2vfp.S +  ${GENERIC_SOURCES}) + +add_custom_target(builtins) + +if (NOT WIN32) +  foreach (arch x86_64 i386 i686 arm) +    if (CAN_TARGET_${arch}) +      # Filter out generic versions of routines that are re-implemented in +      # architecture specific manner.  This prevents multiple definitions of the +      # same symbols, making the symbol selection non-deterministic. +      foreach (_file ${${arch}_SOURCES}) +        if (${_file} MATCHES ${arch}/*) +          get_filename_component(_name ${_file} NAME) +          string(REPLACE ".S" ".c" _cname "${_name}") +          list(REMOVE_ITEM ${arch}_SOURCES ${_cname}) +        endif () +      endforeach () + +      set_source_files_properties(${${arch}_SOURCES} PROPERTIES LANGUAGE C) +      add_compiler_rt_runtime(clang_rt.builtins-${arch} ${arch} STATIC +                              SOURCES ${${arch}_SOURCES} +                              CFLAGS "-std=c99") +      add_dependencies(builtins clang_rt.builtins-${arch}) +    endif () +  endforeach () +endif () + +add_dependencies(compiler-rt builtins) | 
