diff --git a/CMakeLists.txt b/CMakeLists.txt index 4350f352a5..1a113fc6a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,17 @@ include(ExternalDependenciesVersions) include(LoadFetchContent) include(AddCustomTargetSubproject) +# Bring ValeevGroup cmake toolkit ============================================== +include(FetchVGCMakeKit) + +# Detect libc++ linker mismatch (e.g. Homebrew LLVM headers vs system libc++) +include(CheckCXXFeatures) +if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + vgkit_check_libcxx_linker_mismatch(MODIFY_GLOBAL_FLAGS) +else() + vgkit_check_libcxx_linker_mismatch() +endif() + # augment GNUInstallDirs's dirs with CMAKEDIR set(CMAKE_INSTALL_CMAKEDIR "lib/cmake/ttg" CACHE PATH "TTG CMAKE install directory") diff --git a/cmake/modules/ExternalDependenciesVersions.cmake b/cmake/modules/ExternalDependenciesVersions.cmake index c75edda41b..bf1a492d48 100644 --- a/cmake/modules/ExternalDependenciesVersions.cmake +++ b/cmake/modules/ExternalDependenciesVersions.cmake @@ -2,7 +2,7 @@ # for each dependency track both current and previous id (the variable for the latter must contain PREVIOUS) # to be able to auto-update them -set(TTG_TRACKED_VG_CMAKE_KIT_TAG 94db3e9755ac55dbdb80f5a4cc7df1d3a29151b5) # provides FindOrFetchLinalgPP and "real" FindOrFetchBoost +set(TTG_TRACKED_VG_CMAKE_KIT_TAG 256d9462bb765787f5acb69be154b26d6efba8b6) # provides FindOrFetchLinalgPP and "real" FindOrFetchBoost set(TTG_TRACKED_CATCH2_VERSION 3.5.0) set(TTG_TRACKED_MADNESS_TAG a50e8d440fc2a1718a1ba0140af6866f49813d14) set(TTG_TRACKED_PARSEC_TAG parsec-for-ttg) diff --git a/cmake/modules/FetchVGCMakeKit.cmake b/cmake/modules/FetchVGCMakeKit.cmake new file mode 100644 index 0000000000..1059854da9 --- /dev/null +++ b/cmake/modules/FetchVGCMakeKit.cmake @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Bring ValeevGroup cmake toolkit, if not yet available +if (NOT DEFINED vg_cmake_kit_SOURCE_DIR) + include(FetchContent) + if (DEFINED PROJECT_BINARY_DIR) + set(VG_CMAKE_KIT_PREFIX_DIR PROJECT_BINARY_DIR) + else () + set(VG_CMAKE_KIT_PREFIX_DIR CMAKE_CURRENT_BINARY_DIR) + endif() + FetchContent_Declare( + vg_cmake_kit + QUIET + GIT_REPOSITORY https://github.com/ValeevGroup/kit-cmake.git + GIT_TAG ${TTG_TRACKED_VG_CMAKE_KIT_TAG} + SOURCE_DIR ${${VG_CMAKE_KIT_PREFIX_DIR}}/cmake/vg + BINARY_DIR ${${VG_CMAKE_KIT_PREFIX_DIR}}/cmake/vg-build + SUBBUILD_DIR ${${VG_CMAKE_KIT_PREFIX_DIR}}/cmake/vg-subbuild + ) + FetchContent_MakeAvailable(vg_cmake_kit) + list(APPEND CMAKE_MODULE_PATH "${vg_cmake_kit_SOURCE_DIR}/modules") +endif() \ No newline at end of file diff --git a/cmake/modules/FindOrFetchBoost.cmake b/cmake/modules/FindOrFetchBoost.cmake index 594cbf21ee..f2de7ecb3a 100644 --- a/cmake/modules/FindOrFetchBoost.cmake +++ b/cmake/modules/FindOrFetchBoost.cmake @@ -66,24 +66,7 @@ else() endif() # Bring ValeevGroup cmake toolkit, if not yet available -if (NOT DEFINED vg_cmake_kit_SOURCE_DIR) - include(FetchContent) - if (DEFINED PROJECT_BINARY_DIR) - set(VG_CMAKE_KIT_PREFIX_DIR PROJECT_BINARY_DIR) - else () - set(VG_CMAKE_KIT_PREFIX_DIR CMAKE_CURRENT_BINARY_DIR) - endif() - FetchContent_Declare( - vg_cmake_kit - QUIET - GIT_REPOSITORY https://github.com/ValeevGroup/kit-cmake.git - GIT_TAG ${TTG_TRACKED_VG_CMAKE_KIT_TAG} - SOURCE_DIR ${${VG_CMAKE_KIT_PREFIX_DIR}}/cmake/vg - BINARY_DIR ${${VG_CMAKE_KIT_PREFIX_DIR}}/cmake/vg-build - SUBBUILD_DIR ${${VG_CMAKE_KIT_PREFIX_DIR}}/cmake/vg-subbuild - ) - FetchContent_MakeAvailable(vg_cmake_kit) -endif() +include(FetchVGCMakeKit) include(${vg_cmake_kit_SOURCE_DIR}/modules/FindOrFetchBoost.cmake) if (Boost_BUILT_FROM_SOURCE) set(TTG_BUILT_BOOST_FROM_SOURCE 1)