Skip to content

Commit 6ad3f87

Browse files
authored
fix(build): avoid a possible warning about shadowed variables and changing behaviors (#3220)
1 parent 21282e6 commit 6ad3f87

File tree

1 file changed

+18
-24
lines changed

1 file changed

+18
-24
lines changed

tools/pybind11Tools.cmake

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,25 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
4545
find_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} MODULE REQUIRED ${_pybind11_quiet})
4646
list(REMOVE_AT CMAKE_MODULE_PATH -1)
4747

48+
# Makes a normal variable a cached variable
49+
macro(_PYBIND11_PROMOTE_TO_CACHE NAME)
50+
set(_tmp_ptc "${${NAME}}")
51+
# CMake 3.21 complains if a cached variable is shadowed by a normal one
52+
unset(${NAME})
53+
set(${NAME}
54+
"${_tmp_ptc}"
55+
CACHE INTERNAL "")
56+
endmacro()
57+
4858
# Cache variables so pybind11_add_module can be used in parent projects
49-
set(PYTHON_INCLUDE_DIRS
50-
${PYTHON_INCLUDE_DIRS}
51-
CACHE INTERNAL "")
52-
set(PYTHON_LIBRARIES
53-
${PYTHON_LIBRARIES}
54-
CACHE INTERNAL "")
55-
set(PYTHON_MODULE_PREFIX
56-
${PYTHON_MODULE_PREFIX}
57-
CACHE INTERNAL "")
58-
set(PYTHON_MODULE_EXTENSION
59-
${PYTHON_MODULE_EXTENSION}
60-
CACHE INTERNAL "")
61-
set(PYTHON_VERSION_MAJOR
62-
${PYTHON_VERSION_MAJOR}
63-
CACHE INTERNAL "")
64-
set(PYTHON_VERSION_MINOR
65-
${PYTHON_VERSION_MINOR}
66-
CACHE INTERNAL "")
67-
set(PYTHON_VERSION
68-
${PYTHON_VERSION}
69-
CACHE INTERNAL "")
70-
set(PYTHON_IS_DEBUG
71-
"${PYTHON_IS_DEBUG}"
72-
CACHE INTERNAL "")
59+
_pybind11_promote_to_cache(PYTHON_INCLUDE_DIRS)
60+
_pybind11_promote_to_cache(PYTHON_LIBRARIES)
61+
_pybind11_promote_to_cache(PYTHON_MODULE_PREFIX)
62+
_pybind11_promote_to_cache(PYTHON_MODULE_EXTENSION)
63+
_pybind11_promote_to_cache(PYTHON_VERSION_MAJOR)
64+
_pybind11_promote_to_cache(PYTHON_VERSION_MINOR)
65+
_pybind11_promote_to_cache(PYTHON_VERSION)
66+
_pybind11_promote_to_cache(PYTHON_IS_DEBUG)
7367

7468
if(PYBIND11_MASTER_PROJECT)
7569
if(PYTHON_MODULE_EXTENSION MATCHES "pypy")

0 commit comments

Comments
 (0)