Skip to content

Commit d07e51e

Browse files
authored
Merge pull request TESSEorg#335 from TESSEorg/evaleev/feature/llvm-libc++-linker-flags
[cmake] autodetect if need additional linker flags to link against libc++
2 parents 67cfe27 + 9c881f8 commit d07e51e

4 files changed

Lines changed: 34 additions & 19 deletions

File tree

CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,17 @@ include(ExternalDependenciesVersions)
4646
include(LoadFetchContent)
4747
include(AddCustomTargetSubproject)
4848

49+
# Bring ValeevGroup cmake toolkit ==============================================
50+
include(FetchVGCMakeKit)
51+
52+
# Detect libc++ linker mismatch (e.g. Homebrew LLVM headers vs system libc++)
53+
include(CheckCXXFeatures)
54+
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
55+
vgkit_check_libcxx_linker_mismatch(MODIFY_GLOBAL_FLAGS)
56+
else()
57+
vgkit_check_libcxx_linker_mismatch()
58+
endif()
59+
4960
# augment GNUInstallDirs's dirs with CMAKEDIR
5061
set(CMAKE_INSTALL_CMAKEDIR "lib/cmake/ttg"
5162
CACHE PATH "TTG CMAKE install directory")

cmake/modules/ExternalDependenciesVersions.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# for each dependency track both current and previous id (the variable for the latter must contain PREVIOUS)
33
# to be able to auto-update them
44

5-
set(TTG_TRACKED_VG_CMAKE_KIT_TAG 94db3e9755ac55dbdb80f5a4cc7df1d3a29151b5) # provides FindOrFetchLinalgPP and "real" FindOrFetchBoost
5+
set(TTG_TRACKED_VG_CMAKE_KIT_TAG 256d9462bb765787f5acb69be154b26d6efba8b6) # provides FindOrFetchLinalgPP and "real" FindOrFetchBoost
66
set(TTG_TRACKED_CATCH2_VERSION 3.5.0)
77
set(TTG_TRACKED_MADNESS_TAG a50e8d440fc2a1718a1ba0140af6866f49813d14)
88
set(TTG_TRACKED_PARSEC_TAG parsec-for-ttg)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# SPDX-License-Identifier: BSD-3-Clause
2+
# Bring ValeevGroup cmake toolkit, if not yet available
3+
if (NOT DEFINED vg_cmake_kit_SOURCE_DIR)
4+
include(FetchContent)
5+
if (DEFINED PROJECT_BINARY_DIR)
6+
set(VG_CMAKE_KIT_PREFIX_DIR PROJECT_BINARY_DIR)
7+
else ()
8+
set(VG_CMAKE_KIT_PREFIX_DIR CMAKE_CURRENT_BINARY_DIR)
9+
endif()
10+
FetchContent_Declare(
11+
vg_cmake_kit
12+
QUIET
13+
GIT_REPOSITORY https://github.com/ValeevGroup/kit-cmake.git
14+
GIT_TAG ${TTG_TRACKED_VG_CMAKE_KIT_TAG}
15+
SOURCE_DIR ${${VG_CMAKE_KIT_PREFIX_DIR}}/cmake/vg
16+
BINARY_DIR ${${VG_CMAKE_KIT_PREFIX_DIR}}/cmake/vg-build
17+
SUBBUILD_DIR ${${VG_CMAKE_KIT_PREFIX_DIR}}/cmake/vg-subbuild
18+
)
19+
FetchContent_MakeAvailable(vg_cmake_kit)
20+
list(APPEND CMAKE_MODULE_PATH "${vg_cmake_kit_SOURCE_DIR}/modules")
21+
endif()

cmake/modules/FindOrFetchBoost.cmake

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -66,24 +66,7 @@ else()
6666
endif()
6767

6868
# Bring ValeevGroup cmake toolkit, if not yet available
69-
if (NOT DEFINED vg_cmake_kit_SOURCE_DIR)
70-
include(FetchContent)
71-
if (DEFINED PROJECT_BINARY_DIR)
72-
set(VG_CMAKE_KIT_PREFIX_DIR PROJECT_BINARY_DIR)
73-
else ()
74-
set(VG_CMAKE_KIT_PREFIX_DIR CMAKE_CURRENT_BINARY_DIR)
75-
endif()
76-
FetchContent_Declare(
77-
vg_cmake_kit
78-
QUIET
79-
GIT_REPOSITORY https://github.com/ValeevGroup/kit-cmake.git
80-
GIT_TAG ${TTG_TRACKED_VG_CMAKE_KIT_TAG}
81-
SOURCE_DIR ${${VG_CMAKE_KIT_PREFIX_DIR}}/cmake/vg
82-
BINARY_DIR ${${VG_CMAKE_KIT_PREFIX_DIR}}/cmake/vg-build
83-
SUBBUILD_DIR ${${VG_CMAKE_KIT_PREFIX_DIR}}/cmake/vg-subbuild
84-
)
85-
FetchContent_MakeAvailable(vg_cmake_kit)
86-
endif()
69+
include(FetchVGCMakeKit)
8770
include(${vg_cmake_kit_SOURCE_DIR}/modules/FindOrFetchBoost.cmake)
8871
if (Boost_BUILT_FROM_SOURCE)
8972
set(TTG_BUILT_BOOST_FROM_SOURCE 1)

0 commit comments

Comments
 (0)