| # First, add the subdirectories which contain feature-based runtime libraries |
| # and several convenience helper libraries. |
| if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux") |
| # AddressSanitizer is supported on Linux and Mac OS X. |
| # Windows support is work in progress. |
| add_subdirectory(asan) |
| add_subdirectory(interception) |
| add_subdirectory(sanitizer_common) |
| if(NOT ANDROID) |
| add_subdirectory(lsan) |
| add_subdirectory(profile) |
| add_subdirectory(ubsan) |
| endif() |
| endif() |
| if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND NOT ANDROID) |
| # ThreadSanitizer and MemorySanitizer are supported on Linux only. |
| add_subdirectory(tsan) |
| add_subdirectory(msan) |
| add_subdirectory(msandr) |
| endif() |
| |
| # The top-level lib 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 |
| 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 |
| 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 |
| 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 |
| 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}) |
| |
| foreach(arch x86_64 i386) |
| if(CAN_TARGET_${arch}) |
| add_compiler_rt_static_runtime(clang_rt.${arch} ${arch} |
| SOURCES ${${arch}_SOURCES} |
| CFLAGS "-std=c99") |
| endif() |
| endforeach() |
| |
| # Generate configs for running lit and unit tests. |
| configure_lit_site_cfg( |
| ${CMAKE_CURRENT_SOURCE_DIR}/lit.common.configured.in |
| ${CMAKE_CURRENT_BINARY_DIR}/lit.common.configured) |
| |
| configure_lit_site_cfg( |
| ${CMAKE_CURRENT_SOURCE_DIR}/lit.common.unit.configured.in |
| ${CMAKE_CURRENT_BINARY_DIR}/lit.common.unit.configured) |
| |