2020-05-18 09:19:50 +08:00
|
|
|
if (USE_CLANG_TIDY)
|
|
|
|
set (CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_PATH}")
|
|
|
|
endif ()
|
|
|
|
|
2017-06-17 00:20:51 +08:00
|
|
|
# 'clickhouse' binary is a multi purpose tool,
|
|
|
|
# that contain multiple execution modes (client, server, etc.)
|
|
|
|
# each of them is built and linked as a separate library, defined below.
|
|
|
|
|
2018-02-16 04:57:08 +08:00
|
|
|
option (ENABLE_CLICKHOUSE_ALL "Enable all tools" ON)
|
2018-06-16 08:27:59 +08:00
|
|
|
option (ENABLE_CLICKHOUSE_SERVER "Enable clickhouse-server" ${ENABLE_CLICKHOUSE_ALL})
|
|
|
|
option (ENABLE_CLICKHOUSE_CLIENT "Enable clickhouse-client" ${ENABLE_CLICKHOUSE_ALL})
|
|
|
|
option (ENABLE_CLICKHOUSE_LOCAL "Enable clickhouse-local" ${ENABLE_CLICKHOUSE_ALL})
|
|
|
|
option (ENABLE_CLICKHOUSE_BENCHMARK "Enable clickhouse-benchmark" ${ENABLE_CLICKHOUSE_ALL})
|
|
|
|
option (ENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG "Enable clickhouse-extract-from-config" ${ENABLE_CLICKHOUSE_ALL})
|
|
|
|
option (ENABLE_CLICKHOUSE_COMPRESSOR "Enable clickhouse-compressor" ${ENABLE_CLICKHOUSE_ALL})
|
|
|
|
option (ENABLE_CLICKHOUSE_COPIER "Enable clickhouse-copier" ${ENABLE_CLICKHOUSE_ALL})
|
|
|
|
option (ENABLE_CLICKHOUSE_FORMAT "Enable clickhouse-format" ${ENABLE_CLICKHOUSE_ALL})
|
|
|
|
option (ENABLE_CLICKHOUSE_OBFUSCATOR "Enable clickhouse-obfuscator" ${ENABLE_CLICKHOUSE_ALL})
|
2018-08-08 01:57:44 +08:00
|
|
|
option (ENABLE_CLICKHOUSE_ODBC_BRIDGE "Enable clickhouse-odbc-bridge" ${ENABLE_CLICKHOUSE_ALL})
|
2020-08-10 04:10:51 +08:00
|
|
|
|
|
|
|
if (CLICKHOUSE_SPLIT_BINARY)
|
|
|
|
option (ENABLE_CLICKHOUSE_INSTALL "Enable clickhouse-install" OFF)
|
|
|
|
else ()
|
|
|
|
option (ENABLE_CLICKHOUSE_INSTALL "Enable clickhouse-install" ${ENABLE_CLICKHOUSE_ALL})
|
|
|
|
endif ()
|
2018-08-08 01:57:44 +08:00
|
|
|
|
2019-03-05 01:47:31 +08:00
|
|
|
if(NOT (MAKE_STATIC_LIBRARIES OR SPLIT_SHARED_LIBRARIES))
|
|
|
|
set(CLICKHOUSE_ONE_SHARED 1)
|
|
|
|
endif()
|
|
|
|
|
2019-12-15 14:34:43 +08:00
|
|
|
configure_file (config_tools.h.in ${ConfigIncludePath}/config_tools.h)
|
2018-02-16 04:57:08 +08:00
|
|
|
|
2019-03-05 01:47:31 +08:00
|
|
|
|
|
|
|
macro(clickhouse_target_link_split_lib target name)
|
|
|
|
if(NOT CLICKHOUSE_ONE_SHARED)
|
2019-09-30 19:58:32 +08:00
|
|
|
target_link_libraries(${target} PRIVATE clickhouse-${name}-lib)
|
2019-03-05 01:47:31 +08:00
|
|
|
else()
|
2019-09-30 19:58:32 +08:00
|
|
|
target_link_libraries(${target} PRIVATE clickhouse-lib)
|
2019-03-05 01:47:31 +08:00
|
|
|
endif()
|
|
|
|
endmacro()
|
|
|
|
|
|
|
|
macro(clickhouse_program_link_split_binary name)
|
|
|
|
clickhouse_target_link_split_lib(clickhouse-${name} ${name})
|
|
|
|
endmacro()
|
|
|
|
|
|
|
|
macro(clickhouse_program_add_library name)
|
|
|
|
string(TOUPPER ${name} name_uc)
|
|
|
|
string(REPLACE "-" "_" name_uc ${name_uc})
|
|
|
|
|
|
|
|
# Some dark magic
|
|
|
|
set(CLICKHOUSE_${name_uc}_SOURCES ${CLICKHOUSE_${name_uc}_SOURCES} PARENT_SCOPE)
|
|
|
|
set(CLICKHOUSE_${name_uc}_LINK ${CLICKHOUSE_${name_uc}_LINK} PARENT_SCOPE)
|
|
|
|
set(CLICKHOUSE_${name_uc}_INCLUDE ${CLICKHOUSE_${name_uc}_INCLUDE} PARENT_SCOPE)
|
|
|
|
|
|
|
|
if(NOT CLICKHOUSE_ONE_SHARED)
|
2019-04-24 17:06:28 +08:00
|
|
|
add_library(clickhouse-${name}-lib ${CLICKHOUSE_${name_uc}_SOURCES})
|
2019-03-05 01:47:31 +08:00
|
|
|
|
|
|
|
set(_link ${CLICKHOUSE_${name_uc}_LINK}) # can't use ${} in if()
|
|
|
|
if(_link)
|
|
|
|
target_link_libraries(clickhouse-${name}-lib ${CLICKHOUSE_${name_uc}_LINK})
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(_include ${CLICKHOUSE_${name_uc}_INCLUDE}) # can't use ${} in if()
|
|
|
|
if (_include)
|
|
|
|
target_include_directories(clickhouse-${name}-lib ${CLICKHOUSE_${name_uc}_INCLUDE})
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endmacro()
|
|
|
|
|
|
|
|
macro(clickhouse_program_add_executable name)
|
|
|
|
if(CLICKHOUSE_SPLIT_BINARY)
|
|
|
|
add_executable(clickhouse-${name} clickhouse-${name}.cpp)
|
|
|
|
clickhouse_program_link_split_binary(${name})
|
|
|
|
install(TARGETS clickhouse-${name} ${CLICKHOUSE_ALL_TARGETS} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse)
|
|
|
|
endif()
|
|
|
|
endmacro()
|
|
|
|
|
|
|
|
macro(clickhouse_program_add name)
|
|
|
|
clickhouse_program_add_library(${name})
|
|
|
|
clickhouse_program_add_executable(${name})
|
|
|
|
endmacro()
|
|
|
|
|
|
|
|
|
2018-06-06 04:09:51 +08:00
|
|
|
add_subdirectory (server)
|
|
|
|
add_subdirectory (client)
|
|
|
|
add_subdirectory (local)
|
|
|
|
add_subdirectory (benchmark)
|
|
|
|
add_subdirectory (extract-from-config)
|
|
|
|
add_subdirectory (compressor)
|
|
|
|
add_subdirectory (copier)
|
|
|
|
add_subdirectory (format)
|
2018-06-16 08:27:59 +08:00
|
|
|
add_subdirectory (obfuscator)
|
2020-08-09 02:38:34 +08:00
|
|
|
add_subdirectory (install)
|
2018-12-15 03:28:37 +08:00
|
|
|
|
|
|
|
if (ENABLE_CLICKHOUSE_ODBC_BRIDGE)
|
|
|
|
add_subdirectory (odbc-bridge)
|
|
|
|
endif ()
|
2017-11-13 01:08:52 +08:00
|
|
|
|
2019-03-05 01:47:31 +08:00
|
|
|
if (CLICKHOUSE_ONE_SHARED)
|
2020-03-21 21:23:17 +08:00
|
|
|
add_library(clickhouse-lib SHARED ${CLICKHOUSE_SERVER_SOURCES} ${CLICKHOUSE_CLIENT_SOURCES} ${CLICKHOUSE_LOCAL_SOURCES} ${CLICKHOUSE_BENCHMARK_SOURCES} ${CLICKHOUSE_COPIER_SOURCES} ${CLICKHOUSE_EXTRACT_FROM_CONFIG_SOURCES} ${CLICKHOUSE_COMPRESSOR_SOURCES} ${CLICKHOUSE_FORMAT_SOURCES} ${CLICKHOUSE_OBFUSCATOR_SOURCES} ${CLICKHOUSE_ODBC_BRIDGE_SOURCES})
|
|
|
|
target_link_libraries(clickhouse-lib ${CLICKHOUSE_SERVER_LINK} ${CLICKHOUSE_CLIENT_LINK} ${CLICKHOUSE_LOCAL_LINK} ${CLICKHOUSE_BENCHMARK_LINK} ${CLICKHOUSE_COPIER_LINK} ${CLICKHOUSE_EXTRACT_FROM_CONFIG_LINK} ${CLICKHOUSE_COMPRESSOR_LINK} ${CLICKHOUSE_FORMAT_LINK} ${CLICKHOUSE_OBFUSCATOR_LINK} ${CLICKHOUSE_ODBC_BRIDGE_LINK})
|
|
|
|
target_include_directories(clickhouse-lib ${CLICKHOUSE_SERVER_INCLUDE} ${CLICKHOUSE_CLIENT_INCLUDE} ${CLICKHOUSE_LOCAL_INCLUDE} ${CLICKHOUSE_BENCHMARK_INCLUDE} ${CLICKHOUSE_COPIER_INCLUDE} ${CLICKHOUSE_EXTRACT_FROM_CONFIG_INCLUDE} ${CLICKHOUSE_COMPRESSOR_INCLUDE} ${CLICKHOUSE_FORMAT_INCLUDE} ${CLICKHOUSE_OBFUSCATOR_INCLUDE} ${CLICKHOUSE_ODBC_BRIDGE_INCLUDE})
|
2019-03-15 19:36:59 +08:00
|
|
|
set_target_properties(clickhouse-lib PROPERTIES SOVERSION ${VERSION_MAJOR}.${VERSION_MINOR} VERSION ${VERSION_SO} OUTPUT_NAME clickhouse DEBUG_POSTFIX "")
|
2019-03-27 23:05:05 +08:00
|
|
|
install (TARGETS clickhouse-lib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT clickhouse)
|
2019-03-05 01:47:31 +08:00
|
|
|
endif()
|
|
|
|
|
2017-12-10 05:55:10 +08:00
|
|
|
if (CLICKHOUSE_SPLIT_BINARY)
|
2020-03-21 21:23:17 +08:00
|
|
|
set (CLICKHOUSE_ALL_TARGETS clickhouse-server clickhouse-client clickhouse-local clickhouse-benchmark clickhouse-extract-from-config clickhouse-compressor clickhouse-format clickhouse-obfuscator clickhouse-copier)
|
2018-12-15 03:28:37 +08:00
|
|
|
|
|
|
|
if (ENABLE_CLICKHOUSE_ODBC_BRIDGE)
|
|
|
|
list (APPEND CLICKHOUSE_ALL_TARGETS clickhouse-odbc-bridge)
|
|
|
|
endif ()
|
2017-12-14 03:07:12 +08:00
|
|
|
|
2018-06-20 02:09:09 +08:00
|
|
|
set_target_properties(${CLICKHOUSE_ALL_TARGETS} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ..)
|
|
|
|
|
2017-12-14 03:07:12 +08:00
|
|
|
add_custom_target (clickhouse-bundle ALL DEPENDS ${CLICKHOUSE_ALL_TARGETS})
|
2017-12-16 03:34:19 +08:00
|
|
|
add_custom_target (clickhouse ALL DEPENDS clickhouse-bundle)
|
2019-03-12 02:03:32 +08:00
|
|
|
|
2019-03-12 21:29:35 +08:00
|
|
|
install(PROGRAMS clickhouse-split-helper DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME clickhouse COMPONENT clickhouse)
|
2017-12-10 05:55:10 +08:00
|
|
|
else ()
|
2017-12-11 20:38:34 +08:00
|
|
|
add_executable (clickhouse main.cpp)
|
2019-09-30 19:58:32 +08:00
|
|
|
target_link_libraries (clickhouse PRIVATE clickhouse_common_io string_utils)
|
2018-02-16 04:57:08 +08:00
|
|
|
target_include_directories (clickhouse PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
2017-12-28 20:58:39 +08:00
|
|
|
|
2018-02-16 04:57:08 +08:00
|
|
|
if (ENABLE_CLICKHOUSE_SERVER)
|
2019-03-12 02:03:32 +08:00
|
|
|
clickhouse_target_link_split_lib(clickhouse server)
|
2018-02-16 04:57:08 +08:00
|
|
|
endif ()
|
|
|
|
if (ENABLE_CLICKHOUSE_CLIENT)
|
2019-03-12 02:03:32 +08:00
|
|
|
clickhouse_target_link_split_lib(clickhouse client)
|
2018-02-16 04:57:08 +08:00
|
|
|
endif ()
|
|
|
|
if (ENABLE_CLICKHOUSE_LOCAL)
|
2019-03-12 02:03:32 +08:00
|
|
|
clickhouse_target_link_split_lib(clickhouse local)
|
2018-02-16 04:57:08 +08:00
|
|
|
endif ()
|
|
|
|
if (ENABLE_CLICKHOUSE_BENCHMARK)
|
2019-03-12 02:03:32 +08:00
|
|
|
clickhouse_target_link_split_lib(clickhouse benchmark)
|
2018-02-16 04:57:08 +08:00
|
|
|
endif ()
|
|
|
|
if (ENABLE_CLICKHOUSE_COPIER)
|
2019-03-12 02:03:32 +08:00
|
|
|
clickhouse_target_link_split_lib(clickhouse copier)
|
2018-02-16 04:57:08 +08:00
|
|
|
endif ()
|
2018-06-06 04:09:51 +08:00
|
|
|
if (ENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG)
|
2019-03-12 02:03:32 +08:00
|
|
|
clickhouse_target_link_split_lib(clickhouse extract-from-config)
|
2018-06-06 04:09:51 +08:00
|
|
|
endif ()
|
|
|
|
if (ENABLE_CLICKHOUSE_COMPRESSOR)
|
2019-03-12 02:03:32 +08:00
|
|
|
clickhouse_target_link_split_lib(clickhouse compressor)
|
2018-06-06 04:09:51 +08:00
|
|
|
endif ()
|
|
|
|
if (ENABLE_CLICKHOUSE_FORMAT)
|
2019-03-12 02:03:32 +08:00
|
|
|
clickhouse_target_link_split_lib(clickhouse format)
|
2018-06-06 04:09:51 +08:00
|
|
|
endif ()
|
2018-06-16 08:27:59 +08:00
|
|
|
if (ENABLE_CLICKHOUSE_OBFUSCATOR)
|
2019-03-12 02:03:32 +08:00
|
|
|
clickhouse_target_link_split_lib(clickhouse obfuscator)
|
2018-06-16 08:27:59 +08:00
|
|
|
endif ()
|
2020-08-09 02:38:34 +08:00
|
|
|
if (ENABLE_CLICKHOUSE_INSTALL)
|
|
|
|
clickhouse_target_link_split_lib(clickhouse install)
|
|
|
|
endif ()
|
2017-11-12 20:58:40 +08:00
|
|
|
|
2018-02-16 04:57:08 +08:00
|
|
|
set (CLICKHOUSE_BUNDLE)
|
|
|
|
if (ENABLE_CLICKHOUSE_SERVER)
|
|
|
|
add_custom_target (clickhouse-server ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-server DEPENDS clickhouse)
|
|
|
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/clickhouse-server DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse)
|
|
|
|
list(APPEND CLICKHOUSE_BUNDLE clickhouse-server)
|
|
|
|
endif ()
|
|
|
|
if (ENABLE_CLICKHOUSE_CLIENT)
|
|
|
|
add_custom_target (clickhouse-client ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-client DEPENDS clickhouse)
|
|
|
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/clickhouse-client DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse)
|
|
|
|
list(APPEND CLICKHOUSE_BUNDLE clickhouse-client)
|
|
|
|
endif ()
|
|
|
|
if (ENABLE_CLICKHOUSE_LOCAL)
|
|
|
|
add_custom_target (clickhouse-local ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-local DEPENDS clickhouse)
|
|
|
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/clickhouse-local DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse)
|
|
|
|
list(APPEND CLICKHOUSE_BUNDLE clickhouse-local)
|
|
|
|
endif ()
|
|
|
|
if (ENABLE_CLICKHOUSE_BENCHMARK)
|
|
|
|
add_custom_target (clickhouse-benchmark ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-benchmark DEPENDS clickhouse)
|
|
|
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/clickhouse-benchmark DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse)
|
|
|
|
list(APPEND CLICKHOUSE_BUNDLE clickhouse-benchmark)
|
|
|
|
endif ()
|
2018-06-16 08:27:59 +08:00
|
|
|
if (ENABLE_CLICKHOUSE_COPIER)
|
|
|
|
add_custom_target (clickhouse-copier ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-copier DEPENDS clickhouse)
|
|
|
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/clickhouse-copier DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse)
|
|
|
|
list(APPEND CLICKHOUSE_BUNDLE clickhouse-copier)
|
|
|
|
endif ()
|
2018-06-06 04:09:51 +08:00
|
|
|
if (ENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG)
|
2018-02-16 04:57:08 +08:00
|
|
|
add_custom_target (clickhouse-extract-from-config ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-extract-from-config DEPENDS clickhouse)
|
2018-06-06 04:09:51 +08:00
|
|
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/clickhouse-extract-from-config DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse)
|
|
|
|
list(APPEND CLICKHOUSE_BUNDLE clickhouse-extract-from-config)
|
|
|
|
endif ()
|
|
|
|
if (ENABLE_CLICKHOUSE_COMPRESSOR)
|
2018-02-16 04:57:08 +08:00
|
|
|
add_custom_target (clickhouse-compressor ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-compressor DEPENDS clickhouse)
|
2018-06-06 04:09:51 +08:00
|
|
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/clickhouse-compressor DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse)
|
|
|
|
list(APPEND CLICKHOUSE_BUNDLE clickhouse-compressor)
|
|
|
|
endif ()
|
|
|
|
if (ENABLE_CLICKHOUSE_FORMAT)
|
2018-02-16 04:57:08 +08:00
|
|
|
add_custom_target (clickhouse-format ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-format DEPENDS clickhouse)
|
2018-06-06 04:09:51 +08:00
|
|
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/clickhouse-format DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse)
|
|
|
|
list(APPEND CLICKHOUSE_BUNDLE clickhouse-format)
|
2018-02-16 04:57:08 +08:00
|
|
|
endif ()
|
2019-02-01 01:18:30 +08:00
|
|
|
if (ENABLE_CLICKHOUSE_OBFUSCATOR)
|
2018-06-16 08:27:59 +08:00
|
|
|
add_custom_target (clickhouse-obfuscator ALL COMMAND ${CMAKE_COMMAND} -E create_symlink clickhouse clickhouse-obfuscator DEPENDS clickhouse)
|
|
|
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/clickhouse-obfuscator DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse)
|
|
|
|
list(APPEND CLICKHOUSE_BUNDLE clickhouse-obfuscator)
|
2018-02-16 04:57:08 +08:00
|
|
|
endif ()
|
2019-05-14 17:58:33 +08:00
|
|
|
if(ENABLE_CLICKHOUSE_ODBC_BRIDGE)
|
|
|
|
list(APPEND CLICKHOUSE_BUNDLE clickhouse-odbc-bridge)
|
|
|
|
endif()
|
2018-06-16 08:27:59 +08:00
|
|
|
|
2017-12-12 01:27:22 +08:00
|
|
|
install (TARGETS clickhouse RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clickhouse)
|
2018-02-16 04:57:08 +08:00
|
|
|
|
|
|
|
add_custom_target (clickhouse-bundle ALL DEPENDS ${CLICKHOUSE_BUNDLE})
|
2018-06-06 04:09:51 +08:00
|
|
|
|
2019-09-17 17:49:27 +08:00
|
|
|
if (USE_GDB_ADD_INDEX)
|
|
|
|
add_custom_command(TARGET clickhouse POST_BUILD COMMAND ${GDB_ADD_INDEX_EXE} clickhouse COMMENT "Adding .gdb-index to clickhouse" VERBATIM)
|
|
|
|
endif()
|
2017-12-10 05:55:10 +08:00
|
|
|
endif ()
|
2018-06-07 03:00:11 +08:00
|
|
|
|
2020-05-21 23:02:52 +08:00
|
|
|
if (ENABLE_TESTS AND USE_GTEST)
|
2020-06-04 16:26:22 +08:00
|
|
|
set (CLICKHOUSE_UNIT_TESTS_TARGETS unit_tests_libcommon unit_tests_dbms)
|
|
|
|
add_custom_target (clickhouse-tests ALL DEPENDS ${CLICKHOUSE_UNIT_TESTS_TARGETS})
|
2020-05-21 23:02:52 +08:00
|
|
|
add_dependencies(clickhouse-bundle clickhouse-tests)
|
|
|
|
endif()
|