Skip to content

Commit b8bb48b

Browse files
author
Justin Muncaster
committed
Adjust dependency finding so lib works better as submodule
- Check for xtensor and xtl targets, similar to how xtensor-python does it. - Adjust path to FindFFTW.cmake so that it uses CMAKE_CURRENT_SOURCE_DIR instead of CMAKE_SOURCE_DIR
1 parent 7abed21 commit b8bb48b

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

CMakeLists.txt

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ message(STATUS "Building xtensor-fftw v${${PROJECT_NAME}_VERSION}")
3131

3232
#--------------------------------------- cmake modules
3333

34-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
35-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/findFFTW/")
34+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
35+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/findFFTW/")
3636

3737
#--------------------------------------- user options
3838
set(FFTW_ROOT "" CACHE STRING "The FFTW prefix, i.e. the base directory under which FFTW is installed (see README.md).")
@@ -67,15 +67,33 @@ include_directories(${XTENSOR_FFTW_INCLUDE_DIR})
6767

6868
# .. xtensor
6969
set(xtensor_REQUIRED_VERSION 0.20.9)
70-
find_package(xtensor ${xtensor_REQUIRED_VERSION} REQUIRED)
71-
message(STATUS "Found xtensor: ${xtensor_INCLUDE_DIRS}/xtensor")
72-
include_directories(${xtensor_INCLUDE_DIRS})
70+
if(TARGET xtensor)
71+
set(xtensor_VERSION ${XTENSOR_VERSION_MAJOR}.${XTENSOR_VERSION_MINOR}.${XTENSOR_VERSION_PATCH})
72+
# Note: This is not SEMVER compatible comparison
73+
if( NOT ${xtensor_VERSION} VERSION_GREATER_EQUAL ${xtensor_REQUIRED_VERSION})
74+
message(ERROR "Mismatch xtensor versions. Found '${xtensor_VERSION}' but requires: '${xtensor_REQUIRED_VERSION}'")
75+
else()
76+
message(STATUS "Found xtensor v${xtensor_VERSION}")
77+
endif()
78+
else()
79+
find_package(xtensor ${xtensor_REQUIRED_VERSION} REQUIRED)
80+
message(STATUS "Found xtensor: ${xtensor_INCLUDE_DIRS}/xtensor")
81+
endif()
7382

7483
# .. xtl
7584
set(xtl_REQUIRED_VERSION 0.6.9)
76-
find_package(xtl ${xtl_REQUIRED_VERSION} REQUIRED)
77-
message(STATUS "Found xtl: ${xtl_INCLUDE_DIRS}/xtl")
78-
include_directories(${xtl_INCLUDE_DIRS})
85+
if(TARGET xtl)
86+
set(xtl_VERSION ${XTL_VERSION_MAJOR}.${XTL_VERSION_MINOR}.${XTL_VERSION_PATCH})
87+
# Note: This is not SEMVER compatible comparison
88+
if( NOT ${xtl_VERSION} VERSION_GREATER_EQUAL ${xtl_REQUIRED_VERSION})
89+
message(ERROR "Mismatch xtl versions. Found '${xtl_VERSION}' but requires: '${xtl_REQUIRED_VERSION}'")
90+
else()
91+
message(STATUS "Found xtl v${xtl_VERSION}")
92+
endif()
93+
else()
94+
find_package(xtl ${xtl_REQUIRED_VERSION} REQUIRED)
95+
message(STATUS "Found xtl: ${xtl_INCLUDE_DIRS}/xtl")
96+
endif()
7997

8098
# .. fftw
8199
if(MSVC)

0 commit comments

Comments
 (0)