7
7
# The full license is in the file LICENSE, distributed with this software. #
8
8
############################################################################
9
9
10
- cmake_minimum_required (VERSION 3.29 )
10
+ cmake_minimum_required (VERSION 3.14 )
11
11
project (xtensor-python)
12
12
13
13
set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} /cmake ${CMAKE_MODULE_PATH} )
@@ -25,14 +25,14 @@ foreach(ver ${xtensor_python_version_defines})
25
25
set (XTENSOR_PYTHON_VERSION_${CMAKE_MATCH_1} "${CMAKE_MATCH_2} " CACHE INTERNAL "" )
26
26
endif ()
27
27
endforeach ()
28
- set (${PROJECT_NAME} _VERSION
28
+ set (${PROJECT_NAME} _VERSION
29
29
${XTENSOR_PYTHON_VERSION_MAJOR} .${XTENSOR_PYTHON_VERSION_MINOR} .${XTENSOR_PYTHON_VERSION_PATCH} )
30
30
message (STATUS "xtensor-python v${${PROJECT_NAME} _VERSION}" )
31
31
32
32
# Dependencies
33
33
# ============
34
34
35
- set (xtensor_REQUIRED_VERSION 0.26 .0)
35
+ set (xtensor_REQUIRED_VERSION 0.25 .0)
36
36
if (TARGET xtensor)
37
37
set (xtensor_VERSION ${XTENSOR_VERSION_MAJOR} .${XTENSOR_VERSION_MINOR} .${XTENSOR_VERSION_PATCH} )
38
38
# Note: This is not SEMVER compatible comparison
@@ -46,27 +46,23 @@ else()
46
46
message (STATUS "Found xtensor: ${xtensor_INCLUDE_DIRS} /xtensor" )
47
47
endif ()
48
48
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)
50
55
51
56
set (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)
59
58
# pybind11 has a variable that indicates its version already, so use that
60
59
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" )
68
63
endif ()
69
- message (STATUS "Found numpy: ${NUMPY_INCLUDE_DIRS} " )
64
+
65
+ message (STATUS "Found numpy: ${Python_NumPy_INCLUDE_DIR} " )
70
66
71
67
# Build
72
68
# =====
@@ -85,7 +81,7 @@ set(XTENSOR_PYTHON_HEADERS
85
81
86
82
add_library (xtensor-python INTERFACE )
87
83
target_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 } >"
89
85
$<INSTALL_INTERFACE:include >)
90
86
target_link_libraries (xtensor-python INTERFACE xtensor)
91
87
get_target_property (inc_dir xtensor-python INTERFACE_INCLUDE_DIRECTORIES )
@@ -124,12 +120,6 @@ export(EXPORT ${PROJECT_NAME}-targets
124
120
install (FILES ${XTENSOR_PYTHON_HEADERS}
125
121
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /xtensor-python)
126
122
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
-
133
123
set (XTENSOR_PYTHON_CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} " CACHE
134
124
STRING "install path for xtensor-pythonConfig.cmake" )
135
125
@@ -152,4 +142,3 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
152
142
install (EXPORT ${PROJECT_NAME} -targets
153
143
FILE ${PROJECT_NAME} Targets.cmake
154
144
DESTINATION ${XTENSOR_PYTHON_CMAKECONFIG_INSTALL_DIR} )
155
-
0 commit comments