Skip to content

Commit

Permalink
Merge branch 'master' into better_hashmap
Browse files Browse the repository at this point in the history
  • Loading branch information
alesapin committed Jan 22, 2022
2 parents 2ee3f70 + edc8568 commit e0a7f59
Show file tree
Hide file tree
Showing 226 changed files with 3,335 additions and 1,108 deletions.
2 changes: 0 additions & 2 deletions CMakeLists.txt
Expand Up @@ -547,6 +547,4 @@ add_subdirectory (programs)
add_subdirectory (tests)
add_subdirectory (utils)

include (cmake/print_include_directories.cmake)

include (cmake/sanitize_target_link_libraries.cmake)
6 changes: 4 additions & 2 deletions cmake/cpu_features.cmake
Expand Up @@ -134,7 +134,7 @@ else ()
set (COMPILER_FLAGS "${COMPILER_FLAGS} ${TEST_FLAG}")
endif ()

set (TEST_FLAG "-mavx512f -mavx512bw")
set (TEST_FLAG "-mavx512f -mavx512bw -mavx512vl")
set (CMAKE_REQUIRED_FLAGS "${TEST_FLAG} -O0")
check_cxx_source_compiles("
#include <immintrin.h>
Expand All @@ -143,6 +143,8 @@ else ()
(void)a;
auto b = _mm512_add_epi16(__m512i(), __m512i());
(void)b;
auto c = _mm_cmp_epi8_mask(__m128i(), __m128i(), 0);
(void)c;
return 0;
}
" HAVE_AVX512)
Expand Down Expand Up @@ -181,7 +183,7 @@ else ()
set (X86_INTRINSICS_FLAGS "${X86_INTRINSICS_FLAGS} -mbmi")
endif ()
if (HAVE_AVX512)
set (X86_INTRINSICS_FLAGS "${X86_INTRINSICS_FLAGS} -mavx512f -mavx512bw -mprefer-vector-width=256")
set (X86_INTRINSICS_FLAGS "${X86_INTRINSICS_FLAGS} -mavx512f -mavx512bw -mavx512vl -mprefer-vector-width=256")
endif ()
endif ()
endif ()
Expand Down
31 changes: 4 additions & 27 deletions cmake/find/cxx.cmake
@@ -1,31 +1,8 @@
option (USE_LIBCXX "Use libc++ and libc++abi instead of libstdc++" ON)

if (NOT USE_LIBCXX)
target_link_libraries(global-libs INTERFACE -l:libstdc++.a -l:libstdc++fs.a) # Always link these libraries as static
target_link_libraries(global-libs INTERFACE ${EXCEPTION_HANDLING_LIBRARY})
return()
endif()

set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_LIBCPP_DEBUG=0") # More checks in debug build.

if (NOT HAVE_LIBCXX AND NOT MISSING_INTERNAL_LIBCXX_LIBRARY)
set (LIBCXX_LIBRARY cxx)
set (LIBCXXABI_LIBRARY cxxabi)
add_subdirectory(contrib/libcxxabi-cmake)
add_subdirectory(contrib/libcxx-cmake)

# Exception handling library is embedded into libcxxabi.

set (HAVE_LIBCXX 1)
endif ()
add_subdirectory(contrib/libcxxabi-cmake)
add_subdirectory(contrib/libcxx-cmake)

if (HAVE_LIBCXX)
target_link_libraries(global-libs INTERFACE ${LIBCXX_LIBRARY} ${LIBCXXABI_LIBRARY} ${LIBCXXFS_LIBRARY})
# Exception handling library is embedded into libcxxabi.

message (STATUS "Using libcxx: ${LIBCXX_LIBRARY}")
message (STATUS "Using libcxxfs: ${LIBCXXFS_LIBRARY}")
message (STATUS "Using libcxxabi: ${LIBCXXABI_LIBRARY}")
else()
target_link_libraries(global-libs INTERFACE -l:libstdc++.a -l:libstdc++fs.a) # Always link these libraries as static
target_link_libraries(global-libs INTERFACE ${EXCEPTION_HANDLING_LIBRARY})
endif()
target_link_libraries(global-libs INTERFACE cxx cxxabi)
29 changes: 0 additions & 29 deletions cmake/print_include_directories.cmake

This file was deleted.

17 changes: 3 additions & 14 deletions cmake/warnings.cmake
Expand Up @@ -55,11 +55,6 @@ if (COMPILER_CLANG)
no_warning(weak-template-vtables)
no_warning(weak-vtables)

# XXX: libstdc++ has some of these for 3way compare
if (NOT USE_LIBCXX)
no_warning(zero-as-null-pointer-constant)
endif()

# TODO Enable conversion, sign-conversion, double-promotion warnings.
else ()
add_warning(comma)
Expand Down Expand Up @@ -98,10 +93,7 @@ if (COMPILER_CLANG)
add_warning(tautological-bitwise-compare)

# XXX: libstdc++ has some of these for 3way compare
if (USE_LIBCXX)
add_warning(zero-as-null-pointer-constant)
endif()

add_warning(zero-as-null-pointer-constant)
endif ()
elseif (COMPILER_GCC)
# Add compiler options only to c++ compiler
Expand Down Expand Up @@ -183,11 +175,8 @@ elseif (COMPILER_GCC)
add_cxx_compile_options(-Wundef)
# Warn if vector operation is not implemented via SIMD capabilities of the architecture
add_cxx_compile_options(-Wvector-operation-performance)
# XXX: libstdc++ has some of these for 3way compare
if (USE_LIBCXX)
# Warn when a literal 0 is used as null pointer constant.
add_cxx_compile_options(-Wzero-as-null-pointer-constant)
endif()
# Warn when a literal 0 is used as null pointer constant.
add_cxx_compile_options(-Wzero-as-null-pointer-constant)

if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
# XXX: gcc10 stuck with this option while compiling GatherUtils code
Expand Down
10 changes: 6 additions & 4 deletions contrib/abseil-cpp-cmake/CMakeLists.txt
Expand Up @@ -6,15 +6,17 @@ set(BUILD_TESTING OFF)
set(ABSL_PROPAGATE_CXX_STD ON)
add_subdirectory("${ABSL_ROOT_DIR}" "${ClickHouse_BINARY_DIR}/contrib/abseil-cpp")

add_library(abseil_swiss_tables INTERFACE)
add_library(_abseil_swiss_tables INTERFACE)

target_link_libraries(abseil_swiss_tables INTERFACE
target_link_libraries(_abseil_swiss_tables INTERFACE
absl::flat_hash_map
absl::flat_hash_set
)

get_target_property(FLAT_HASH_MAP_INCLUDE_DIR absl::flat_hash_map INTERFACE_INCLUDE_DIRECTORIES)
target_include_directories (abseil_swiss_tables SYSTEM BEFORE INTERFACE ${FLAT_HASH_MAP_INCLUDE_DIR})
target_include_directories (_abseil_swiss_tables SYSTEM BEFORE INTERFACE ${FLAT_HASH_MAP_INCLUDE_DIR})

get_target_property(FLAT_HASH_SET_INCLUDE_DIR absl::flat_hash_set INTERFACE_INCLUDE_DIRECTORIES)
target_include_directories (abseil_swiss_tables SYSTEM BEFORE INTERFACE ${FLAT_HASH_SET_INCLUDE_DIR})
target_include_directories (_abseil_swiss_tables SYSTEM BEFORE INTERFACE ${FLAT_HASH_SET_INCLUDE_DIR})

add_library(ch_contrib::abseil_swiss_tables ALIAS _abseil_swiss_tables)
32 changes: 16 additions & 16 deletions contrib/aws-s3-cmake/CMakeLists.txt
Expand Up @@ -91,30 +91,30 @@ set(S3_INCLUDES
"${CMAKE_CURRENT_BINARY_DIR}/include/"
)

add_library(aws_s3_checksums ${AWS_CHECKSUMS_SOURCES})
target_include_directories(aws_s3_checksums SYSTEM PUBLIC "${AWS_CHECKSUMS_LIBRARY_DIR}/include/")
add_library(_aws_s3_checksums ${AWS_CHECKSUMS_SOURCES})
target_include_directories(_aws_s3_checksums SYSTEM PUBLIC "${AWS_CHECKSUMS_LIBRARY_DIR}/include/")
if(CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG")
target_compile_definitions(aws_s3_checksums PRIVATE "-DDEBUG_BUILD")
target_compile_definitions(_aws_s3_checksums PRIVATE "-DDEBUG_BUILD")
endif()
set_target_properties(aws_s3_checksums PROPERTIES LINKER_LANGUAGE C)
set_property(TARGET aws_s3_checksums PROPERTY C_STANDARD 99)
set_target_properties(_aws_s3_checksums PROPERTIES LINKER_LANGUAGE C)
set_property(TARGET _aws_s3_checksums PROPERTY C_STANDARD 99)

add_library(aws_s3 ${S3_UNIFIED_SRC})
add_library(_aws_s3 ${S3_UNIFIED_SRC})

target_compile_definitions(aws_s3 PUBLIC "AWS_SDK_VERSION_MAJOR=1")
target_compile_definitions(aws_s3 PUBLIC "AWS_SDK_VERSION_MINOR=7")
target_compile_definitions(aws_s3 PUBLIC "AWS_SDK_VERSION_PATCH=231")
target_include_directories(aws_s3 SYSTEM BEFORE PUBLIC ${S3_INCLUDES})
target_compile_definitions(_aws_s3 PUBLIC "AWS_SDK_VERSION_MAJOR=1")
target_compile_definitions(_aws_s3 PUBLIC "AWS_SDK_VERSION_MINOR=7")
target_compile_definitions(_aws_s3 PUBLIC "AWS_SDK_VERSION_PATCH=231")
target_include_directories(_aws_s3 SYSTEM BEFORE PUBLIC ${S3_INCLUDES})

if (TARGET OpenSSL::SSL)
target_compile_definitions(aws_s3 PUBLIC -DENABLE_OPENSSL_ENCRYPTION)
target_link_libraries(aws_s3 PRIVATE OpenSSL::Crypto OpenSSL::SSL)
target_compile_definitions(_aws_s3 PUBLIC -DENABLE_OPENSSL_ENCRYPTION)
target_link_libraries(_aws_s3 PRIVATE OpenSSL::Crypto OpenSSL::SSL)
endif()

target_link_libraries(aws_s3 PRIVATE aws_s3_checksums)
target_link_libraries(_aws_s3 PRIVATE _aws_s3_checksums)

# The library is large - avoid bloat.
target_compile_options (aws_s3 PRIVATE -g0)
target_compile_options (aws_s3_checksums PRIVATE -g0)
target_compile_options (_aws_s3 PRIVATE -g0)
target_compile_options (_aws_s3_checksums PRIVATE -g0)

add_library(ch_contrib::aws_s3 ALIAS aws_s3)
add_library(ch_contrib::aws_s3 ALIAS _aws_s3)
40 changes: 20 additions & 20 deletions contrib/base64-cmake/CMakeLists.txt
Expand Up @@ -11,37 +11,37 @@ endif()

SET(LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/base64")

add_library(base64_scalar OBJECT "${LIBRARY_DIR}/turbob64c.c" "${LIBRARY_DIR}/turbob64d.c")
add_library(base64_ssse3 OBJECT "${LIBRARY_DIR}/turbob64sse.c") # This file also contains code for ARM NEON
add_library(_base64_scalar OBJECT "${LIBRARY_DIR}/turbob64c.c" "${LIBRARY_DIR}/turbob64d.c")
add_library(_base64_ssse3 OBJECT "${LIBRARY_DIR}/turbob64sse.c") # This file also contains code for ARM NEON

if (ARCH_AMD64)
add_library(base64_avx OBJECT "${LIBRARY_DIR}/turbob64sse.c") # This is not a mistake. One file is compiled twice.
add_library(base64_avx2 OBJECT "${LIBRARY_DIR}/turbob64avx2.c")
add_library(_base64_avx OBJECT "${LIBRARY_DIR}/turbob64sse.c") # This is not a mistake. One file is compiled twice.
add_library(_base64_avx2 OBJECT "${LIBRARY_DIR}/turbob64avx2.c")
endif ()

target_compile_options(base64_scalar PRIVATE -falign-loops)
target_compile_options(_base64_scalar PRIVATE -falign-loops)

if (ARCH_AMD64)
target_compile_options(base64_ssse3 PRIVATE -mno-avx -mno-avx2 -mssse3 -falign-loops)
target_compile_options(base64_avx PRIVATE -falign-loops -mavx)
target_compile_options(base64_avx2 PRIVATE -falign-loops -mavx2)
target_compile_options(_base64_ssse3 PRIVATE -mno-avx -mno-avx2 -mssse3 -falign-loops)
target_compile_options(_base64_avx PRIVATE -falign-loops -mavx)
target_compile_options(_base64_avx2 PRIVATE -falign-loops -mavx2)
else ()
target_compile_options(base64_ssse3 PRIVATE -falign-loops)
target_compile_options(_base64_ssse3 PRIVATE -falign-loops)
endif ()

if (ARCH_AMD64)
add_library(base64
$<TARGET_OBJECTS:base64_scalar>
$<TARGET_OBJECTS:base64_ssse3>
$<TARGET_OBJECTS:base64_avx>
$<TARGET_OBJECTS:base64_avx2>)
add_library(_base64
$<TARGET_OBJECTS:_base64_scalar>
$<TARGET_OBJECTS:_base64_ssse3>
$<TARGET_OBJECTS:_base64_avx>
$<TARGET_OBJECTS:_base64_avx2>)
else ()
add_library(base64
$<TARGET_OBJECTS:base64_scalar>
$<TARGET_OBJECTS:base64_ssse3>)
add_library(_base64
$<TARGET_OBJECTS:_base64_scalar>
$<TARGET_OBJECTS:_base64_ssse3>)
endif ()

target_include_directories(base64 SYSTEM PUBLIC ${LIBRARY_DIR})
target_include_directories(_base64 SYSTEM PUBLIC ${LIBRARY_DIR})

if (XCODE OR XCODE_VERSION)
# https://gitlab.kitware.com/cmake/cmake/issues/17457
Expand All @@ -50,7 +50,7 @@ if (XCODE OR XCODE_VERSION)
if (NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/dummy.c")
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/dummy.c" "")
endif ()
target_sources(base64 PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/dummy.c")
target_sources(_base64 PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/dummy.c")
endif ()

add_library(ch_contrib::base64 ALIAS base64)
add_library(ch_contrib::base64 ALIAS _base64)
21 changes: 11 additions & 10 deletions contrib/boringssl-cmake/CMakeLists.txt
Expand Up @@ -368,7 +368,7 @@ elseif(WIN32)
endif()

add_library(
crypto
_crypto

${CRYPTO_ARCH_SOURCES}
err_data.c
Expand Down Expand Up @@ -605,7 +605,7 @@ add_library(
)

add_library(
ssl
_ssl

"${BORINGSSL_SOURCE_DIR}/ssl/bio_ssl.cc"
"${BORINGSSL_SOURCE_DIR}/ssl/d1_both.cc"
Expand Down Expand Up @@ -672,21 +672,22 @@ add_executable(
"${BORINGSSL_SOURCE_DIR}/tool/transport_common.cc"
)

target_link_libraries(ssl crypto)
target_link_libraries(bssl ssl)
target_link_libraries(_ssl _crypto)
target_link_libraries(bssl _ssl)

if(NOT WIN32 AND NOT ANDROID)
target_link_libraries(crypto pthread)
target_link_libraries(_crypto pthread)
endif()

# NOTE: that ClickHouse does not support WIN32 anyway.
if(WIN32)
target_link_libraries(bssl ws2_32)
endif()

target_include_directories(crypto SYSTEM PUBLIC "${BORINGSSL_SOURCE_DIR}/include")
target_include_directories(ssl SYSTEM PUBLIC "${BORINGSSL_SOURCE_DIR}/include")
target_include_directories(_crypto SYSTEM PUBLIC "${BORINGSSL_SOURCE_DIR}/include")
target_include_directories(_ssl SYSTEM PUBLIC "${BORINGSSL_SOURCE_DIR}/include")

target_compile_options(crypto PRIVATE -Wno-gnu-anonymous-struct)
target_compile_options(_crypto PRIVATE -Wno-gnu-anonymous-struct)

add_library(OpenSSL::Crypto ALIAS crypto)
add_library(OpenSSL::SSL ALIAS ssl)
add_library(OpenSSL::Crypto ALIAS _crypto)
add_library(OpenSSL::SSL ALIAS _ssl)
22 changes: 11 additions & 11 deletions contrib/capnproto-cmake/CMakeLists.txt
Expand Up @@ -36,8 +36,8 @@ set (KJ_SRCS
"${CAPNPROTO_SOURCE_DIR}/kj/parse/char.c++"
)

add_library(kj ${KJ_SRCS})
target_include_directories(kj SYSTEM PUBLIC ${CAPNPROTO_SOURCE_DIR})
add_library(_kj ${KJ_SRCS})
target_include_directories(_kj SYSTEM PUBLIC ${CAPNPROTO_SOURCE_DIR})

set (CAPNP_SRCS
"${CAPNPROTO_SOURCE_DIR}/capnp/c++.capnp.c++"
Expand All @@ -58,11 +58,11 @@ set (CAPNP_SRCS
"${CAPNPROTO_SOURCE_DIR}/capnp/stringify.c++"
)

add_library(capnp ${CAPNP_SRCS})
set_target_properties(capnp
add_library(_capnp ${CAPNP_SRCS})
set_target_properties(_capnp
PROPERTIES LINKER_LANGUAGE CXX
)
target_link_libraries(capnp PUBLIC kj)
target_link_libraries(_capnp PUBLIC _kj)

set (CAPNPC_SRCS
"${CAPNPROTO_SOURCE_DIR}/capnp/compiler/type-id.c++"
Expand All @@ -78,8 +78,8 @@ set (CAPNPC_SRCS
"${CAPNPROTO_SOURCE_DIR}/capnp/serialize-text.c++"
)

add_library(capnpc ${CAPNPC_SRCS})
target_link_libraries(capnpc PUBLIC capnp)
add_library(_capnpc ${CAPNPC_SRCS})
target_link_libraries(_capnpc PUBLIC _capnp)

# The library has substandard code
if (COMPILER_GCC)
Expand All @@ -89,8 +89,8 @@ elseif (COMPILER_CLANG)
set (CAPNP_PRIVATE_CXX_FLAGS -fno-char8_t)
endif ()

target_compile_options(kj PRIVATE ${SUPPRESS_WARNINGS} ${CAPNP_PRIVATE_CXX_FLAGS})
target_compile_options(capnp PRIVATE ${SUPPRESS_WARNINGS} ${CAPNP_PRIVATE_CXX_FLAGS})
target_compile_options(capnpc PRIVATE ${SUPPRESS_WARNINGS} ${CAPNP_PRIVATE_CXX_FLAGS})
target_compile_options(_kj PRIVATE ${SUPPRESS_WARNINGS} ${CAPNP_PRIVATE_CXX_FLAGS})
target_compile_options(_capnp PRIVATE ${SUPPRESS_WARNINGS} ${CAPNP_PRIVATE_CXX_FLAGS})
target_compile_options(_capnpc PRIVATE ${SUPPRESS_WARNINGS} ${CAPNP_PRIVATE_CXX_FLAGS})

add_library(ch_contrib::capnp ALIAS capnpc)
add_library(ch_contrib::capnp ALIAS _capnpc)

0 comments on commit e0a7f59

Please sign in to comment.