Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: FindPython by default #5553

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,17 +52,17 @@ jobs:
- runs-on: ubuntu-20.04
python: '3.8'
args: >
-DPYBIND11_FINDPYTHON=ON
-DPYBIND11_FINDPYTHON=OFF
-DCMAKE_CXX_FLAGS="-D_=1"
exercise_D_: 1
- runs-on: ubuntu-20.04
python: 'pypy-3.8'
args: >
-DPYBIND11_FINDPYTHON=ON
-DPYBIND11_FINDPYTHON=OFF
- runs-on: windows-2019
python: '3.8'
args: >
-DPYBIND11_FINDPYTHON=ON
-DPYBIND11_FINDPYTHON=OFF
# Inject a couple Windows 2019 runs
- runs-on: windows-2019
python: '3.9'
Expand Down
6 changes: 4 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
else()
set(PYBIND11_MASTER_PROJECT OFF)
set(pybind11_system SYSTEM)
set(_pybind11_findpython_default OFF)
set(_pybind11_findpython_default COMPAT)
endif()

# Options
Expand Down Expand Up @@ -114,7 +114,9 @@ cmake_dependent_option(
"Install pybind11 headers in Python include directory instead of default installation prefix"
OFF "PYBIND11_INSTALL" OFF)

option(PYBIND11_FINDPYTHON "Force new FindPython" ${_pybind11_findpython_default})
set(PYBIND11_FINDPYTHON
${_pybind11_findpython_default}
CACHE STRING "Force new FindPython - NEW, OLD, COMPAT")

# Allow PYTHON_EXECUTABLE if in FINDPYTHON mode and building pybind11's tests
# (makes transition easier while we support both modes).
Expand Down
20 changes: 19 additions & 1 deletion tools/pybind11Common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,25 @@ elseif(
))

# New mode
include("${CMAKE_CURRENT_LIST_DIR}/pybind11NewTools.cmake")
if(Python_FOUND OR Python3_FOUND)
include("${CMAKE_CURRENT_LIST_DIR}/pybind11NewTools.cmake")
else()
include("${CMAKE_CURRENT_LIST_DIR}/pybind11NewTools.cmake")

message(
"Using compatibility mode for Python, set PYBIND11_FINDPYTHON to NEW/OLD to silence this message"
)
set(PYTHON_EXECUTABLE "${Python_EXECUTABLE}")
set(PYTHON_INCLUDE_DIR "${Python_INCLUDE_DIR}")
set(Python_INCLUDE_DIRS "${Python_INCLUDE_DIRS}")
set(PYTHON_LIBRARY "${Python_LIRARY}")
set(PYTHON_LIBRARIES "${Python_LIRARIES}")
set(PYTHON_VERSION "${Python_VERSION}")
set(PYTHON_VERSION_STRING "${Python_VERSION_STRING}")
set(PYTHON_VERSION_MAJOR "${Python_VERSION_MAJOR}")
set(PYTHON_VERSION_MINOR "${Python_VERSION_MINOR}")
set(PYTHON_VERSION_PATCH "${Python_VERSION_PATCH}")
endif()

else()

Expand Down
7 changes: 7 additions & 0 deletions tools/pybind11Config.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,13 @@ from 3.12+ forward (3.15+ _highly_ recommended). If you set the minimum or
maximum version of CMake to 3.27+, then FindPython is the default (since
FindPythonInterp/FindPythonLibs has been removed via policy `CMP0148`).

Starting in pybind11 3.0, the new mode is the default, but we provide backward
compatible names (`PYTHON_*` vs. the new `Python_* names). Set the mode
explicitly to avoid the compatibility defines. You can specify this mode
explicitly by setting `PYBIND11_FINDPYTHON` to `COMPAT`, but if you are changing
your CMakeLists anyway, please just use the `ON` mode. A future release may
default to `ON`.

New FindPython mode
^^^^^^^^^^^^^^^^^^^

Expand Down
Loading