Skip to content

Commit 9b6aa3d

Browse files
committed
Fix build on clang & libc++
Do not link with gcc & libstdc++ support libraries when going with clang & libc++. Signed-off-by: David Keller <david@woorton.com>
1 parent a85a982 commit 9b6aa3d

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

clickhouse/CMakeLists.txt

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,25 @@ TARGET_LINK_LIBRARIES (clickhouse-cpp-lib-static
5151
)
5252

5353
IF (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
54-
# there is a problem with __builtin_mul_overflow call at link time
55-
# the error looks like: ... undefined reference to `__muloti4' ...
56-
# caused by clang bug https://bugs.llvm.org/show_bug.cgi?id=16404
57-
# explicit linking to compiler-rt allows to workaround the problem
58-
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --rtlib=compiler-rt")
59-
60-
# some workaround for linking issues on linux:
61-
# /usr/bin/ld: CMakeFiles/simple-test.dir/main.cpp.o: undefined reference to symbol '_Unwind_Resume@@GCC_3.0'
62-
# /usr/bin/ld: /lib/x86_64-linux-gnu/libgcc_s.so.1: error adding symbols: DSO missing from command line
63-
# FIXME: that workaround breaks clang build on mingw
64-
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib gcc_s)
65-
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib-static gcc_s)
54+
INCLUDE (CheckCXXSourceCompiles)
55+
56+
CHECK_CXX_SOURCE_COMPILES("#include <bits/c++config.h>\nint main() { return __GLIBCXX__ != 0; }"
57+
BUILDING_WITH_LIB_STDCXX)
58+
59+
IF (BUILDING_WITH_LIB_STDCXX)
60+
# there is a problem with __builtin_mul_overflow call at link time
61+
# the error looks like: ... undefined reference to `__muloti4' ...
62+
# caused by clang bug https://bugs.llvm.org/show_bug.cgi?id=16404
63+
# explicit linking to compiler-rt allows to workaround the problem
64+
SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --rtlib=compiler-rt")
65+
66+
# some workaround for linking issues on linux:
67+
# /usr/bin/ld: CMakeFiles/simple-test.dir/main.cpp.o: undefined reference to symbol '_Unwind_Resume@@GCC_3.0'
68+
# /usr/bin/ld: /lib/x86_64-linux-gnu/libgcc_s.so.1: error adding symbols: DSO missing from command line
69+
# FIXME: that workaround breaks clang build on mingw
70+
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib gcc_s)
71+
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib-static gcc_s)
72+
ENDIF ()
6673
ENDIF ()
6774

6875
INSTALL (TARGETS clickhouse-cpp-lib clickhouse-cpp-lib-static

0 commit comments

Comments
 (0)