mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-25 09:02:00 +00:00
Merge pull request #21597 from qoega/fixes-clang-12-cmake-3.19
Prepare to use clang 12 and cmake 3.19
This commit is contained in:
commit
494c6294b3
@ -169,7 +169,7 @@ endif ()
|
|||||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic")
|
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic")
|
||||||
|
|
||||||
if (OS_LINUX)
|
if (OS_LINUX)
|
||||||
find_program (OBJCOPY_PATH NAMES "llvm-objcopy" "llvm-objcopy-11" "llvm-objcopy-10" "llvm-objcopy-9" "llvm-objcopy-8" "objcopy")
|
find_program (OBJCOPY_PATH NAMES "llvm-objcopy" "llvm-objcopy-12" "llvm-objcopy-11" "llvm-objcopy-10" "llvm-objcopy-9" "llvm-objcopy-8" "objcopy")
|
||||||
if (OBJCOPY_PATH)
|
if (OBJCOPY_PATH)
|
||||||
message(STATUS "Using objcopy: ${OBJCOPY_PATH}.")
|
message(STATUS "Using objcopy: ${OBJCOPY_PATH}.")
|
||||||
|
|
||||||
@ -331,7 +331,7 @@ if (COMPILER_CLANG)
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Always prefer llvm tools when using clang. For instance, we cannot use GNU ar when llvm LTO is enabled
|
# Always prefer llvm tools when using clang. For instance, we cannot use GNU ar when llvm LTO is enabled
|
||||||
find_program (LLVM_AR_PATH NAMES "llvm-ar" "llvm-ar-11" "llvm-ar-10" "llvm-ar-9" "llvm-ar-8")
|
find_program (LLVM_AR_PATH NAMES "llvm-ar" "llvm-ar-12" "llvm-ar-11" "llvm-ar-10" "llvm-ar-9" "llvm-ar-8")
|
||||||
|
|
||||||
if (LLVM_AR_PATH)
|
if (LLVM_AR_PATH)
|
||||||
message(STATUS "Using llvm-ar: ${LLVM_AR_PATH}.")
|
message(STATUS "Using llvm-ar: ${LLVM_AR_PATH}.")
|
||||||
@ -340,7 +340,7 @@ if (COMPILER_CLANG)
|
|||||||
message(WARNING "Cannot find llvm-ar. System ar will be used instead. It does not work with ThinLTO.")
|
message(WARNING "Cannot find llvm-ar. System ar will be used instead. It does not work with ThinLTO.")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
find_program (LLVM_RANLIB_PATH NAMES "llvm-ranlib" "llvm-ranlib-11" "llvm-ranlib-10" "llvm-ranlib-9" "llvm-ranlib-8")
|
find_program (LLVM_RANLIB_PATH NAMES "llvm-ranlib" "llvm-ranlib-12" "llvm-ranlib-11" "llvm-ranlib-10" "llvm-ranlib-9" "llvm-ranlib-8")
|
||||||
|
|
||||||
if (LLVM_RANLIB_PATH)
|
if (LLVM_RANLIB_PATH)
|
||||||
message(STATUS "Using llvm-ranlib: ${LLVM_RANLIB_PATH}.")
|
message(STATUS "Using llvm-ranlib: ${LLVM_RANLIB_PATH}.")
|
||||||
|
@ -249,15 +249,15 @@ struct integer<Bits, Signed>::_impl
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const T alpha = t / max_int;
|
const T alpha = t / static_cast<T>(max_int);
|
||||||
|
|
||||||
if (alpha <= max_int)
|
if (alpha <= static_cast<T>(max_int))
|
||||||
self = static_cast<uint64_t>(alpha);
|
self = static_cast<uint64_t>(alpha);
|
||||||
else // max(double) / 2^64 will surely contain less than 52 precision bits, so speed up computations.
|
else // max(double) / 2^64 will surely contain less than 52 precision bits, so speed up computations.
|
||||||
set_multiplier<double>(self, alpha);
|
set_multiplier<double>(self, alpha);
|
||||||
|
|
||||||
self *= max_int;
|
self *= max_int;
|
||||||
self += static_cast<uint64_t>(t - alpha * max_int); // += b_i
|
self += static_cast<uint64_t>(t - alpha * static_cast<T>(max_int)); // += b_i
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr static void wide_integer_from_bultin(integer<Bits, Signed>& self, double rhs) noexcept {
|
constexpr static void wide_integer_from_bultin(integer<Bits, Signed>& self, double rhs) noexcept {
|
||||||
@ -275,7 +275,7 @@ struct integer<Bits, Signed>::_impl
|
|||||||
"On your system long double has less than 64 precision bits,"
|
"On your system long double has less than 64 precision bits,"
|
||||||
"which may result in UB when initializing double from int64_t");
|
"which may result in UB when initializing double from int64_t");
|
||||||
|
|
||||||
if ((rhs > 0 && rhs < max_int) || (rhs < 0 && rhs > min_int))
|
if ((rhs > 0 && rhs < static_cast<long double>(max_int)) || (rhs < 0 && rhs > static_cast<long double>(min_int)))
|
||||||
{
|
{
|
||||||
self = static_cast<int64_t>(rhs);
|
self = static_cast<int64_t>(rhs);
|
||||||
return;
|
return;
|
||||||
|
@ -4,5 +4,5 @@
|
|||||||
add_library(readpassphrase readpassphrase.c)
|
add_library(readpassphrase readpassphrase.c)
|
||||||
|
|
||||||
set_target_properties(readpassphrase PROPERTIES LINKER_LANGUAGE C)
|
set_target_properties(readpassphrase PROPERTIES LINKER_LANGUAGE C)
|
||||||
target_compile_options(readpassphrase PRIVATE -Wno-unused-result -Wno-reserved-id-macro)
|
target_compile_options(readpassphrase PRIVATE -Wno-unused-result -Wno-reserved-id-macro -Wno-disabled-macro-expansion)
|
||||||
target_include_directories(readpassphrase PUBLIC .)
|
target_include_directories(readpassphrase PUBLIC .)
|
||||||
|
@ -94,7 +94,7 @@ restart:
|
|||||||
if (input != STDIN_FILENO && tcgetattr(input, &oterm) == 0) {
|
if (input != STDIN_FILENO && tcgetattr(input, &oterm) == 0) {
|
||||||
memcpy(&term, &oterm, sizeof(term));
|
memcpy(&term, &oterm, sizeof(term));
|
||||||
if (!(flags & RPP_ECHO_ON))
|
if (!(flags & RPP_ECHO_ON))
|
||||||
term.c_lflag &= ~(ECHO | ECHONL);
|
term.c_lflag &= ~((unsigned int) (ECHO | ECHONL));
|
||||||
#ifdef VSTATUS
|
#ifdef VSTATUS
|
||||||
if (term.c_cc[VSTATUS] != _POSIX_VDISABLE)
|
if (term.c_cc[VSTATUS] != _POSIX_VDISABLE)
|
||||||
term.c_cc[VSTATUS] = _POSIX_VDISABLE;
|
term.c_cc[VSTATUS] = _POSIX_VDISABLE;
|
||||||
|
@ -75,8 +75,13 @@ if (OS_LINUX AND NOT LINKER_NAME)
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (LINKER_NAME)
|
if (LINKER_NAME)
|
||||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=${LINKER_NAME}")
|
if (COMPILER_CLANG AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 12.0.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 12.0.0))
|
||||||
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=${LINKER_NAME}")
|
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --ld-path=${LINKER_NAME}")
|
||||||
|
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --ld-path=${LINKER_NAME}")
|
||||||
|
else ()
|
||||||
|
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=${LINKER_NAME}")
|
||||||
|
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=${LINKER_NAME}")
|
||||||
|
endif ()
|
||||||
|
|
||||||
message(STATUS "Using custom linker by name: ${LINKER_NAME}")
|
message(STATUS "Using custom linker by name: ${LINKER_NAME}")
|
||||||
endif ()
|
endif ()
|
||||||
|
2
contrib/boringssl
vendored
2
contrib/boringssl
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 8b2bf912ba04823cfe9e7e8f5bb60cb7f6252449
|
Subproject commit fd9ce1a0406f571507068b9555d0b545b8a18332
|
2
contrib/cassandra
vendored
2
contrib/cassandra
vendored
@ -1 +1 @@
|
|||||||
Subproject commit b446d7eb68e6962f431e2b3771313bfe9a2bbd93
|
Subproject commit c097fb5c7e63cc430016d9a8b240d8e63fbefa52
|
2
contrib/googletest
vendored
2
contrib/googletest
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 356f2d264a485db2fcc50ec1c672e0d37b6cb39b
|
Subproject commit e7e591764baba0a0c3c9ad0014430e7a27331d16
|
2
contrib/mariadb-connector-c
vendored
2
contrib/mariadb-connector-c
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 21f451d4d3157ffed31ec60a8b76c407190e66bd
|
Subproject commit f4476ee7311b35b593750f6ae2cbdb62a4006374
|
@ -170,7 +170,7 @@ $ ./release
|
|||||||
Normally all tools of the ClickHouse bundle, such as `clickhouse-server`, `clickhouse-client` etc., are linked into a single static executable, `clickhouse`. This executable must be re-linked on every change, which might be slow. Two common ways to improve linking time are to use `lld` linker, and use the 'split' build configuration, which builds a separate binary for every tool, and further splits the code into serveral shared libraries. To enable these tweaks, pass the following flags to `cmake`:
|
Normally all tools of the ClickHouse bundle, such as `clickhouse-server`, `clickhouse-client` etc., are linked into a single static executable, `clickhouse`. This executable must be re-linked on every change, which might be slow. Two common ways to improve linking time are to use `lld` linker, and use the 'split' build configuration, which builds a separate binary for every tool, and further splits the code into serveral shared libraries. To enable these tweaks, pass the following flags to `cmake`:
|
||||||
|
|
||||||
```
|
```
|
||||||
-DCMAKE_C_FLAGS="-fuse-ld=lld" -DCMAKE_CXX_FLAGS="-fuse-ld=lld" -DUSE_STATIC_LIBRARIES=0 -DSPLIT_SHARED_LIBRARIES=1 -DCLICKHOUSE_SPLIT_BINARY=1
|
-DCMAKE_C_FLAGS="--ld-path=lld" -DCMAKE_CXX_FLAGS="--ld-path=lld" -DUSE_STATIC_LIBRARIES=0 -DSPLIT_SHARED_LIBRARIES=1 -DCLICKHOUSE_SPLIT_BINARY=1
|
||||||
```
|
```
|
||||||
|
|
||||||
## You Don’t Have to Build ClickHouse {#you-dont-have-to-build-clickhouse}
|
## You Don’t Have to Build ClickHouse {#you-dont-have-to-build-clickhouse}
|
||||||
|
@ -749,7 +749,7 @@ auto RandomishGenerator = [](auto i)
|
|||||||
{
|
{
|
||||||
using T = decltype(i);
|
using T = decltype(i);
|
||||||
double sin_value = sin(static_cast<double>(i * i)) * i;
|
double sin_value = sin(static_cast<double>(i * i)) * i;
|
||||||
if (sin_value < std::numeric_limits<T>::lowest() || sin_value > std::numeric_limits<T>::max())
|
if (sin_value < std::numeric_limits<T>::lowest() || sin_value > static_cast<double>(std::numeric_limits<T>::max()))
|
||||||
return T{};
|
return T{};
|
||||||
return T(sin_value);
|
return T(sin_value);
|
||||||
};
|
};
|
||||||
|
@ -105,7 +105,7 @@ struct DivideIntegralImpl
|
|||||||
auto res = checkedDivision(CastA(a), CastB(b));
|
auto res = checkedDivision(CastA(a), CastB(b));
|
||||||
|
|
||||||
if constexpr (std::is_floating_point_v<decltype(res)>)
|
if constexpr (std::is_floating_point_v<decltype(res)>)
|
||||||
if (isNaN(res) || res >= std::numeric_limits<Result>::max() || res <= std::numeric_limits<Result>::lowest())
|
if (isNaN(res) || res >= static_cast<double>(std::numeric_limits<Result>::max()) || res <= std::numeric_limits<Result>::lowest())
|
||||||
throw Exception("Cannot perform integer division, because it will produce infinite or too large number",
|
throw Exception("Cannot perform integer division, because it will produce infinite or too large number",
|
||||||
ErrorCodes::ILLEGAL_DIVISION);
|
ErrorCodes::ILLEGAL_DIVISION);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user