2016-05-22 13:09:06 +00:00
project ( ClickHouse )
2017-02-22 12:45:02 +00:00
cmake_minimum_required ( VERSION 2.8 )
2016-02-07 21:58:58 +00:00
2017-02-06 15:15:19 +00:00
set ( CMAKE_MODULE_PATH ${ CMAKE_MODULE_PATH } "${ClickHouse_SOURCE_DIR}/cmake/Modules/" )
2017-01-13 11:25:44 +00:00
2016-12-24 01:03:10 +00:00
if ( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
2017-11-16 17:40:54 +00:00
# Require at least gcc 7
if ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7 AND NOT CMAKE_VERSION VERSION_LESS 2.8.9 )
2018-06-03 16:57:52 +00:00
message ( FATAL_ERROR "GCC version must be at least 7. For example, if GCC 7 is available under gcc-7, g++-7 names, do the following: export CC=gcc-7 CXX=g++-7; rm -rf CMakeCache.txt CMakeFiles; and re run cmake or ./release." )
2017-04-01 07:20:54 +00:00
endif ( )
2016-12-24 01:03:10 +00:00
elseif ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
2017-12-03 02:59:59 +00:00
# Require at least clang 5
if ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5 )
2018-06-03 16:57:52 +00:00
message ( FATAL_ERROR "Clang version must be at least 5." )
2017-04-01 07:20:54 +00:00
endif ( )
2016-12-01 22:44:59 +00:00
else ( )
2018-06-03 16:57:52 +00:00
message ( WARNING "You are using an unsupported compiler. Compilation has only been tested with Clang 5+ and GCC 7+." )
endif ( )
2018-06-04 16:08:27 +00:00
# Check that submodules are present only if source was downloaded with git
if ( EXISTS "${ClickHouse_SOURCE_DIR}/.git" AND NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/boost/boost" )
2018-06-03 16:57:52 +00:00
message ( FATAL_ERROR "Submodules are not initialized. Run\n\tgit submodule update --init --recursive" )
2016-12-01 22:44:59 +00:00
endif ( )
2016-05-22 22:41:03 +00:00
2017-09-07 19:13:37 +00:00
# Write compile_commands.json
set ( CMAKE_EXPORT_COMPILE_COMMANDS 1 )
2017-09-09 00:32:34 +00:00
include ( cmake/find_ccache.cmake )
2017-07-26 19:13:53 +00:00
2017-04-12 18:41:53 +00:00
if ( NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "None" )
2017-04-01 07:20:54 +00:00
message ( STATUS "CMAKE_BUILD_TYPE is not set, set to default = RELWITHDEBINFO" )
set ( CMAKE_BUILD_TYPE "RELWITHDEBINFO" )
2016-12-01 22:44:59 +00:00
endif ( )
2017-09-11 15:51:32 +00:00
string ( TOUPPER ${ CMAKE_BUILD_TYPE } CMAKE_BUILD_TYPE_UC )
2016-12-01 22:44:59 +00:00
message ( STATUS "CMAKE_BUILD_TYPE: " ${ CMAKE_BUILD_TYPE } )
2016-02-07 21:58:58 +00:00
2016-07-28 14:14:18 +00:00
# ASan - build type with address sanitizer
# UBSan - build type with undefined behaviour sanitizer
2016-08-23 14:08:47 +00:00
# TSan is not supported due to false positive errors in libstdc++ and necessity to rebuild libstdc++ with TSan
2016-12-01 22:44:59 +00:00
set ( CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Debug;Release;MinSizeRel;ASan;UBSan" CACHE STRING "" FORCE )
2016-02-07 21:58:58 +00:00
2018-02-26 18:34:22 +00:00
include ( cmake/arch.cmake )
2016-02-07 21:58:58 +00:00
2018-06-08 16:26:03 +00:00
if ( CMAKE_GENERATOR STREQUAL "Ninja" )
# Turn on colored output. https://github.com/ninja-build/ninja/wiki/FAQ
2018-07-10 16:34:18 +00:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always" )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always" )
2018-06-08 16:26:03 +00:00
endif ( )
2018-03-02 00:17:25 +00:00
if ( NOT MSVC )
set ( COMMON_WARNING_FLAGS "${COMMON_WARNING_FLAGS} -Wall" ) # -Werror is also added inside directories with our own code.
endif ( )
if ( COMPILER_GCC OR COMPILER_CLANG )
set ( CXX_WARNING_FLAGS "${CXX_WARNING_FLAGS} -Wnon-virtual-dtor" )
endif ( )
2017-12-13 19:07:12 +00:00
if ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
# clang: warning: argument unused during compilation: '-stdlib=libc++'
# clang: warning: argument unused during compilation: '-specs=/usr/share/dpkg/no-pie-compile.specs' [-Wunused-command-line-argument]
2017-12-25 16:01:03 +00:00
set ( COMMON_WARNING_FLAGS "${COMMON_WARNING_FLAGS} -Wno-unused-command-line-argument" )
2017-11-29 15:56:29 +00:00
endif ( )
2016-06-27 06:34:10 +00:00
2018-01-21 20:17:33 +00:00
if ( ARCH_LINUX )
set ( CXX11_ABI "ENABLE" CACHE STRING "Use C++11 ABI: DEFAULT, ENABLE, DISABLE" )
endif ( )
2016-12-09 15:39:50 +00:00
option ( TEST_COVERAGE "Enables flags for test coverage" OFF )
2018-03-02 00:17:25 +00:00
option ( ENABLE_TESTS "Enables tests" ${ NOT_MSVC } )
2016-06-27 06:34:10 +00:00
2016-12-09 15:39:50 +00:00
option ( USE_STATIC_LIBRARIES "Set to FALSE to use shared libraries" ON )
2017-03-27 12:26:24 +00:00
option ( MAKE_STATIC_LIBRARIES "Set to FALSE to make shared libraries" ${ USE_STATIC_LIBRARIES } )
2017-11-17 19:19:49 +00:00
if ( NOT MAKE_STATIC_LIBRARIES )
2017-11-19 19:55:38 +00:00
option ( SPLIT_SHARED_LIBRARIES "DEV ONLY. Keep all internal libs as separate .so for faster linking" OFF )
2017-12-09 21:55:10 +00:00
option ( CLICKHOUSE_SPLIT_BINARY "Make several binaries instead one bundled (clickhouse-server, clickhouse-client, ... )" OFF )
2017-11-17 19:19:49 +00:00
endif ( )
2017-12-09 21:55:10 +00:00
2017-11-17 19:19:49 +00:00
if ( SPLIT_SHARED_LIBRARIES )
set ( SPLIT_SHARED SHARED )
endif ( )
2017-01-27 20:00:02 +00:00
if ( USE_STATIC_LIBRARIES )
2017-04-01 07:20:54 +00:00
list ( REVERSE CMAKE_FIND_LIBRARY_SUFFIXES )
2016-12-01 22:44:59 +00:00
endif ( )
2016-06-27 06:34:10 +00:00
2017-11-24 18:08:01 +00:00
if ( CMAKE_LIBRARY_ARCHITECTURE MATCHES "amd64.*|x86_64.*|AMD64.*" )
2017-09-16 22:41:20 +00:00
option ( USE_INTERNAL_MEMCPY "Use internal implementation of 'memcpy' function instead of provided by libc. Only for x86_64." ON )
2018-01-21 20:17:33 +00:00
if ( ARCH_LINUX )
2017-09-16 22:41:20 +00:00
option ( GLIBC_COMPATIBILITY "Set to TRUE to enable compatibility with older glibc libraries. Only for x86_64, Linux. Implies USE_INTERNAL_MEMCPY." ON )
endif ( )
endif ( )
2017-01-18 12:41:47 +00:00
2016-06-27 06:34:10 +00:00
if ( GLIBC_COMPATIBILITY )
2017-09-15 05:27:09 +00:00
set ( USE_INTERNAL_MEMCPY ON )
2016-12-01 22:44:59 +00:00
endif ( )
2016-06-27 06:34:10 +00:00
2016-12-24 01:03:10 +00:00
if ( CXX11_ABI STREQUAL ENABLE )
2017-04-01 07:20:54 +00:00
set ( CXX11_ABI_FLAGS "-D_GLIBCXX_USE_CXX11_ABI=1" )
2016-12-24 01:03:10 +00:00
elseif ( CXX11_ABI STREQUAL DISABLE )
2017-04-01 07:20:54 +00:00
set ( CXX11_ABI_FLAGS "-D_GLIBCXX_USE_CXX11_ABI=0" )
2016-12-08 06:34:16 +00:00
else ( )
2017-04-01 07:20:54 +00:00
set ( CXX11_ABI_FLAGS "" )
2016-12-01 22:44:59 +00:00
endif ( )
2016-06-27 06:34:10 +00:00
2018-06-08 16:26:03 +00:00
set ( COMPILER_FLAGS "${COMPILER_FLAGS} ${CXX11_ABI_FLAGS}" )
2017-01-17 14:03:37 +00:00
2018-02-26 18:34:22 +00:00
string ( REGEX MATCH "-?[0-9]+(.[0-9]+)?$" COMPILER_POSTFIX ${ CMAKE_CXX_COMPILER } )
find_program ( LLD_PATH NAMES "lld${COMPILER_POSTFIX}" "lld" )
find_program ( GOLD_PATH NAMES "gold" )
2017-11-12 12:58:40 +00:00
2017-12-20 19:08:43 +00:00
if ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND LLD_PATH AND NOT LINKER_NAME )
2017-11-12 16:45:30 +00:00
set ( LINKER_NAME "lld" )
elseif ( GOLD_PATH )
set ( LINKER_NAME "gold" )
endif ( )
if ( LINKER_NAME )
2018-02-26 18:34:22 +00:00
message ( STATUS "Using linker: ${LINKER_NAME} (selected from: LLD_PATH=${LLD_PATH}; GOLD_PATH=${GOLD_PATH}; COMPILER_POSTFIX=${COMPILER_POSTFIX})" )
set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=${LINKER_NAME}" )
2017-11-12 12:58:40 +00:00
endif ( )
2017-01-17 14:03:37 +00:00
option ( PIPE "-pipe compiler option [less /tmp usage, more ram usage]" ON )
if ( PIPE )
2017-09-09 00:06:06 +00:00
set ( COMPILER_FLAGS "${COMPILER_FLAGS} -pipe" )
2017-01-17 14:03:37 +00:00
endif ( )
2017-01-27 19:55:33 +00:00
include ( cmake/test_cpu.cmake )
option ( ARCHNATIVE "Enable -march=native compiler flag" OFF )
if ( ARCHNATIVE )
2017-09-09 00:06:06 +00:00
set ( COMPILER_FLAGS "${COMPILER_FLAGS} -march=native" )
endif ( )
2017-09-15 10:12:50 +00:00
# Special options for better optimized code with clang
2017-09-16 22:33:05 +00:00
#if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -Wno-unused-command-line-argument -mllvm -inline-threshold=10000")
#endif ()
2017-09-15 10:12:50 +00:00
2017-11-02 21:30:27 +00:00
if ( CMAKE_VERSION VERSION_LESS "3.8.0" )
2018-05-25 18:13:48 +00:00
if ( NOT MSVC )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1z" )
endif ( )
2017-11-02 21:30:27 +00:00
else ( )
set ( CMAKE_CXX_STANDARD 17 )
2017-12-08 08:28:08 +00:00
set ( CMAKE_CXX_EXTENSIONS 0 ) # https://cmake.org/cmake/help/latest/prop_tgt/CXX_EXTENSIONS.html#prop_tgt:CXX_EXTENSIONS
2017-11-02 21:30:27 +00:00
set ( CMAKE_CXX_STANDARD_REQUIRED ON )
2017-12-01 18:58:18 +00:00
set ( CXX_FLAGS_INTERNAL_COMPILER "-std=c++1z" )
2017-11-02 21:30:27 +00:00
endif ( )
2016-12-01 22:44:59 +00:00
set ( CMAKE_BUILD_COLOR_MAKEFILE ON )
2017-11-02 21:30:27 +00:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILER_FLAGS} ${PLATFORM_EXTRA_CXX_FLAG} -fno-omit-frame-pointer ${COMMON_WARNING_FLAGS} ${CXX_WARNING_FLAGS} ${GLIBC_COMPATIBILITY_COMPILE_FLAGS}" )
2018-01-15 18:57:10 +00:00
#set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS_ADD}")
set ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 ${CMAKE_CXX_FLAGS_ADD}" )
set ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g3 -ggdb3 -fno-inline ${CMAKE_CXX_FLAGS_ADD}" )
2016-07-28 14:14:18 +00:00
2018-01-15 18:57:10 +00:00
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMPILER_FLAGS} -fno-omit-frame-pointer ${COMMON_WARNING_FLAGS} ${GLIBC_COMPATIBILITY_COMPILE_FLAGS} ${CMAKE_C_FLAGS_ADD}" )
#set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${CMAKE_C_FLAGS_ADD}")
set ( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O3 ${CMAKE_C_FLAGS_ADD}" )
set ( CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g3 -ggdb3 -fno-inline ${CMAKE_C_FLAGS_ADD}" )
2016-08-25 14:58:01 +00:00
2018-01-20 23:23:19 +00:00
if ( MAKE_STATIC_LIBRARIES AND NOT APPLE AND NOT ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND ARCH_FREEBSD ) )
2017-11-24 22:48:34 +00:00
set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++" )
2016-12-24 01:03:10 +00:00
endif ( )
2017-11-27 21:13:55 +00:00
set ( THREADS_PREFER_PTHREAD_FLAG ON )
2017-11-27 20:14:16 +00:00
include ( cmake/test_compiler.cmake )
2018-01-21 20:17:33 +00:00
if ( ARCH_LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
2017-04-01 07:20:54 +00:00
set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GLIBC_COMPATIBILITY_LINK_FLAGS} ${CXX11_ABI_FLAGS}" )
2017-09-09 00:06:06 +00:00
2017-11-27 20:14:16 +00:00
option ( USE_LIBCXX "Use libc++ and libc++abi instead of libstdc++ (only make sense on Linux with Clang)" ${ HAVE_LIBCXX } )
2018-03-03 19:44:32 +00:00
set ( LIBCXX_PATH "" CACHE STRING "Use custom path for libc++. It should be used for MSan." )
2017-11-24 22:48:34 +00:00
if ( USE_LIBCXX )
2017-11-27 20:39:06 +00:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++" ) # Ok for clang6, for older can cause 'not used option' warning
2017-12-07 00:31:46 +00:00
set ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_LIBCPP_DEBUG=0" ) # More checks in debug build.
2017-11-27 20:14:16 +00:00
if ( MAKE_STATIC_LIBRARIES )
link_libraries ( -Wl,-Bstatic -stdlib=libc++ c++ c++abi -Wl,-Bdynamic )
else ( )
link_libraries ( -stdlib=libc++ c++ c++abi )
2017-11-24 22:48:34 +00:00
endif ( )
2018-03-03 19:44:32 +00:00
if ( LIBCXX_PATH )
# include_directories (BEFORE SYSTEM "${LIBCXX_PATH}/include" "${LIBCXX_PATH}/include/c++/v1")
link_directories ( "${LIBCXX_PATH}/lib" )
endif ( )
2017-09-09 00:06:06 +00:00
endif ( )
2016-12-06 16:51:34 +00:00
endif ( )
2016-02-07 21:58:58 +00:00
2017-01-30 13:40:04 +00:00
if ( USE_STATIC_LIBRARIES AND HAVE_NO_PIE )
2017-04-01 07:20:54 +00:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG_NO_PIE}" )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAG_NO_PIE}" )
2017-01-13 20:11:21 +00:00
endif ( )
2017-03-27 12:26:24 +00:00
if ( NOT MAKE_STATIC_LIBRARIES )
2017-04-01 07:20:54 +00:00
set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
2017-02-08 18:53:00 +00:00
endif ( )
2018-02-26 18:34:22 +00:00
include ( cmake/sanitize.cmake )
2017-12-13 19:48:57 +00:00
2017-09-10 06:51:27 +00:00
# Using "include-what-you-use" tool.
option ( USE_INCLUDE_WHAT_YOU_USE "Use 'include-what-you-use' tool" OFF )
if ( USE_INCLUDE_WHAT_YOU_USE )
find_program ( IWYU_PATH NAMES include-what-you-use iwyu )
if ( NOT IWYU_PATH )
message ( FATAL_ERROR "Could not find the program include-what-you-use" )
endif ( )
if ( ${ CMAKE_VERSION } VERSION_LESS "3.3.0" )
message ( FATAL_ERROR "include-what-you-use requires CMake version at least 3.3." )
endif ( )
endif ( )
2016-12-01 22:44:59 +00:00
# Flags for test coverage
if ( TEST_COVERAGE )
2017-04-01 07:20:54 +00:00
set ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage -DIS_DEBUG" )
2016-12-01 22:44:59 +00:00
endif ( TEST_COVERAGE )
if ( ENABLE_TESTS )
2017-04-01 07:20:54 +00:00
message ( STATUS "Tests are enabled" )
enable_testing ( )
2017-04-10 17:43:30 +00:00
endif ( )
2016-12-01 22:44:59 +00:00
2017-04-05 12:19:05 +00:00
# when installing to /usr - place configs to /etc but for /usr/local place to /usr/local/etc
2017-04-12 18:41:53 +00:00
if ( CMAKE_INSTALL_PREFIX STREQUAL "/usr" )
set ( CLICKHOUSE_ETC_DIR "/etc" )
2017-01-12 13:51:30 +00:00
else ( )
2017-04-12 18:41:53 +00:00
set ( CLICKHOUSE_ETC_DIR "${CMAKE_INSTALL_PREFIX}/etc" )
2016-12-24 01:03:10 +00:00
endif ( )
2017-02-28 23:49:04 +00:00
option ( UNBUNDLED "Try find all libraries in system (if fail - use bundled from contrib/)" OFF )
if ( UNBUNDLED )
2017-04-01 07:20:54 +00:00
set ( NOT_UNBUNDLED 0 )
2017-02-28 23:49:04 +00:00
else ( )
2017-04-01 07:20:54 +00:00
set ( NOT_UNBUNDLED 1 )
2017-02-28 23:49:04 +00:00
endif ( )
2017-09-15 07:24:53 +00:00
# Using system libs can cause lot of warnings in includes.
2018-01-21 20:17:33 +00:00
if ( UNBUNDLED OR NOT ( ARCH_LINUX OR APPLE ) OR ARCH_32 )
2017-06-23 14:41:07 +00:00
option ( NO_WERROR "Disable -Werror compiler option" ON )
endif ( )
2017-02-28 23:49:04 +00:00
2017-09-09 00:32:34 +00:00
message ( STATUS "Building for: ${CMAKE_SYSTEM} ${CMAKE_SYSTEM_PROCESSOR} ${CMAKE_LIBRARY_ARCHITECTURE} ; USE_STATIC_LIBRARIES=${USE_STATIC_LIBRARIES} MAKE_STATIC_LIBRARIES=${MAKE_STATIC_LIBRARIES} UNBUNDLED=${UNBUNDLED} CCACHE=${CCACHE_FOUND} ${CCACHE_VERSION}" )
2017-02-28 23:49:04 +00:00
2017-04-10 17:43:30 +00:00
include ( GNUInstallDirs )
2018-03-02 00:17:25 +00:00
include ( cmake/find_ssl.cmake )
2017-04-19 00:21:16 +00:00
if ( NOT OPENSSL_FOUND )
message ( FATAL_ERROR "Need openssl for build. debian tip: sudo apt install libssl-dev" )
endif ( )
2017-08-09 20:52:55 +00:00
include ( cmake/lib_name.cmake )
2017-01-25 18:19:15 +00:00
include ( cmake/find_icu4c.cmake )
2016-12-06 13:35:28 +00:00
include ( cmake/find_boost.cmake )
2017-04-19 00:21:16 +00:00
# openssl, zlib before poco
2017-02-07 21:28:13 +00:00
include ( cmake/find_zlib.cmake )
2017-02-28 23:49:04 +00:00
include ( cmake/find_zstd.cmake )
2018-01-15 18:57:10 +00:00
include ( cmake/find_ltdl.cmake ) # for odbc
2018-05-11 14:16:16 +00:00
include ( cmake/find_termcap.cmake )
2018-01-19 13:50:46 +00:00
if ( EXISTS ${ CMAKE_CURRENT_SOURCE_DIR } /contrib/poco/cmake/FindODBC.cmake )
include ( ${ CMAKE_CURRENT_SOURCE_DIR } /contrib/poco/cmake/FindODBC.cmake ) # for poco
2018-01-20 02:35:16 +00:00
else ( )
include ( cmake/find_odbc.cmake )
2018-01-18 18:26:36 +00:00
endif ( )
2018-04-09 13:52:39 +00:00
message ( STATUS "Using odbc: ${ODBC_INCLUDE_DIRECTORIES} : ${ODBC_LIBRARIES}" )
2017-01-13 11:25:44 +00:00
include ( cmake/find_poco.cmake )
2017-02-28 23:49:04 +00:00
include ( cmake/find_lz4.cmake )
include ( cmake/find_sparsehash.cmake )
2016-12-06 18:04:10 +00:00
include ( cmake/find_rt.cmake )
2017-12-13 19:07:12 +00:00
include ( cmake/find_execinfo.cmake )
2017-01-25 18:19:15 +00:00
include ( cmake/find_readline_edit.cmake )
2017-02-28 23:49:04 +00:00
include ( cmake/find_re2.cmake )
2017-10-06 04:40:18 +00:00
include ( cmake/find_rdkafka.cmake )
2017-10-04 00:00:22 +00:00
include ( cmake/find_capnp.cmake )
2017-11-12 12:58:40 +00:00
include ( cmake/find_llvm.cmake )
2018-06-21 17:35:03 +00:00
include ( cmake/find_cpuid.cmake )
2018-07-20 23:44:31 +00:00
if ( ENABLE_TESTS )
include ( cmake/find_gtest.cmake )
endif ( )
2017-08-09 20:52:55 +00:00
include ( cmake/find_contrib_lib.cmake )
find_contrib_lib ( cityhash )
find_contrib_lib ( farmhash )
find_contrib_lib ( metrohash )
2018-07-30 12:19:22 +00:00
find_contrib_lib ( murmurhash2 )
2017-08-09 20:52:55 +00:00
find_contrib_lib ( btrie )
find_contrib_lib ( double-conversion )
2017-06-23 14:41:07 +00:00
# Need to process before "contrib" dir:
2017-10-24 19:18:15 +00:00
include ( libs/libcommon/cmake/find_gperftools.cmake )
2017-03-16 15:04:05 +00:00
include ( libs/libcommon/cmake/find_jemalloc.cmake )
2017-06-23 14:41:07 +00:00
include ( libs/libcommon/cmake/find_cctz.cmake )
2017-04-19 00:25:57 +00:00
include ( libs/libmysqlxx/cmake/find_mysqlclient.cmake )
2017-06-23 14:41:07 +00:00
include ( libs/libdaemon/cmake/find_unwind.cmake )
2018-02-26 18:34:22 +00:00
include ( cmake/print_flags.cmake )
2017-01-25 22:24:36 +00:00
2017-01-16 19:47:11 +00:00
# Directory for Yandex specific files
set ( CLICKHOUSE_PRIVATE_DIR ${ ClickHouse_SOURCE_DIR } /private/ )
2016-12-01 22:44:59 +00:00
if ( EXISTS ${ CLICKHOUSE_PRIVATE_DIR } )
2017-04-01 07:20:54 +00:00
add_subdirectory ( ${ CLICKHOUSE_PRIVATE_DIR } )
2016-12-01 22:44:59 +00:00
endif ( )
2016-06-27 08:13:54 +00:00
2017-01-18 14:03:30 +00:00
add_subdirectory ( contrib )
add_subdirectory ( libs )
add_subdirectory ( utils )
add_subdirectory ( dbms )
2016-12-06 18:04:10 +00:00
include ( cmake/print_include_directories.cmake )