Merge pull request #15239 from ClickHouse/100_percent_lld_11_for_clang_11

Build ClickHouse for release with clang-11
This commit is contained in:
alesapin 2020-10-02 14:59:29 +03:00 committed by GitHub
commit c5df9433f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 38 additions and 31 deletions

View File

@ -513,7 +513,13 @@ endif ()
macro (add_executable target) macro (add_executable target)
# invoke built-in add_executable # invoke built-in add_executable
# explicitly acquire and interpose malloc symbols by clickhouse_malloc # explicitly acquire and interpose malloc symbols by clickhouse_malloc
# if GLIBC_COMPATIBILITY is ON and not sanitizer build, provide memcpy symbol explicitly to neutrialize thinlto's libcall generation.
if (GLIBC_COMPATIBILITY AND NOT SANITIZE)
_add_executable (${ARGV} $<TARGET_OBJECTS:clickhouse_malloc> $<TARGET_OBJECTS:clickhouse_memcpy>)
else ()
_add_executable (${ARGV} $<TARGET_OBJECTS:clickhouse_malloc>) _add_executable (${ARGV} $<TARGET_OBJECTS:clickhouse_malloc>)
endif ()
get_target_property (type ${target} TYPE) get_target_property (type ${target} TYPE)
if (${type} STREQUAL EXECUTABLE) if (${type} STREQUAL EXECUTABLE)
# operator::new/delete for executables (MemoryTracker stuff) # operator::new/delete for executables (MemoryTracker stuff)

View File

@ -27,6 +27,10 @@ if (GLIBC_COMPATIBILITY)
list(APPEND glibc_compatibility_sources musl/getentropy.c) list(APPEND glibc_compatibility_sources musl/getentropy.c)
endif() endif()
add_library (clickhouse_memcpy OBJECT
${ClickHouse_SOURCE_DIR}/contrib/FastMemcpy/memcpy_wrapper.c
)
# Need to omit frame pointers to match the performance of glibc # Need to omit frame pointers to match the performance of glibc
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer")

View File

@ -26,7 +26,7 @@ endif ()
if (NOT USE_INTERNAL_LLVM_LIBRARY) if (NOT USE_INTERNAL_LLVM_LIBRARY)
set (LLVM_PATHS "/usr/local/lib/llvm") set (LLVM_PATHS "/usr/local/lib/llvm")
foreach(llvm_v 9 8) foreach(llvm_v 10 9 8)
if (NOT LLVM_FOUND) if (NOT LLVM_FOUND)
find_package (LLVM ${llvm_v} CONFIG PATHS ${LLVM_PATHS}) find_package (LLVM ${llvm_v} CONFIG PATHS ${LLVM_PATHS})
endif () endif ()

View File

@ -1,4 +1,4 @@
#include <FastMemcpy.h> #include "FastMemcpy.h"
void * memcpy(void * __restrict destination, const void * __restrict source, size_t size) void * memcpy(void * __restrict destination, const void * __restrict source, size_t size)
{ {

View File

@ -1,7 +1,7 @@
# docker build -t yandex/clickhouse-binary-builder . # docker build -t yandex/clickhouse-binary-builder .
FROM ubuntu:20.04 FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=10 ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=11
RUN apt-get update \ RUN apt-get update \
&& apt-get install ca-certificates lsb-release wget gnupg apt-transport-https \ && apt-get install ca-certificates lsb-release wget gnupg apt-transport-https \
@ -11,7 +11,7 @@ RUN apt-get update \
&& echo "${LLVM_PUBKEY_HASH} /tmp/llvm-snapshot.gpg.key" | sha384sum -c \ && echo "${LLVM_PUBKEY_HASH} /tmp/llvm-snapshot.gpg.key" | sha384sum -c \
&& apt-key add /tmp/llvm-snapshot.gpg.key \ && apt-key add /tmp/llvm-snapshot.gpg.key \
&& export CODENAME="$(lsb_release --codename --short | tr 'A-Z' 'a-z')" \ && export CODENAME="$(lsb_release --codename --short | tr 'A-Z' 'a-z')" \
&& echo "deb [trusted=yes] http://apt.llvm.org/${CODENAME}/ llvm-toolchain-${CODENAME}-11 main" >> \ && echo "deb [trusted=yes] http://apt.llvm.org/${CODENAME}/ llvm-toolchain-${CODENAME}-${LLVM_VERSION} main" >> \
/etc/apt/sources.list /etc/apt/sources.list
# initial packages # initial packages
@ -32,10 +32,11 @@ RUN apt-get update \
curl \ curl \
gcc-9 \ gcc-9 \
g++-9 \ g++-9 \
llvm-${LLVM_VERSION} \ clang-10 \
clang-${LLVM_VERSION} \ clang-tidy-10 \
lld-${LLVM_VERSION} \ lld-10 \
clang-tidy-${LLVM_VERSION} \ llvm-10 \
llvm-10-dev \
clang-11 \ clang-11 \
clang-tidy-11 \ clang-tidy-11 \
lld-11 \ lld-11 \

View File

@ -1,7 +1,7 @@
# docker build -t yandex/clickhouse-deb-builder . # docker build -t yandex/clickhouse-deb-builder .
FROM ubuntu:20.04 FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=10 ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=11
RUN apt-get update \ RUN apt-get update \
&& apt-get install ca-certificates lsb-release wget gnupg apt-transport-https \ && apt-get install ca-certificates lsb-release wget gnupg apt-transport-https \
@ -11,7 +11,7 @@ RUN apt-get update \
&& echo "${LLVM_PUBKEY_HASH} /tmp/llvm-snapshot.gpg.key" | sha384sum -c \ && echo "${LLVM_PUBKEY_HASH} /tmp/llvm-snapshot.gpg.key" | sha384sum -c \
&& apt-key add /tmp/llvm-snapshot.gpg.key \ && apt-key add /tmp/llvm-snapshot.gpg.key \
&& export CODENAME="$(lsb_release --codename --short | tr 'A-Z' 'a-z')" \ && export CODENAME="$(lsb_release --codename --short | tr 'A-Z' 'a-z')" \
&& echo "deb [trusted=yes] http://apt.llvm.org/${CODENAME}/ llvm-toolchain-${CODENAME}-11 main" >> \ && echo "deb [trusted=yes] http://apt.llvm.org/${CODENAME}/ llvm-toolchain-${CODENAME}-${LLVM_VERSION} main" >> \
/etc/apt/sources.list /etc/apt/sources.list
# initial packages # initial packages
@ -49,15 +49,11 @@ RUN apt-get update \
lld-11 \ lld-11 \
llvm-11 \ llvm-11 \
llvm-11-dev \ llvm-11-dev \
clang-${LLVM_VERSION} \ clang-10 \
clang-tidy-${LLVM_VERSION} \ clang-tidy-10 \
lld-${LLVM_VERSION} \ lld-10 \
llvm-${LLVM_VERSION} \ llvm-10 \
llvm-${LLVM_VERSION}-dev \ llvm-10-dev \
llvm-9-dev \
lld-9 \
clang-9 \
clang-tidy-9 \
ninja-build \ ninja-build \
perl \ perl \
pkg-config \ pkg-config \

View File

@ -1,7 +1,7 @@
{ {
"build_config": [ "build_config": [
{ {
"compiler": "gcc-10", "compiler": "clang-11",
"build-type": "", "build-type": "",
"sanitizer": "", "sanitizer": "",
"package-type": "deb", "package-type": "deb",
@ -12,7 +12,7 @@
"with_coverage": false "with_coverage": false
}, },
{ {
"compiler": "gcc-10", "compiler": "clang-11",
"build-type": "", "build-type": "",
"sanitizer": "", "sanitizer": "",
"package-type": "performance", "package-type": "performance",
@ -227,7 +227,7 @@
}, },
"Functional stateful tests (release)": { "Functional stateful tests (release)": {
"required_build_properties": { "required_build_properties": {
"compiler": "gcc-10", "compiler": "clang-11",
"package_type": "deb", "package_type": "deb",
"build_type": "relwithdebuginfo", "build_type": "relwithdebuginfo",
"sanitizer": "none", "sanitizer": "none",
@ -239,7 +239,7 @@
}, },
"Functional stateful tests (release, DatabaseOrdinary)": { "Functional stateful tests (release, DatabaseOrdinary)": {
"required_build_properties": { "required_build_properties": {
"compiler": "gcc-10", "compiler": "clang-11",
"package_type": "deb", "package_type": "deb",
"build_type": "relwithdebuginfo", "build_type": "relwithdebuginfo",
"sanitizer": "none", "sanitizer": "none",
@ -311,7 +311,7 @@
}, },
"Functional stateless tests (release)": { "Functional stateless tests (release)": {
"required_build_properties": { "required_build_properties": {
"compiler": "gcc-10", "compiler": "clang-11",
"package_type": "deb", "package_type": "deb",
"build_type": "relwithdebuginfo", "build_type": "relwithdebuginfo",
"sanitizer": "none", "sanitizer": "none",
@ -335,7 +335,7 @@
}, },
"Functional stateless tests (release, polymorphic parts enabled)": { "Functional stateless tests (release, polymorphic parts enabled)": {
"required_build_properties": { "required_build_properties": {
"compiler": "gcc-10", "compiler": "clang-11",
"package_type": "deb", "package_type": "deb",
"build_type": "relwithdebuginfo", "build_type": "relwithdebuginfo",
"sanitizer": "none", "sanitizer": "none",
@ -347,7 +347,7 @@
}, },
"Functional stateless tests (release, DatabaseOrdinary)": { "Functional stateless tests (release, DatabaseOrdinary)": {
"required_build_properties": { "required_build_properties": {
"compiler": "gcc-10", "compiler": "clang-11",
"package_type": "deb", "package_type": "deb",
"build_type": "relwithdebuginfo", "build_type": "relwithdebuginfo",
"sanitizer": "none", "sanitizer": "none",
@ -431,7 +431,7 @@
}, },
"Integration tests (release)": { "Integration tests (release)": {
"required_build_properties": { "required_build_properties": {
"compiler": "gcc-10", "compiler": "clang-11",
"package_type": "deb", "package_type": "deb",
"build_type": "relwithdebuginfo", "build_type": "relwithdebuginfo",
"sanitizer": "none", "sanitizer": "none",
@ -455,7 +455,7 @@
}, },
"Compatibility check": { "Compatibility check": {
"required_build_properties": { "required_build_properties": {
"compiler": "gcc-10", "compiler": "clang-11",
"package_type": "deb", "package_type": "deb",
"build_type": "relwithdebuginfo", "build_type": "relwithdebuginfo",
"sanitizer": "none", "sanitizer": "none",
@ -479,7 +479,7 @@
}, },
"Testflows check": { "Testflows check": {
"required_build_properties": { "required_build_properties": {
"compiler": "gcc-10", "compiler": "clang-11",
"package_type": "deb", "package_type": "deb",
"build_type": "relwithdebuginfo", "build_type": "relwithdebuginfo",
"sanitizer": "none", "sanitizer": "none",
@ -575,7 +575,7 @@
}, },
"Release": { "Release": {
"required_build_properties": { "required_build_properties": {
"compiler": "gcc-10", "compiler": "clang-11",
"package_type": "deb", "package_type": "deb",
"build_type": "relwithdebuginfo", "build_type": "relwithdebuginfo",
"sanitizer": "none", "sanitizer": "none",