111986Sandreas.sandberg@arm.com# pybind11Config.cmake 211986Sandreas.sandberg@arm.com# -------------------- 311986Sandreas.sandberg@arm.com# 411986Sandreas.sandberg@arm.com# PYBIND11 cmake module. 511986Sandreas.sandberg@arm.com# This module sets the following variables in your project:: 611986Sandreas.sandberg@arm.com# 711986Sandreas.sandberg@arm.com# pybind11_FOUND - true if pybind11 and all required components found on the system 811986Sandreas.sandberg@arm.com# pybind11_VERSION - pybind11 version in format Major.Minor.Release 911986Sandreas.sandberg@arm.com# pybind11_INCLUDE_DIRS - Directories where pybind11 and python headers are located. 1011986Sandreas.sandberg@arm.com# pybind11_INCLUDE_DIR - Directory where pybind11 headers are located. 1111986Sandreas.sandberg@arm.com# pybind11_DEFINITIONS - Definitions necessary to use pybind11, namely USING_pybind11. 1211986Sandreas.sandberg@arm.com# pybind11_LIBRARIES - compile flags and python libraries (as needed) to link against. 1311986Sandreas.sandberg@arm.com# pybind11_LIBRARY - empty. 1411986Sandreas.sandberg@arm.com# CMAKE_MODULE_PATH - appends location of accompanying FindPythonLibsNew.cmake and 1511986Sandreas.sandberg@arm.com# pybind11Tools.cmake modules. 1611986Sandreas.sandberg@arm.com# 1711986Sandreas.sandberg@arm.com# 1811986Sandreas.sandberg@arm.com# Available components: None 1911986Sandreas.sandberg@arm.com# 2011986Sandreas.sandberg@arm.com# 2111986Sandreas.sandberg@arm.com# Exported targets:: 2211986Sandreas.sandberg@arm.com# 2311986Sandreas.sandberg@arm.com# If pybind11 is found, this module defines the following :prop_tgt:`IMPORTED` 2412391Sjason@lowepower.com# interface library targets:: 2512391Sjason@lowepower.com# 2612391Sjason@lowepower.com# pybind11::module - for extension modules 2712391Sjason@lowepower.com# pybind11::embed - for embedding the Python interpreter 2812391Sjason@lowepower.com# 2912391Sjason@lowepower.com# Python headers, libraries (as needed by platform), and the C++ standard 3011986Sandreas.sandberg@arm.com# are attached to the target. Set PythonLibsNew variables to influence 3111986Sandreas.sandberg@arm.com# python detection and PYBIND11_CPP_STANDARD (-std=c++11 or -std=c++14) to 3211986Sandreas.sandberg@arm.com# influence standard setting. :: 3311986Sandreas.sandberg@arm.com# 3412391Sjason@lowepower.com# find_package(pybind11 CONFIG REQUIRED) 3512391Sjason@lowepower.com# message(STATUS "Found pybind11 v${pybind11_VERSION}: ${pybind11_INCLUDE_DIRS}") 3611986Sandreas.sandberg@arm.com# 3712391Sjason@lowepower.com# # Create an extension module 3811986Sandreas.sandberg@arm.com# add_library(mylib MODULE main.cpp) 3912037Sandreas.sandberg@arm.com# target_link_libraries(mylib pybind11::module) 4011986Sandreas.sandberg@arm.com# 4112391Sjason@lowepower.com# # Or embed the Python interpreter into an executable 4212391Sjason@lowepower.com# add_executable(myexe main.cpp) 4312391Sjason@lowepower.com# target_link_libraries(myexe pybind11::embed) 4412391Sjason@lowepower.com# 4511986Sandreas.sandberg@arm.com# Suggested usage:: 4611986Sandreas.sandberg@arm.com# 4711986Sandreas.sandberg@arm.com# find_package with version info is not recommended except for release versions. :: 4811986Sandreas.sandberg@arm.com# 4911986Sandreas.sandberg@arm.com# find_package(pybind11 CONFIG) 5011986Sandreas.sandberg@arm.com# find_package(pybind11 2.0 EXACT CONFIG REQUIRED) 5111986Sandreas.sandberg@arm.com# 5211986Sandreas.sandberg@arm.com# 5311986Sandreas.sandberg@arm.com# The following variables can be set to guide the search for this package:: 5411986Sandreas.sandberg@arm.com# 5511986Sandreas.sandberg@arm.com# pybind11_DIR - CMake variable, set to directory containing this Config file 5611986Sandreas.sandberg@arm.com# CMAKE_PREFIX_PATH - CMake variable, set to root directory of this package 5711986Sandreas.sandberg@arm.com# PATH - environment variable, set to bin directory of this package 5811986Sandreas.sandberg@arm.com# CMAKE_DISABLE_FIND_PACKAGE_pybind11 - CMake variable, disables 5911986Sandreas.sandberg@arm.com# find_package(pybind11) when not REQUIRED, perhaps to force internal build 6011986Sandreas.sandberg@arm.com 6111986Sandreas.sandberg@arm.com@PACKAGE_INIT@ 6211986Sandreas.sandberg@arm.com 6311986Sandreas.sandberg@arm.comset(PN pybind11) 6411986Sandreas.sandberg@arm.com 6511986Sandreas.sandberg@arm.com# location of pybind11/pybind11.h 6611986Sandreas.sandberg@arm.comset(${PN}_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@") 6711986Sandreas.sandberg@arm.com 6811986Sandreas.sandberg@arm.comset(${PN}_LIBRARY "") 6911986Sandreas.sandberg@arm.comset(${PN}_DEFINITIONS USING_${PN}) 7011986Sandreas.sandberg@arm.com 7111986Sandreas.sandberg@arm.comcheck_required_components(${PN}) 7211986Sandreas.sandberg@arm.com 7311986Sandreas.sandberg@arm.com# make detectable the FindPythonLibsNew.cmake module 7411986Sandreas.sandberg@arm.comlist(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) 7511986Sandreas.sandberg@arm.com 7611986Sandreas.sandberg@arm.cominclude(pybind11Tools) 7711986Sandreas.sandberg@arm.com 7811986Sandreas.sandberg@arm.comif(NOT (CMAKE_VERSION VERSION_LESS 3.0)) 7911986Sandreas.sandberg@arm.com#----------------------------------------------------------------------------- 8011986Sandreas.sandberg@arm.com# Don't include targets if this file is being picked up by another 8111986Sandreas.sandberg@arm.com# project which has already built this as a subproject 8211986Sandreas.sandberg@arm.com#----------------------------------------------------------------------------- 8312391Sjason@lowepower.comif(NOT TARGET ${PN}::pybind11) 8411986Sandreas.sandberg@arm.com include("${CMAKE_CURRENT_LIST_DIR}/${PN}Targets.cmake") 8511986Sandreas.sandberg@arm.com 8611986Sandreas.sandberg@arm.com find_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} MODULE REQUIRED) 8712391Sjason@lowepower.com set_property(TARGET ${PN}::pybind11 APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PYTHON_INCLUDE_DIRS}) 8812391Sjason@lowepower.com set_property(TARGET ${PN}::embed APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${PYTHON_LIBRARIES}) 8911986Sandreas.sandberg@arm.com if(WIN32 OR CYGWIN) 9012037Sandreas.sandberg@arm.com set_property(TARGET ${PN}::module APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${PYTHON_LIBRARIES}) 9111986Sandreas.sandberg@arm.com endif() 9211986Sandreas.sandberg@arm.com 9314299Sbbruce@ucdavis.edu if(CMAKE_VERSION VERSION_LESS 3.3) 9414299Sbbruce@ucdavis.edu set_property(TARGET ${PN}::pybind11 APPEND PROPERTY INTERFACE_COMPILE_OPTIONS "${PYBIND11_CPP_STANDARD}") 9514299Sbbruce@ucdavis.edu else() 9614299Sbbruce@ucdavis.edu set_property(TARGET ${PN}::pybind11 APPEND PROPERTY INTERFACE_COMPILE_OPTIONS $<$<COMPILE_LANGUAGE:CXX>:${PYBIND11_CPP_STANDARD}>) 9714299Sbbruce@ucdavis.edu endif() 9811986Sandreas.sandberg@arm.com 9912391Sjason@lowepower.com get_property(_iid TARGET ${PN}::pybind11 PROPERTY INTERFACE_INCLUDE_DIRECTORIES) 10012037Sandreas.sandberg@arm.com get_property(_ill TARGET ${PN}::module PROPERTY INTERFACE_LINK_LIBRARIES) 10111986Sandreas.sandberg@arm.com set(${PN}_INCLUDE_DIRS ${_iid}) 10211986Sandreas.sandberg@arm.com set(${PN}_LIBRARIES ${_ico} ${_ill}) 10311986Sandreas.sandberg@arm.comendif() 10411986Sandreas.sandberg@arm.comendif() 105