From bdd7f79f801ebfe9afd3fa8176993cef507c49b6 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Thu, 6 Aug 2026 21:26:21 -0400 Subject: [PATCH] chore(cmake): carry option-driven defines on pybind11_headers INTERFACE PYBIND11_DISABLE_HANDLE_TYPE_NAME_DEFAULT_IMPLEMENTATION and PYBIND11_SIMPLE_GIL_MANAGEMENT were directory-scoped add_compile_definitions, which only reached the master-project test build. On the pybind11_headers INTERFACE (like PYBIND11_INTERNALS_VERSION) they also apply in add_subdirectory mode and in the exported/installed targets. Assisted-by: ClaudeCode:claude-fable-5 --- CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f3f8beb2b..65f794a49d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,13 +109,6 @@ if(NOT DEFINED PYBIND11_USE_CROSSCOMPILING) endif() option(PYBIND11_USE_CROSSCOMPILING "Respect CMAKE_CROSSCOMPILING" OFF) -if(PYBIND11_DISABLE_HANDLE_TYPE_NAME_DEFAULT_IMPLEMENTATION) - add_compile_definitions(PYBIND11_DISABLE_HANDLE_TYPE_NAME_DEFAULT_IMPLEMENTATION) -endif() -if(PYBIND11_SIMPLE_GIL_MANAGEMENT) - add_compile_definitions(PYBIND11_SIMPLE_GIL_MANAGEMENT) -endif() - cmake_dependent_option( USE_PYTHON_INCLUDE_DIR "Install pybind11 headers in Python include directory instead of default installation prefix" @@ -307,6 +300,13 @@ if(NOT TARGET pybind11_headers) target_compile_definitions( pybind11_headers INTERFACE "PYBIND11_INTERNALS_VERSION=${PYBIND11_INTERNALS_VERSION}") endif() + if(PYBIND11_DISABLE_HANDLE_TYPE_NAME_DEFAULT_IMPLEMENTATION) + target_compile_definitions(pybind11_headers + INTERFACE PYBIND11_DISABLE_HANDLE_TYPE_NAME_DEFAULT_IMPLEMENTATION) + endif() + if(PYBIND11_SIMPLE_GIL_MANAGEMENT) + target_compile_definitions(pybind11_headers INTERFACE PYBIND11_SIMPLE_GIL_MANAGEMENT) + endif() else() # It is invalid to install a target twice, too. set(PYBIND11_INSTALL OFF)