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)

1111

project(xtensor-python)

12121313

set(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()

2727

endforeach()

28-

set(${PROJECT_NAME}_VERSION

28+

set(${PROJECT_NAME}_VERSION

2929

${XTENSOR_PYTHON_VERSION_MAJOR}.${XTENSOR_PYTHON_VERSION_MINOR}.${XTENSOR_PYTHON_VERSION_PATCH})

3030

message(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)

3636

if(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")

4747

endif()

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)

50555156

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)

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")

6863

endif()

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

85818682

add_library(xtensor-python INTERFACE)

8783

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}>"

8985

$<INSTALL_INTERFACE:include>)

9086

target_link_libraries(xtensor-python INTERFACE xtensor)

9187

get_target_property(inc_dir xtensor-python INTERFACE_INCLUDE_DIRECTORIES)

@@ -124,12 +120,6 @@ export(EXPORT ${PROJECT_NAME}-targets

124120

install(FILES ${XTENSOR_PYTHON_HEADERS}

125121

DESTINATION ${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-133123

set(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

152142

install(EXPORT ${PROJECT_NAME}-targets

153143

FILE ${PROJECT_NAME}Targets.cmake

154144

DESTINATION ${XTENSOR_PYTHON_CMAKECONFIG_INSTALL_DIR})

155-