Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
pybind11
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
pybind11
Commits
df115977
Commit
df115977
authored
Jul 31, 2020
by
Henry Schreiner
Committed by
Henry Schreiner
Aug 06, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: cleanup
parent
3e448c0b
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
183 additions
and
109 deletions
+183
-109
.github/workflows/ci.yml
+9
-2
CMakeLists.txt
+12
-10
tests/CMakeLists.txt
+8
-8
tests/test_cmake_build/CMakeLists.txt
+1
-1
tests/test_cmake_build/installed_embed/CMakeLists.txt
+10
-0
tests/test_cmake_build/installed_function/CMakeLists.txt
+12
-1
tests/test_cmake_build/installed_target/CMakeLists.txt
+10
-0
tests/test_cmake_build/subdirectory_embed/CMakeLists.txt
+10
-0
tests/test_cmake_build/subdirectory_function/CMakeLists.txt
+10
-0
tests/test_cmake_build/subdirectory_target/CMakeLists.txt
+10
-0
tools/FindPythonLibsNew.cmake
+1
-0
tools/pybind11Config.cmake.in
+79
-73
tools/pybind11Tools.cmake
+11
-14
No files found.
.github/workflows/ci.yml
View file @
df115977
...
...
@@ -286,7 +286,10 @@ jobs:
apt-get install -y git make cmake g++ libeigen3-dev python3-dev python3-pip python3-pytest
-
name
:
Configure for install
run
:
cmake -DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)") -DPYBIND11_INSTALL=1 -DPYBIND11_TEST=0 .
run
:
>
cmake .
-DPYBIND11_INSTALL=1 -DPYBIND11_TEST=0
-DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)")
-
name
:
Make and install
run
:
make install
...
...
@@ -298,7 +301,11 @@ jobs:
run
:
mkdir /build-tests
-
name
:
Configure tests
run
:
cmake -DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)") ../pybind11-tests -DPYBIND11_WERROR=ON
run
:
>
cmake ../pybind11-tests
-DDOWNLOAD_CATCH=ON
-DPYBIND11_WERROR=ON
-DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)")
working-directory
:
/build-tests
-
name
:
Run tests
...
...
CMakeLists.txt
View file @
df115977
...
...
@@ -7,8 +7,9 @@
cmake_minimum_required
(
VERSION 3.7
)
# VERSION 3.7...3.18, but some versions of MCVS have a patched CMake 3.11
# that do not work properly with this syntax, so using the following workaround:
# The `cmake_minimum_required(VERSION 3.7...3.18)` syntax does not work with
# some versions of VS that have a patched CMake 3.11. This forces us to emulate
# the behavior using the following workaround:
if
(
${
CMAKE_VERSION
}
VERSION_LESS 3.18
)
cmake_policy
(
VERSION
${
CMAKE_MAJOR_VERSION
}
.
${
CMAKE_MINOR_VERSION
}
)
else
()
...
...
@@ -26,7 +27,7 @@ foreach(ver ${pybind11_version_defines})
endforeach
()
if
(
PYBIND11_VERSION_PATCH MATCHES
[[([a-zA-Z]+)]]
)
set
(
PYBIND
11_VERSION_TYPE
"
${
CMAKE_MATCH_1
}
"
)
set
(
pybind
11_VERSION_TYPE
"
${
CMAKE_MATCH_1
}
"
)
endif
()
string
(
REGEX MATCH
"[0-9]+"
PYBIND11_VERSION_PATCH
"
${
PYBIND11_VERSION_PATCH
}
"
)
...
...
@@ -40,7 +41,7 @@ include(GNUInstallDirs)
include
(
CMakePackageConfigHelpers
)
include
(
CMakeDependentOption
)
message
(
STATUS
"pybind11 v
${
pybind11_VERSION
}
${
PYBIND
11_VERSION_TYPE
}
"
)
message
(
STATUS
"pybind11 v
${
pybind11_VERSION
}
${
pybind
11_VERSION_TYPE
}
"
)
# Check if pybind11 is being used directly or via add_subdirectory
if
(
CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR
)
...
...
@@ -56,9 +57,11 @@ else()
set
(
pybind11_system SYSTEM
)
endif
()
# Options
option
(
PYBIND11_INSTALL
"Install pybind11 header files?"
${
PYBIND11_MASTER_PROJECT
}
)
option
(
PYBIND11_TEST
"Build pybind11 test suite?"
${
PYBIND11_MASTER_PROJECT
}
)
option
(
PYBIND11_CLASSIC_LTO
"Use the classic LTO flag algorithm, even on CMake 3.9+"
OFF
)
cmake_dependent_option
(
USE_PYTHON_INCLUDE_DIR
"Install pybind11 headers in Python include directory instead of default installation prefix"
...
...
@@ -117,8 +120,7 @@ string(REPLACE "include/" "${CMAKE_CURRENT_SOURCE_DIR}/include/" PYBIND11_HEADER
# Classic mode
list
(
APPEND CMAKE_MODULE_PATH
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/tools"
)
include
(
pybind11Tools
)
include
(
"
${
CMAKE_CURRENT_LIST_DIR
}
/tools/pybind11Tools.cmake"
)
# Cache variables so pybind11_add_module can be used in parent projects
set
(
PYBIND11_INCLUDE_DIR
...
...
@@ -146,10 +148,6 @@ set(PYTHON_IS_DEBUG
"
${
PYTHON_IS_DEBUG
}
"
CACHE INTERNAL
""
)
if
(
PYBIND11_TEST
OR
(
BUILD_TESTING AND PYBIND11_MASTER_PROJECT
))
add_subdirectory
(
tests
)
endif
()
if
(
USE_PYTHON_INCLUDE_DIR
)
file
(
RELATIVE_PATH CMAKE_INSTALL_INCLUDEDIR
${
CMAKE_INSTALL_PREFIX
}
${
PYTHON_INCLUDE_DIRS
}
)
endif
()
...
...
@@ -273,3 +271,7 @@ if(PYBIND11_INSTALL)
${
CMAKE_CURRENT_BINARY_DIR
}
/cmake_uninstall.cmake
)
endif
()
endif
()
if
(
PYBIND11_TEST
OR
(
BUILD_TESTING AND PYBIND11_MASTER_PROJECT
))
add_subdirectory
(
tests
)
endif
()
tests/CMakeLists.txt
View file @
df115977
...
...
@@ -7,8 +7,9 @@
cmake_minimum_required
(
VERSION 3.7
)
# VERSION 3.7...3.18, but some versions of VS have a patched CMake 3.11
# that do not work properly with this syntax, so using the following workaround:
# The `cmake_minimum_required(VERSION 3.7...3.18)` syntax does not work with
# some versions of VS that have a patched CMake 3.11. This forces us to emulate
# the behavior using the following workaround:
if
(
${
CMAKE_VERSION
}
VERSION_LESS 3.18
)
cmake_policy
(
VERSION
${
CMAKE_MAJOR_VERSION
}
.
${
CMAKE_MINOR_VERSION
}
)
else
()
...
...
@@ -18,6 +19,9 @@ endif()
# There's no harm in including a project in a project
project
(
pybind11_tests CXX
)
# Access FindCatch and more
list
(
APPEND CMAKE_MODULE_PATH
"
${
CMAKE_CURRENT_LIST_DIR
}
/../tools"
)
option
(
PYBIND11_WERROR
"Report all warnings as errors"
OFF
)
option
(
DOWNLOAD_EIGEN
"Download EIGEN (requires CMake 3.11+)"
OFF
)
set
(
PYBIND11_TEST_OVERRIDE
...
...
@@ -89,12 +93,8 @@ endif()
# Skip test_async for Python < 3.5
list
(
FIND PYBIND11_TEST_FILES test_async.cpp PYBIND11_TEST_FILES_ASYNC_I
)
if
((
PYBIND11_TEST_FILES_ASYNC_I GREATER -1
)
AND
(
"
${
PYTHON_VERSION_MAJOR
}
.
${
PYTHON_VERSION_MINOR
}
"
VERSION_LESS 3.5
))
message
(
STATUS
"Skipping test_async because Python version
${
PYTHON_VERSION_MAJOR
}
.
${
PYTHON_VERSION_MINOR
}
< 3.5"
)
if
((
PYBIND11_TEST_FILES_ASYNC_I GREATER -1
)
AND
(
PYTHON_VERSION VERSION_LESS 3.5
))
message
(
STATUS
"Skipping test_async because Python version
${
PYTHON_VERSION
}
< 3.5"
)
list
(
REMOVE_AT PYBIND11_TEST_FILES
${
PYBIND11_TEST_FILES_ASYNC_I
}
)
endif
()
...
...
tests/test_cmake_build/CMakeLists.txt
View file @
df115977
...
...
@@ -8,7 +8,7 @@ function(pybind11_add_build_test name)
"-DCMAKE_CXX_COMPILER=
${
CMAKE_CXX_COMPILER
}
"
"-DPYTHON_EXECUTABLE:FILEPATH=
${
PYTHON_EXECUTABLE
}
"
)
if
(
CMAKE_CXX_STANDARD
)
if
(
DEFINED
CMAKE_CXX_STANDARD
)
list
(
APPEND build_options
"-DCMAKE_CXX_STANDARD=
${
CMAKE_CXX_STANDARD
}
"
)
endif
()
...
...
tests/test_cmake_build/installed_embed/CMakeLists.txt
View file @
df115977
cmake_minimum_required
(
VERSION 3.7
)
# The `cmake_minimum_required(VERSION 3.7...3.18)` syntax does not work with
# some versions of VS that have a patched CMake 3.11. This forces us to emulate
# the behavior using the following workaround:
if
(
${
CMAKE_VERSION
}
VERSION_LESS 3.18
)
cmake_policy
(
VERSION
${
CMAKE_MAJOR_VERSION
}
.
${
CMAKE_MINOR_VERSION
}
)
else
()
cmake_policy
(
VERSION 3.18
)
endif
()
project
(
test_installed_embed CXX
)
set
(
CMAKE_MODULE_PATH
""
)
...
...
tests/test_cmake_build/installed_function/CMakeLists.txt
View file @
df115977
cmake_minimum_required
(
VERSION 3.7
)
# The `cmake_minimum_required(VERSION 3.7...3.18)` syntax does not work with
# some versions of VS that have a patched CMake 3.11. This forces us to emulate
# the behavior using the following workaround:
if
(
${
CMAKE_VERSION
}
VERSION_LESS 3.18
)
cmake_policy
(
VERSION
${
CMAKE_MAJOR_VERSION
}
.
${
CMAKE_MINOR_VERSION
}
)
else
()
cmake_policy
(
VERSION 3.18
)
endif
()
project
(
test_installed_module CXX
)
set
(
CMAKE_MODULE_PATH
""
)
find_package
(
pybind11 CONFIG REQUIRED
)
message
(
STATUS
"Found pybind11 v
${
pybind11_VERSION
}
:
${
pybind11_INCLUDE_DIRS
}
"
)
message
(
STATUS
"Found pybind11 v
${
pybind11_VERSION
}
${
pybind11_VERSION_TYPE
}
:
${
pybind11_INCLUDE_DIRS
}
"
)
pybind11_add_module
(
test_cmake_build SHARED NO_EXTRAS ../main.cpp
)
...
...
tests/test_cmake_build/installed_target/CMakeLists.txt
View file @
df115977
cmake_minimum_required
(
VERSION 3.7
)
# The `cmake_minimum_required(VERSION 3.7...3.18)` syntax does not work with
# some versions of VS that have a patched CMake 3.11. This forces us to emulate
# the behavior using the following workaround:
if
(
${
CMAKE_VERSION
}
VERSION_LESS 3.18
)
cmake_policy
(
VERSION
${
CMAKE_MAJOR_VERSION
}
.
${
CMAKE_MINOR_VERSION
}
)
else
()
cmake_policy
(
VERSION 3.18
)
endif
()
project
(
test_installed_target CXX
)
set
(
CMAKE_MODULE_PATH
""
)
...
...
tests/test_cmake_build/subdirectory_embed/CMakeLists.txt
View file @
df115977
cmake_minimum_required
(
VERSION 3.7
)
# The `cmake_minimum_required(VERSION 3.7...3.18)` syntax does not work with
# some versions of VS that have a patched CMake 3.11. This forces us to emulate
# the behavior using the following workaround:
if
(
${
CMAKE_VERSION
}
VERSION_LESS 3.18
)
cmake_policy
(
VERSION
${
CMAKE_MAJOR_VERSION
}
.
${
CMAKE_MINOR_VERSION
}
)
else
()
cmake_policy
(
VERSION 3.18
)
endif
()
project
(
test_subdirectory_embed CXX
)
set
(
PYBIND11_INSTALL
...
...
tests/test_cmake_build/subdirectory_function/CMakeLists.txt
View file @
df115977
cmake_minimum_required
(
VERSION 3.7
)
# The `cmake_minimum_required(VERSION 3.7...3.18)` syntax does not work with
# some versions of VS that have a patched CMake 3.11. This forces us to emulate
# the behavior using the following workaround:
if
(
${
CMAKE_VERSION
}
VERSION_LESS 3.18
)
cmake_policy
(
VERSION
${
CMAKE_MAJOR_VERSION
}
.
${
CMAKE_MINOR_VERSION
}
)
else
()
cmake_policy
(
VERSION 3.18
)
endif
()
project
(
test_subdirectory_module CXX
)
add_subdirectory
(
${
PYBIND11_PROJECT_DIR
}
pybind11
)
...
...
tests/test_cmake_build/subdirectory_target/CMakeLists.txt
View file @
df115977
cmake_minimum_required
(
VERSION 3.7
)
# The `cmake_minimum_required(VERSION 3.7...3.18)` syntax does not work with
# some versions of VS that have a patched CMake 3.11. This forces us to emulate
# the behavior using the following workaround:
if
(
${
CMAKE_VERSION
}
VERSION_LESS 3.18
)
cmake_policy
(
VERSION
${
CMAKE_MAJOR_VERSION
}
.
${
CMAKE_MINOR_VERSION
}
)
else
()
cmake_policy
(
VERSION 3.18
)
endif
()
project
(
test_subdirectory_target CXX
)
add_subdirectory
(
${
PYBIND11_PROJECT_DIR
}
pybind11
)
...
...
tools/FindPythonLibsNew.cmake
View file @
df115977
...
...
@@ -140,6 +140,7 @@ string(REGEX REPLACE "\\." ";" _PYTHON_VERSION_LIST ${_PYTHON_VERSION_LIST})
list
(
GET _PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR
)
list
(
GET _PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR
)
list
(
GET _PYTHON_VERSION_LIST 2 PYTHON_VERSION_PATCH
)
set
(
PYTHON_VERSION
"
${
PYTHON_VERSION_MAJOR
}
.
${
PYTHON_VERSION_MINOR
}
.
${
PYTHON_VERSION_PATCH
}
"
)
# Make sure all directory separators are '/'
string
(
REGEX REPLACE
"
\\\\
"
"/"
PYTHON_PREFIX
"
${
PYTHON_PREFIX
}
"
)
...
...
tools/pybind11Config.cmake.in
View file @
df115977
# pybind11Config.cmake
# --------------------
#
# PYBIND11 cmake module.
# This module sets the following variables in your project::
#
# pybind11_FOUND - true if pybind11 and all required components found on the system
# pybind11_VERSION - pybind11 version in format Major.Minor.Release
# pybind11_INCLUDE_DIRS - Directories where pybind11 and python headers are located.
# pybind11_INCLUDE_DIR - Directory where pybind11 headers are located.
# pybind11_DEFINITIONS - Definitions necessary to use pybind11, namely USING_pybind11.
# pybind11_LIBRARIES - compile flags and python libraries (as needed) to link against.
# pybind11_LIBRARY - empty.
# CMAKE_MODULE_PATH - appends location of accompanying FindPythonLibsNew.cmake and
# pybind11Tools.cmake modules.
#
#
# Available components: None
#
#
# Exported targets::
#
# If pybind11 is found, this module defines the following :prop_tgt:`IMPORTED`
# interface library targets::
#
# pybind11::module - for extension modules
# pybind11::embed - for embedding the Python interpreter
#
# Python headers, libraries (as needed by platform), and the C++ standard
# are attached to the target. Set PythonLibsNew variables to influence
# python detection and CMAKE_CXX_STANDARD (11 or 14) to influence standard
# setting. ::
#
# find_package(pybind11 CONFIG REQUIRED)
# message(STATUS "Found pybind11 v${pybind11_VERSION}: ${pybind11_INCLUDE_DIRS}")
#
# # Create an extension module
# add_library(mylib MODULE main.cpp)
# target_link_libraries(mylib pybind11::module)
#
# # Or embed the Python interpreter into an executable
# add_executable(myexe main.cpp)
# target_link_libraries(myexe pybind11::embed)
#
# Suggested usage::
#
# find_package with version info is not recommended except for release versions. ::
#
# find_package(pybind11 CONFIG)
# find_package(pybind11 2.0 EXACT CONFIG REQUIRED)
#
#
# The following variables can be set to guide the search for this package::
#
# pybind11_DIR - CMake variable, set to directory containing this Config file
# CMAKE_PREFIX_PATH - CMake variable, set to root directory of this package
# PATH - environment variable, set to bin directory of this package
# CMAKE_DISABLE_FIND_PACKAGE_pybind11 - CMake variable, disables
# find_package(pybind11) when not REQUIRED, perhaps to force internal build
#[=============================================================================[.rst
pybind11Config.cmake
--------------------
PYBIND11 cmake module.
This module sets the following variables in your project::
pybind11_FOUND - true if pybind11 and all required components found on the system
pybind11_VERSION - pybind11 version in format Major.Minor.Release
pybind11_INCLUDE_DIRS - Directories where pybind11 and python headers are located.
pybind11_INCLUDE_DIR - Directory where pybind11 headers are located.
pybind11_DEFINITIONS - Definitions necessary to use pybind11, namely USING_pybind11.
pybind11_LIBRARIES - compile flags and python libraries (as needed) to link against.
pybind11_LIBRARY - empty.
Available components: None
Exported targets::
If pybind11 is found, this module defines the following :prop_tgt:`IMPORTED`
interface library targets::
pybind11::module - for extension modules
pybind11::embed - for embedding the Python interpreter
Python headers, libraries (as needed by platform), and the C++ standard
are attached to the target.
Classic mode::
Set PythonLibsNew variables to influence python detection and
CMAKE_CXX_STANDARD to influence standard setting. ::
find_package(pybind11 CONFIG REQUIRED)
message(STATUS "Found pybind11 v${pybind11_VERSION} ${pybind11_VERSION_TYPE}: ${pybind11_INCLUDE_DIRS}")
# Create an extension module
add_library(mylib MODULE main.cpp)
target_link_libraries(mylib pybind11::module)
# Or embed the Python interpreter into an executable
add_executable(myexe main.cpp)
target_link_libraries(myexe pybind11::embed)
Suggested usage::
find_package with version info is not recommended except for release versions. ::
find_package(pybind11 CONFIG)
find_package(pybind11 2.0 EXACT CONFIG REQUIRED)
The following variables can be set to guide the search for this package::
pybind11_DIR - CMake variable, set to directory containing this Config file
CMAKE_PREFIX_PATH - CMake variable, set to root directory of this package
PATH - environment variable, set to bin directory of this package
CMAKE_DISABLE_FIND_PACKAGE_pybind11 - CMake variable, disables
find_package(pybind11) when not REQUIRED, perhaps to force internal build
#]=============================================================================]
@PACKAGE_INIT@
...
...
@@ -65,32 +68,35 @@ set(pybind11_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@")
set(pybind11_LIBRARY "")
set(pybind11_DEFINITIONS USING_pybind11)
set(pybind11_VERSION_TYPE "@pybind11_VERSION_TYPE@")
check_required_components(pybind11)
# Make the FindPythonLibsNew.cmake module available
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
include(
pybind11Tools
)
include(
"${CMAKE_CURRENT_LIST_DIR}/pybind11Tools.cmake"
)
#-----------------------------------------------------------------------------
# Don't include targets if this file is being picked up by another
# project which has already built this as a subproject
#-----------------------------------------------------------------------------
if(NOT TARGET pybind11::pybind11)
include("${CMAKE_CURRENT_LIST_DIR}/pybind11Targets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/pybind11Targets.cmake")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
find_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} MODULE REQUIRED)
list(REMOVE_AT CMAKE_MODULE_PATH -1)
find_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} MODULE REQUIRED)
set_property(TARGET pybind11::pybind11 APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PYTHON_INCLUDE_DIRS})
set_property(TARGET pybind11::pybind11 APPEND PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${PYTHON_INCLUDE_DIRS})
set_property(TARGET pybind11::pybind11 APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PYTHON_INCLUDE_DIRS})
set_property(TARGET pybind11::pybind11 APPEND PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${PYTHON_INCLUDE_DIRS})
set_property(TARGET pybind11::embed APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${PYTHON_LIBRARIES})
set_property(TARGET pybind11::module APPEND PROPERTY INTERFACE_LINK_LIBRARIES
"$<$<OR:$<PLATFORM_ID:Windows>,$<PLATFORM_ID:Cygwin>>:$<BUILD_INTERFACE:${PYTHON_LIBRARIES}>>")
set_property(TARGET pybind11::embed APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${PYTHON_LIBRARIES})
set_property(TARGET pybind11::module APPEND PROPERTY INTERFACE_LINK_LIBRARIES
"$<$<OR:$<PLATFORM_ID:Windows>,$<PLATFORM_ID:Cygwin>>:$<BUILD_INTERFACE:${PYTHON_LIBRARIES}>>")
get_property(_iid TARGET pybind11::pybind11 PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
get_property(_ill TARGET pybind11::module PROPERTY INTERFACE_LINK_LIBRARIES)
set(pybind11_INCLUDE_DIRS ${_iid})
set(pybind11_LIBRARIES ${_ico} ${_ill})
get_property(_iid TARGET pybind11::pybind11 PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
get_property(_ill TARGET pybind11::module PROPERTY INTERFACE_LINK_LIBRARIES)
set(pybind11_INCLUDE_DIRS ${_iid})
set(pybind11_LIBRARIES ${_ico} ${_ill})
include("${CMAKE_CURRENT_LIST_DIR}/pybind11Tools.cmake")
endif()
tools/pybind11Tools.cmake
View file @
df115977
...
...
@@ -5,16 +5,6 @@
# All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
cmake_minimum_required
(
VERSION 3.7
)
# VERSION 3.7...3.18, but some versions of VS have a patched CMake 3.11
# that do not work properly with this syntax, so using the following workaround:
if
(
${
CMAKE_VERSION
}
VERSION_LESS 3.18
)
cmake_policy
(
VERSION
${
CMAKE_MAJOR_VERSION
}
.
${
CMAKE_MINOR_VERSION
}
)
else
()
cmake_policy
(
VERSION 3.18
)
endif
()
# Add a CMake parameter for choosing a desired Python version
if
(
NOT PYBIND11_PYTHON_VERSION
)
set
(
PYBIND11_PYTHON_VERSION
...
...
@@ -26,10 +16,12 @@ endif()
set
(
Python_ADDITIONAL_VERSIONS
"3.9;3.8;3.7;3.6;3.5;3.4"
CACHE INTERNAL
""
)
find_package
(
PythonLibsNew
${
PYBIND11_PYTHON_VERSION
}
REQUIRED
)
list
(
APPEND CMAKE_MODULE_PATH
"
${
CMAKE_CURRENT_LIST_DIR
}
"
)
find_package
(
PythonLibsNew
${
PYBIND11_PYTHON_VERSION
}
MODULE REQUIRED
)
list
(
REMOVE_AT CMAKE_MODULE_PATH -1
)
include
(
CheckCXXCompilerFlag
)
include
(
CMakeParseArguments
)
# Warn or error if old variable name used
if
(
PYBIND11_CPP_STANDARD
)
...
...
@@ -131,7 +123,7 @@ endfunction()
#
function
(
pybind11_add_module target_name
)
set
(
options MODULE SHARED EXCLUDE_FROM_ALL NO_EXTRAS SYSTEM THIN_LTO
)
cmake_parse_arguments
(
ARG
"
${
options
}
"
""
""
${
ARGN
}
)
cmake_parse_arguments
(
PARSE_ARGV 2 ARG
"
${
options
}
"
""
""
)
if
(
ARG_MODULE AND ARG_SHARED
)
message
(
FATAL_ERROR
"Can't be both MODULE and SHARED"
)
...
...
@@ -185,9 +177,14 @@ function(pybind11_add_module target_name)
_pybind11_add_lto_flags
(
${
target_name
}
${
ARG_THIN_LTO
}
)
else
()
include
(
CheckIPOSupported
)
check_ipo_supported
(
RESULT supported OUTPUT error
)
check_ipo_supported
(
RESULT supported
OUTPUT error
LANGUAGES CXX
)
if
(
supported
)
set_property
(
TARGET
${
target_name
}
PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE
)
else
()
message
(
WARNING
"IPO is not supported:
${
output
}
"
)
endif
()
endif
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment