From 1caf1d0613c25817e6524286615f3d3cff34afb5 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Sat, 1 Aug 2020 15:24:30 -0400 Subject: [PATCH] fix: check list validity and add missing file (#2352) Added a check on CMake 3.12+ to make sure the file listing is up to date. And caught a missing file with it! --- CMakeLists.txt | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6102ae4eb..7aa8ed72c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,6 +82,7 @@ set(PYBIND11_HEADERS include/pybind11/eigen.h include/pybind11/embed.h include/pybind11/eval.h + include/pybind11/iostream.h include/pybind11/functional.h include/pybind11/numpy.h include/pybind11/operators.h @@ -90,9 +91,26 @@ set(PYBIND11_HEADERS include/pybind11/stl.h include/pybind11/stl_bind.h) -# TODO: compare with grep and warn if missmatched +# Compare with grep and warn if mismatched +if(PYBIND11_MASTER_PROJECT AND NOT CMAKE_VERSION VERSION_LESS 3.12) + file( + GLOB_RECURSE _pybind11_header_check + LIST_DIRECTORIES false + RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" + CONFIGURE_DEPENDS "include/pybind11/*.h") + set(_pybind11_here_only ${PYBIND11_HEADERS}) + set(_pybind11_disk_only ${_pybind11_header_check}) + list(REMOVE_ITEM _pybind11_here_only ${_pybind11_header_check}) + list(REMOVE_ITEM _pybind11_disk_only ${PYBIND11_HEADERS}) + if(_pybind11_here_only) + message(AUTHOR_WARNING "PYBIND11_HEADERS has extra files:" ${_pybind11_here_only}) + endif() + if(_pybind11_disk_only) + message(AUTHOR_WARNING "PYBIND11_HEADERS is missing files:" ${_pybind11_disk_only}) + endif() +endif() -# cmake 3.12 added list(TRANSFORM PREPEND +# CMake 3.12 added list(TRANSFORM PREPEND # But we can't use it yet string(REPLACE "include/" "${CMAKE_CURRENT_SOURCE_DIR}/include/" PYBIND11_HEADERS "${PYBIND11_HEADERS}")