summaryrefslogtreecommitdiffstats
path: root/compiler-rt/test/fuzzer/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt/test/fuzzer/CMakeLists.txt')
-rw-r--r--compiler-rt/test/fuzzer/CMakeLists.txt67
1 files changed, 48 insertions, 19 deletions
diff --git a/compiler-rt/test/fuzzer/CMakeLists.txt b/compiler-rt/test/fuzzer/CMakeLists.txt
index bd511123255..5577b0051c5 100644
--- a/compiler-rt/test/fuzzer/CMakeLists.txt
+++ b/compiler-rt/test/fuzzer/CMakeLists.txt
@@ -8,36 +8,65 @@ if(COMPILER_RT_INCLUDE_TESTS)
list(APPEND LIBFUZZER_TEST_DEPS FuzzerUnitTests)
endif()
-set(LIBFUZZER_TESTSUITES)
+set(EXCLUDE_FROM_ALL ON)
+add_custom_target(check-fuzzer)
if(COMPILER_RT_INCLUDE_TESTS)
# libFuzzer unit tests.
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/unit/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/unit/lit.site.cfg)
- list(APPEND LIBFUZZER_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/unit)
+ add_lit_testsuite(check-fuzzer-unit "Running Fuzzer unit tests"
+ ${CMAKE_CURRENT_BINARY_DIR}/unit
+ DEPENDS ${LIBFUZZER_TEST_DEPS})
+ set_target_properties(check-fuzzer-unit PROPERTIES FOLDER "Compiler-RT Tests")
+ add_dependencies(check-fuzzer check-fuzzer-unit)
endif()
-foreach(arch ${FUZZER_SUPPORTED_ARCH})
- set(LIBFUZZER_TEST_COMPILER ${COMPILER_RT_TEST_COMPILER})
- get_test_cc_for_arch(${arch} LIBFUZZER_TEST_COMPILER LIBFUZZER_TEST_FLAGS)
+macro(test_fuzzer stdlib)
+ cmake_parse_arguments(TEST "" "" "DEPS" ${ARGN})
+ string(REPLACE "+" "x" stdlib_name ${stdlib})
+ string(REPLACE "-" ";" stdlib_list ${stdlib_name})
+ set(STDLIB_CAPITALIZED "")
+ foreach(part IN LISTS stdlib_list)
+ string(SUBSTRING ${part} 0 1 first_letter)
+ string(TOUPPER ${first_letter} first_letter)
+ string(REGEX REPLACE "^.(.*)" "${first_letter}\\1" part "${part}")
+ set(STDLIB_CAPITALIZED "${STDLIB_CAPITALIZED}${part}")
+ endforeach()
+ foreach(arch ${FUZZER_SUPPORTED_ARCH})
+ set(LIBFUZZER_TEST_COMPILER ${COMPILER_RT_TEST_COMPILER})
+ get_test_cc_for_arch(${arch} LIBFUZZER_TEST_COMPILER LIBFUZZER_TEST_FLAGS)
- string(TOUPPER ${arch} ARCH_UPPER_CASE)
- set(CONFIG_NAME ${ARCH_UPPER_CASE}${OS_NAME}Config)
+ set(LIBFUZZER_TEST_STDLIB ${stdlib})
- # LIT-based libFuzzer tests.
- configure_lit_site_cfg(
- ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
- ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg
- )
- list(APPEND LIBFUZZER_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME})
+ string(TOUPPER ${arch} ARCH_UPPER_CASE)
+ set(CONFIG_NAME ${ARCH_UPPER_CASE}${STDLIB_CAPITALIZED}${OS_NAME}Config)
-endforeach()
+ # LIT-based libFuzzer tests.
+ configure_lit_site_cfg(
+ ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg
+ )
-set(EXCLUDE_FROM_ALL ON)
+ add_lit_testsuite(check-fuzzer-${stdlib_name} "Running Fuzzer ${stdlib} tests"
+ ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}
+ DEPENDS ${LIBFUZZER_TEST_DEPS})
+ if(TEST_DEPS)
+ add_dependencies(check-fuzzer-${stdlib_name} ${TEST_DEPS})
+ endif()
+ set_target_properties(check-fuzzer-${stdlib_name} PROPERTIES FOLDER "Compiler-RT Tests")
+ add_dependencies(check-fuzzer check-fuzzer-${stdlib_name})
+ endforeach()
+endmacro()
-add_lit_testsuite(check-fuzzer "Running Fuzzer tests"
- ${LIBFUZZER_TESTSUITES}
- DEPENDS ${LIBFUZZER_TEST_DEPS})
-set_target_properties(check-fuzzer PROPERTIES FOLDER "Compiler-RT Tests")
+test_fuzzer("default")
+if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+ if(TARGET cxx_shared)
+ test_fuzzer("libc++" DEPS cxx_shared)
+ endif()
+ if(TARGET cxx_static)
+ test_fuzzer("static-libc++" DEPS cxx_static)
+ endif()
+endif()
OpenPOWER on IntegriCloud