fix CMakeLists.txt · xtensor-stack/xtensor-python@43197be
@@ -7,7 +7,7 @@
77# The full license is in the file LICENSE, distributed with this software. #
88############################################################################
9910-cmake_minimum_required(VERSION 3.29)
10+cmake_minimum_required(VERSION 3.14)
1111project(xtensor-python)
12121313set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
@@ -25,14 +25,14 @@ foreach(ver ${xtensor_python_version_defines})
2525set(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}")
31313232# Dependencies
3333# ============
343435-set(xtensor_REQUIRED_VERSION 0.26.0)
35+set(xtensor_REQUIRED_VERSION 0.25.0)
3636if(TARGET xtensor)
3737set(xtensor_VERSION ${XTENSOR_VERSION_MAJOR}.${XTENSOR_VERSION_MINOR}.${XTENSOR_VERSION_PATCH})
3838# Note: This is not SEMVER compatible comparison
@@ -46,27 +46,23 @@ else()
4646message(STATUS "Found xtensor: ${xtensor_INCLUDE_DIRS}/xtensor")
4747endif()
484849-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)
50555156set(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
6059message(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}")
70667167# Build
7268# =====
@@ -85,7 +81,7 @@ set(XTENSOR_PYTHON_HEADERS
85818682add_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}
125121DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/xtensor-python)
126122127-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
134124STRING "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
153143FILE ${PROJECT_NAME}Targets.cmake
154144DESTINATION ${XTENSOR_PYTHON_CMAKECONFIG_INSTALL_DIR})
155-