mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-11 08:03:55 +00:00
60 lines
2.1 KiB
CMake
60 lines
2.1 KiB
CMake
add_custom_target(test_cmake_build)
|
|
|
|
if(CMAKE_VERSION VERSION_LESS 3.1)
|
|
# 3.0 needed for interface library for subdirectory_target/installed_target
|
|
# 3.1 needed for cmake -E env for testing
|
|
return()
|
|
endif()
|
|
|
|
include(CMakeParseArguments)
|
|
function(pybind11_add_build_test name)
|
|
cmake_parse_arguments(ARG "INSTALL" "" "" ${ARGN})
|
|
|
|
set(build_options "-DCMAKE_PREFIX_PATH=${PROJECT_BINARY_DIR}/mock_install"
|
|
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
|
|
"-DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE}"
|
|
"-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}"
|
|
"-DPYBIND11_CPP_STANDARD=${PYBIND11_CPP_STANDARD}")
|
|
if(NOT ARG_INSTALL)
|
|
list(APPEND build_options "-DPYBIND11_PROJECT_DIR=${PROJECT_SOURCE_DIR}")
|
|
endif()
|
|
|
|
add_custom_target(test_${name} ${CMAKE_CTEST_COMMAND}
|
|
--quiet --output-log ${name}.log
|
|
--build-and-test "${CMAKE_CURRENT_SOURCE_DIR}/${name}"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${name}"
|
|
--build-config Release
|
|
--build-noclean
|
|
--build-generator ${CMAKE_GENERATOR}
|
|
$<$<BOOL:${CMAKE_GENERATOR_PLATFORM}>:--build-generator-platform> ${CMAKE_GENERATOR_PLATFORM}
|
|
--build-makeprogram ${CMAKE_MAKE_PROGRAM}
|
|
--build-target check
|
|
--build-options ${build_options}
|
|
)
|
|
if(ARG_INSTALL)
|
|
add_dependencies(test_${name} mock_install)
|
|
endif()
|
|
add_dependencies(test_cmake_build test_${name})
|
|
endfunction()
|
|
|
|
pybind11_add_build_test(subdirectory_function)
|
|
pybind11_add_build_test(subdirectory_target)
|
|
if(NOT ${PYTHON_MODULE_EXTENSION} MATCHES "pypy")
|
|
pybind11_add_build_test(subdirectory_embed)
|
|
endif()
|
|
|
|
if(PYBIND11_INSTALL)
|
|
add_custom_target(mock_install ${CMAKE_COMMAND}
|
|
"-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/mock_install"
|
|
-P "${PROJECT_BINARY_DIR}/cmake_install.cmake"
|
|
)
|
|
|
|
pybind11_add_build_test(installed_function INSTALL)
|
|
pybind11_add_build_test(installed_target INSTALL)
|
|
if(NOT ${PYTHON_MODULE_EXTENSION} MATCHES "pypy")
|
|
pybind11_add_build_test(installed_embed INSTALL)
|
|
endif()
|
|
endif()
|
|
|
|
add_dependencies(check test_cmake_build)
|