77# The full license is in the file LICENSE, distributed with this software. #
88############################################################################
99
10- cmake_minimum_required (VERSION 3.29 )
10+ cmake_minimum_required (VERSION 3.14 )
1111project (xtensor-python)
1212
1313set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} /cmake ${CMAKE_MODULE_PATH} )
@@ -25,14 +25,14 @@ foreach(ver ${xtensor_python_version_defines})
2525 set (XTENSOR_PYTHON_VERSION_${CMAKE_MATCH_1} "${CMAKE_MATCH_2} " CACHE INTERNAL "" )
2626 endif ()
2727endforeach ()
28- set (${PROJECT_NAME} _VERSION
28+ set (${PROJECT_NAME} _VERSION
2929 ${XTENSOR_PYTHON_VERSION_MAJOR} .${XTENSOR_PYTHON_VERSION_MINOR} .${XTENSOR_PYTHON_VERSION_PATCH} )
3030message (STATUS "xtensor-python v${${PROJECT_NAME} _VERSION}" )
3131
3232# Dependencies
3333# ============
3434
35- set (xtensor_REQUIRED_VERSION 0.26 .0)
35+ set (xtensor_REQUIRED_VERSION 0.25 .0)
3636if (TARGET xtensor)
3737 set (xtensor_VERSION ${XTENSOR_VERSION_MAJOR} .${XTENSOR_VERSION_MINOR} .${XTENSOR_VERSION_PATCH} )
3838 # Note: This is not SEMVER compatible comparison
@@ -46,27 +46,23 @@ else()
4646 message (STATUS "Found xtensor: ${xtensor_INCLUDE_DIRS} /xtensor" )
4747endif ()
4848
49- find_package (Python COMPONENTS Interpreter REQUIRED)
49+ # Running find_package(PythonInterp) to retrieve the Python version
50+ # which is not exported by Pybind11's cmake.
51+ # Cf. https://github.com/pybind/pybind11/issues/2268
52+ #find_package(PythonInterp ${PythonLibsNew_FIND_VERSION} REQUIRED)
53+ # the above line uses a deprecated cmake method, use the following instead
54+ find_package (Python COMPONENTS Interpreter Development.Module NumPy REQUIRED)
5055
5156set (pybind11_REQUIRED_VERSION 2.6.1)
52- if (NOT TARGET pybind11::headers)
53- # Defaults to ON for cmake >= 3.18
54- # https://github.com/pybind/pybind11/blob/35ff42b56e9d34d9a944266eb25f2c899dbdfed7/CMakeLists.txt#L96
55- set (PYBIND11_FINDPYTHON OFF )
56- find_package (pybind11 ${pybind11_REQUIRED_VERSION} REQUIRED)
57- message (STATUS "Found pybind11: ${pybind11_INCLUDE_DIRS} /pybind11" )
58- else ()
57+ if (TARGET pybind11 OR TARGET pybind11::headers)
5958 # pybind11 has a variable that indicates its version already, so use that
6059 message (STATUS "Found pybind11 v${pybind11_VERSION} " )
61- endif ()
62-
63- # Look for NumPy headers, except if NUMPY_INCLUDE_DIRS is passed,
64- # which is required under some circumstances (such as wasm, where
65- # there is no real python executable)
66- if (NOT NUMPY_INCLUDE_DIRS)
67- find_package (NumPy REQUIRED)
60+ else ()
61+ find_package (pybind11 ${pybind11_REQUIRED_VERSION} REQUIRED)
62+ message (STATUS "Found pybind11: ${pybind11_INCLUDE_DIRS} /pybind11" )
6863endif ()
69- message (STATUS "Found numpy: ${NUMPY_INCLUDE_DIRS} " )
64+
65+ message (STATUS "Found numpy: ${Python_NumPy_INCLUDE_DIR} " )
7066
7167# Build
7268# =====
@@ -85,7 +81,7 @@ set(XTENSOR_PYTHON_HEADERS
8581
8682add_library (xtensor-python INTERFACE )
8783target_include_directories (xtensor-python INTERFACE
88- "$<BUILD_INTERFACE:${XTENSOR_PYTHON_INCLUDE_DIR} ;${pybind11_INCLUDE_DIRS} ;${NUMPY_INCLUDE_DIRS } >"
84+ "$<BUILD_INTERFACE:${XTENSOR_PYTHON_INCLUDE_DIR} ;${pybind11_INCLUDE_DIRS} ;${Python_NumPy_INCLUDE_DIR } >"
8985 $<INSTALL_INTERFACE:include >)
9086target_link_libraries (xtensor-python INTERFACE xtensor)
9187get_target_property (inc_dir xtensor-python INTERFACE_INCLUDE_DIRECTORIES )
@@ -124,12 +120,6 @@ export(EXPORT ${PROJECT_NAME}-targets
124120install (FILES ${XTENSOR_PYTHON_HEADERS}
125121 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /xtensor-python)
126122
127- configure_file (${PROJECT_NAME} .pc.in
128- "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} .pc"
129- @ONLY)
130- install (FILES "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} .pc"
131- DESTINATION "${CMAKE_INSTALL_DATADIR} /pkgconfig/" )
132-
133123set (XTENSOR_PYTHON_CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} " CACHE
134124 STRING "install path for xtensor-pythonConfig.cmake" )
135125
@@ -152,4 +142,3 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
152142install (EXPORT ${PROJECT_NAME} -targets
153143 FILE ${PROJECT_NAME} Targets.cmake
154144 DESTINATION ${XTENSOR_PYTHON_CMAKECONFIG_INSTALL_DIR} )
155-
0 commit comments