xref: /llvm-project/pstl/test/CMakeLists.txt (revision 5c4c44310a38ff77e15585636da57a66e737570d)
15e334b51SLouis Dionne#===-- CMakeLists.txt ----------------------------------------------------===##
25e334b51SLouis Dionne#
357b08b09SChandler Carruth# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
457b08b09SChandler Carruth# See https://llvm.org/LICENSE.txt for license information.
557b08b09SChandler Carruth# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65e334b51SLouis Dionne#
75e334b51SLouis Dionne#===----------------------------------------------------------------------===##
85e334b51SLouis Dionne
95e334b51SLouis Dionne# TODO(ldionne): This CMake testing infrastructure should be replaced with a
105e334b51SLouis Dionne#                llvm-lit test suite.
115e334b51SLouis Dionne
125e334b51SLouis Dionneadd_custom_target(pstl-build-tests
135e334b51SLouis Dionne    COMMENT "Build all the pstl tests.")
145e334b51SLouis Dionne
155e334b51SLouis Dionneadd_custom_target(check-pstl
165e334b51SLouis Dionne    COMMAND "${CMAKE_CTEST_COMMAND}" --output-on-failure
175e334b51SLouis Dionne    USES_TERMINAL
185e334b51SLouis Dionne    DEPENDS pstl-build-tests
195e334b51SLouis Dionne    COMMENT "Build and run all the unit tests.")
205e334b51SLouis Dionne
214d88b17bSLouis Dionneadd_library(test_stdlib INTERFACE)
224d88b17bSLouis Dionnetarget_include_directories(test_stdlib INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/support/stdlib")
234d88b17bSLouis Dionnetarget_link_libraries(test_stdlib INTERFACE pstl::ParallelSTL)
24*5c4c4431SLouis Dionnetarget_compile_options(test_stdlib INTERFACE -Wno-gnu-include-next)
254d88b17bSLouis Dionne
263b62047bSLouis Dionnefile(GLOB_RECURSE UNIT_TESTS "*.pass.cpp")
275e334b51SLouis Dionneforeach(_file IN LISTS UNIT_TESTS)
285e334b51SLouis Dionne    file(RELATIVE_PATH _target "${CMAKE_CURRENT_SOURCE_DIR}" "${_file}")
295e334b51SLouis Dionne    string(REPLACE ".cpp" "" _target "${_target}")
303b62047bSLouis Dionne    string(REPLACE "/" "-" _target "${_target}")
315e334b51SLouis Dionne    set(_target "pstl-${_target}")
325e334b51SLouis Dionne
335e334b51SLouis Dionne    add_executable(${_target} EXCLUDE_FROM_ALL "${_file}")
343b62047bSLouis Dionne    target_include_directories(${_target} PRIVATE "${CMAKE_CURRENT_LIST_DIR}")
35*5c4c4431SLouis Dionne    target_compile_options(${_target} PRIVATE -Wno-unused-local-typedef -Wno-unused-variable)
364d88b17bSLouis Dionne    target_link_libraries(${_target} PRIVATE test_stdlib)
375e334b51SLouis Dionne    set_target_properties(${_target} PROPERTIES CXX_EXTENSIONS NO
385e334b51SLouis Dionne                                                RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
395e334b51SLouis Dionne    add_test(${_target} "${CMAKE_CURRENT_BINARY_DIR}/${_target}")
405e334b51SLouis Dionne    add_dependencies(pstl-build-tests ${_target})
415e334b51SLouis Dionneendforeach()
42