Home | History | Annotate | Download | only in asan
      1 set(ASAN_LIT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
      2 
      3 set(ASAN_TESTSUITES)
      4 
      5 if(CAN_TARGET_arm_android)
      6   # This is only true if we are cross-compiling.
      7   # Build all tests with host compiler and use host tools.
      8   set(ASAN_TEST_TARGET_CC ${CMAKE_C_COMPILER})
      9   set(ASAN_TEST_TARGET_CFLAGS ${COMPILER_RT_TEST_COMPILER_CFLAGS})
     10   get_filename_component(ASAN_TEST_LLVM_TOOLS_DIR ${CMAKE_C_COMPILER} PATH)
     11   set(ASAN_TEST_CONFIG_SUFFIX "-arm-android")
     12   set(ASAN_TEST_BITS "32")
     13   set(ASAN_TEST_DYNAMIC True)
     14   set(ASAN_TEST_TARGET_ARCH "arm-android")
     15   configure_lit_site_cfg(
     16     ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
     17     ${CMAKE_CURRENT_BINARY_DIR}/ARMAndroidConfig/lit.site.cfg
     18     )
     19   list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/ARMAndroidConfig)
     20 endif()
     21 
     22 if(CAN_TARGET_arm)
     23   # This is only true if we are cross-compiling.
     24   # Build all tests with host compiler and use host tools.
     25   set(ASAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER})
     26   set(ASAN_TEST_TARGET_CFLAGS ${COMPILER_RT_TEST_COMPILER_CFLAGS})
     27   set(ASAN_TEST_CONFIG_SUFFIX "-arm-linux")
     28   set(ASAN_TEST_BITS "32")
     29   set(ASAN_TEST_DYNAMIC False)
     30   configure_lit_site_cfg(
     31     ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
     32     ${CMAKE_CURRENT_BINARY_DIR}/ARMLinuxConfig/lit.site.cfg
     33     )
     34   list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/ARMLinuxConfig)
     35 endif()
     36 
     37 if(CAN_TARGET_aarch64)
     38   # This is only true if we are cross-compiling.
     39   # Build all tests with host compiler and use host tools.
     40   set(ASAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER})
     41   set(ASAN_TEST_TARGET_CFLAGS ${COMPILER_RT_TEST_COMPILER_CFLAGS})
     42   set(ASAN_TEST_CONFIG_SUFFIX "-aarch64-linux")
     43   set(ASAN_TEST_BITS "64")
     44   set(ASAN_TEST_DYNAMIC False)
     45   configure_lit_site_cfg(
     46     ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
     47     ${CMAKE_CURRENT_BINARY_DIR}/AArch64LinuxConfig/lit.site.cfg
     48     )
     49   list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/AArch64LinuxConfig)
     50 endif()
     51 
     52 if(CAN_TARGET_x86_64 OR CAN_TARGET_powerpc64)
     53   set(ASAN_TEST_CONFIG_SUFFIX "64")
     54   set(ASAN_TEST_BITS "64")
     55   set(ASAN_TEST_TARGET_CFLAGS ${TARGET_64_BIT_CFLAGS})
     56   set(ASAN_TEST_DYNAMIC False)
     57   configure_lit_site_cfg(
     58     ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
     59     ${CMAKE_CURRENT_BINARY_DIR}/64bitConfig/lit.site.cfg
     60     )
     61   list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/64bitConfig)
     62   if(COMPILER_RT_BUILD_SHARED_ASAN)
     63     set(ASAN_TEST_CONFIG_SUFFIX "64-Dynamic")
     64     set(ASAN_TEST_DYNAMIC True)
     65     configure_lit_site_cfg(
     66       ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
     67       ${CMAKE_CURRENT_BINARY_DIR}/64bitConfig-dynamic/lit.site.cfg)
     68     list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/64bitConfig-dynamic)
     69   endif()
     70 endif()
     71 
     72 if(CAN_TARGET_i386)
     73   set(ASAN_TEST_CONFIG_SUFFIX "32")
     74   set(ASAN_TEST_BITS "32")
     75   set(ASAN_TEST_TARGET_CFLAGS ${TARGET_32_BIT_CFLAGS})
     76   set(ASAN_TEST_DYNAMIC False)
     77   set(ASAN_TEST_TARGET_ARCH "i386")
     78   configure_lit_site_cfg(
     79     ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
     80     ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig/lit.site.cfg
     81     )
     82   list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig)
     83   if(COMPILER_RT_BUILD_SHARED_ASAN)
     84     set(ASAN_TEST_CONFIG_SUFFIX "32-Dynamic")
     85     set(ASAN_TEST_DYNAMIC True)
     86     configure_lit_site_cfg(
     87       ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
     88       ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig-dynamic/lit.site.cfg)
     89     list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig-dynamic)
     90   endif()
     91 endif()
     92 
     93 if(CAN_TARGET_mips)
     94   set(ASAN_TEST_CONFIG_SUFFIX "32")
     95   set(ASAN_TEST_BITS "32")
     96   set(ASAN_TEST_TARGET_CFLAGS ${TARGET_32_BIT_CFLAGS})
     97   set(ASAN_TEST_DYNAMIC False)
     98   configure_lit_site_cfg(
     99     ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
    100     ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig/lit.site.cfg
    101     )
    102   list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig)
    103   if(COMPILER_RT_BUILD_SHARED_ASAN)
    104     set(ASAN_TEST_CONFIG_SUFFIX "32-Dynamic")
    105     set(ASAN_TEST_DYNAMIC True)
    106     configure_lit_site_cfg(
    107       ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
    108       ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig-dynamic/lit.site.cfg)
    109     list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig-dynamic)
    110   endif()
    111 endif()
    112 
    113 if(COMPILER_RT_INCLUDE_TESTS)
    114   configure_lit_site_cfg(
    115     ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
    116     ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg)
    117 endif()
    118 
    119 set(ASAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
    120 if(COMPILER_RT_STANDALONE_BUILD)
    121   list(APPEND ASAN_TEST_DEPS ${LLVM_TOOLS_BINARY_DIR}/FileCheck)
    122 else()
    123   list(APPEND ASAN_TEST_DEPS asan)
    124 endif()
    125 
    126 # FIXME: support unit test in the android test runner
    127 if(COMPILER_RT_INCLUDE_TESTS AND NOT CAN_TARGET_arm_android)
    128   list(APPEND ASAN_TEST_DEPS AsanUnitTests)
    129   list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/Unit)
    130 endif()
    131 add_lit_testsuite(check-asan "Running the AddressSanitizer tests"
    132   ${ASAN_TESTSUITES}
    133   DEPENDS ${ASAN_TEST_DEPS})
    134 set_target_properties(check-asan PROPERTIES FOLDER "ASan tests")
    135