mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-28 10:31:57 +00:00
Add separate option to omit symbols from heavy contrib
Sometimes it is useful to build contrib with debug symbols for further debugging. With everything turned ON (i.e. debug build) I got 3.3GB vs 3.0GB w/o this patch, 9% bloat, thoughts about this is this OK or not for you, if not STRIP_DEBUG_SYMBOLS_HEAVY_CONTRIB can be OFF by default (regardless of build type). P.S. aws debug symbols adds just 1.7%. v2: rename STRIP_HEAVY_DEBUG_SYMBOLS v3: OMIT_HEAVY_DEBUG_SYMBOLS v4: documentation had been removed Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
This commit is contained in:
parent
c2486f3637
commit
e8f5cd3c68
@ -223,11 +223,25 @@ if (NOT CMAKE_BUILD_TYPE_UC STREQUAL "RELEASE")
|
|||||||
endif ()
|
endif ()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (CMAKE_BUILD_TYPE_UC STREQUAL "RELEASE"
|
||||||
|
OR CMAKE_BUILD_TYPE_UC STREQUAL "RELWITHDEBINFO"
|
||||||
|
OR CMAKE_BUILD_TYPE_UC STREQUAL "MINSIZEREL")
|
||||||
|
set (OMIT_HEAVY_DEBUG_SYMBOLS_DEFAULT ON)
|
||||||
|
else()
|
||||||
|
set (OMIT_HEAVY_DEBUG_SYMBOLS_DEFAULT OFF)
|
||||||
|
endif()
|
||||||
|
# Provides faster linking and lower binary size.
|
||||||
|
# Tradeoff is the inability to debug some source files with e.g. gdb
|
||||||
|
# (empty stack frames and no local variables)."
|
||||||
|
option(OMIT_HEAVY_DEBUG_SYMBOLS
|
||||||
|
"Do not generate debugger info for heavy modules (ClickHouse functions and dictionaries, some contrib)"
|
||||||
|
${OMIT_HEAVY_DEBUG_SYMBOLS_DEFAULT})
|
||||||
|
|
||||||
if (CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG")
|
if (CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG")
|
||||||
set(USE_DEBUG_HELPERS ON)
|
set(USE_DEBUG_HELPERS ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(USE_DEBUG_HELPERS "Enable debug helpers" ${USE_DEBUG_HELPERS})
|
option(USE_DEBUG_HELPERS "Enable debug helpers" ${USE_DEBUG_HELPERS})
|
||||||
|
|
||||||
option(BUILD_STANDALONE_KEEPER "Build keeper as small standalone binary" OFF)
|
option(BUILD_STANDALONE_KEEPER "Build keeper as small standalone binary" OFF)
|
||||||
if (NOT BUILD_STANDALONE_KEEPER)
|
if (NOT BUILD_STANDALONE_KEEPER)
|
||||||
option(CREATE_KEEPER_SYMLINK "Create symlink for clickhouse-keeper to main server binary" ON)
|
option(CREATE_KEEPER_SYMLINK "Create symlink for clickhouse-keeper to main server binary" ON)
|
||||||
|
@ -462,5 +462,7 @@ foreach (TOOL ${PARQUET_TOOLS})
|
|||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
||||||
# The library is large - avoid bloat.
|
# The library is large - avoid bloat.
|
||||||
|
if (OMIT_HEAVY_DEBUG_SYMBOLS)
|
||||||
target_compile_options (_arrow PRIVATE -g0)
|
target_compile_options (_arrow PRIVATE -g0)
|
||||||
target_compile_options (_parquet PRIVATE -g0)
|
target_compile_options (_parquet PRIVATE -g0)
|
||||||
|
endif()
|
||||||
|
@ -114,7 +114,9 @@ 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.
|
# The library is large - avoid bloat.
|
||||||
|
if (OMIT_HEAVY_DEBUG_SYMBOLS)
|
||||||
target_compile_options (_aws_s3 PRIVATE -g0)
|
target_compile_options (_aws_s3 PRIVATE -g0)
|
||||||
target_compile_options (_aws_s3_checksums PRIVATE -g0)
|
target_compile_options (_aws_s3_checksums PRIVATE -g0)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_library(ch_contrib::aws_s3 ALIAS _aws_s3)
|
add_library(ch_contrib::aws_s3 ALIAS _aws_s3)
|
||||||
|
@ -171,6 +171,8 @@ target_include_directories (_curl SYSTEM PUBLIC
|
|||||||
target_link_libraries (_curl PRIVATE OpenSSL::SSL)
|
target_link_libraries (_curl PRIVATE OpenSSL::SSL)
|
||||||
|
|
||||||
# The library is large - avoid bloat (XXX: is it?)
|
# The library is large - avoid bloat (XXX: is it?)
|
||||||
|
if (OMIT_HEAVY_DEBUG_SYMBOLS)
|
||||||
target_compile_options (_curl PRIVATE -g0)
|
target_compile_options (_curl PRIVATE -g0)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_library (ch_contrib::curl ALIAS _curl)
|
add_library (ch_contrib::curl ALIAS _curl)
|
||||||
|
@ -268,10 +268,13 @@ endif()
|
|||||||
add_library (_vectorscan ${SRCS})
|
add_library (_vectorscan ${SRCS})
|
||||||
|
|
||||||
target_compile_options (_vectorscan PRIVATE
|
target_compile_options (_vectorscan PRIVATE
|
||||||
-g0 # library has too much debug information
|
|
||||||
-fno-sanitize=undefined # assume the library takes care of itself
|
-fno-sanitize=undefined # assume the library takes care of itself
|
||||||
-O2 -fno-strict-aliasing -fno-omit-frame-pointer -fvisibility=hidden # options from original build system
|
-O2 -fno-strict-aliasing -fno-omit-frame-pointer -fvisibility=hidden # options from original build system
|
||||||
)
|
)
|
||||||
|
# library has too much debug information
|
||||||
|
if (OMIT_HEAVY_DEBUG_SYMBOLS)
|
||||||
|
target_compile_options (_vectorscan PRIVATE -g0)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Include version header manually generated by running the original build system
|
# Include version header manually generated by running the original build system
|
||||||
target_include_directories (_vectorscan SYSTEM PRIVATE common)
|
target_include_directories (_vectorscan SYSTEM PRIVATE common)
|
||||||
|
@ -4,8 +4,7 @@ add_headers_and_sources(clickhouse_dictionaries .)
|
|||||||
|
|
||||||
add_headers_and_sources(clickhouse_dictionaries "${CMAKE_CURRENT_BINARY_DIR}/generated/")
|
add_headers_and_sources(clickhouse_dictionaries "${CMAKE_CURRENT_BINARY_DIR}/generated/")
|
||||||
|
|
||||||
if (CMAKE_BUILD_TYPE_UC STREQUAL "RELEASE" OR CMAKE_BUILD_TYPE_UC STREQUAL "RELWITHDEBINFO" OR CMAKE_BUILD_TYPE_UC STREQUAL "MINSIZEREL")
|
if (OMIT_HEAVY_DEBUG_SYMBOLS)
|
||||||
|
|
||||||
# Won't generate debug info for files with heavy template instantiation to achieve faster linking and lower size.
|
# Won't generate debug info for files with heavy template instantiation to achieve faster linking and lower size.
|
||||||
set_source_files_properties(
|
set_source_files_properties(
|
||||||
FlatDictionary.cpp
|
FlatDictionary.cpp
|
||||||
|
@ -35,25 +35,8 @@ if (TARGET OpenSSL::Crypto)
|
|||||||
target_link_libraries(clickhouse_functions PUBLIC OpenSSL::Crypto)
|
target_link_libraries(clickhouse_functions PUBLIC OpenSSL::Crypto)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (CMAKE_BUILD_TYPE_UC STREQUAL "RELEASE"
|
if (OMIT_HEAVY_DEBUG_SYMBOLS)
|
||||||
OR CMAKE_BUILD_TYPE_UC STREQUAL "RELWITHDEBINFO"
|
|
||||||
OR CMAKE_BUILD_TYPE_UC STREQUAL "MINSIZEREL")
|
|
||||||
set (STRIP_DSF_DEFAULT ON)
|
|
||||||
else()
|
|
||||||
set (STRIP_DSF_DEFAULT OFF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
# Provides faster linking and lower binary size.
|
|
||||||
# Tradeoff is the inability to debug some source files with e.g. gdb
|
|
||||||
# (empty stack frames and no local variables)."
|
|
||||||
option(STRIP_DEBUG_SYMBOLS_FUNCTIONS "Do not generate debugger info for ClickHouse functions" ${STRIP_DSF_DEFAULT})
|
|
||||||
|
|
||||||
if (STRIP_DEBUG_SYMBOLS_FUNCTIONS)
|
|
||||||
message(INFO "Not generating debugger info for ClickHouse functions")
|
|
||||||
target_compile_options(clickhouse_functions PRIVATE "-g0")
|
target_compile_options(clickhouse_functions PRIVATE "-g0")
|
||||||
else()
|
|
||||||
message(STATUS "Generating debugger info for ClickHouse functions")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (TARGET ch_contrib::icu)
|
if (TARGET ch_contrib::icu)
|
||||||
|
@ -12,7 +12,7 @@ if (HAS_SUGGEST_DESTRUCTOR_OVERRIDE)
|
|||||||
target_compile_definitions(clickhouse_functions_gatherutils PUBLIC HAS_SUGGEST_DESTRUCTOR_OVERRIDE)
|
target_compile_definitions(clickhouse_functions_gatherutils PUBLIC HAS_SUGGEST_DESTRUCTOR_OVERRIDE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (STRIP_DEBUG_SYMBOLS_FUNCTIONS)
|
if (OMIT_HEAVY_DEBUG_SYMBOLS)
|
||||||
target_compile_options(clickhouse_functions_gatherutils PRIVATE "-g0")
|
target_compile_options(clickhouse_functions_gatherutils PRIVATE "-g0")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -8,6 +8,6 @@ target_link_libraries(clickhouse_functions_jsonpath PRIVATE dbms)
|
|||||||
target_link_libraries(clickhouse_functions_jsonpath PRIVATE clickhouse_parsers)
|
target_link_libraries(clickhouse_functions_jsonpath PRIVATE clickhouse_parsers)
|
||||||
target_link_libraries(clickhouse_functions PRIVATE clickhouse_functions_jsonpath)
|
target_link_libraries(clickhouse_functions PRIVATE clickhouse_functions_jsonpath)
|
||||||
|
|
||||||
if (STRIP_DEBUG_SYMBOLS_FUNCTIONS)
|
if (OMIT_HEAVY_DEBUG_SYMBOLS)
|
||||||
target_compile_options(clickhouse_functions_jsonpath PRIVATE "-g0")
|
target_compile_options(clickhouse_functions_jsonpath PRIVATE "-g0")
|
||||||
endif()
|
endif()
|
||||||
|
@ -3,7 +3,7 @@ add_headers_and_sources(clickhouse_functions_url .)
|
|||||||
add_library(clickhouse_functions_url ${clickhouse_functions_url_sources} ${clickhouse_functions_url_headers})
|
add_library(clickhouse_functions_url ${clickhouse_functions_url_sources} ${clickhouse_functions_url_headers})
|
||||||
target_link_libraries(clickhouse_functions_url PRIVATE dbms)
|
target_link_libraries(clickhouse_functions_url PRIVATE dbms)
|
||||||
|
|
||||||
if (STRIP_DEBUG_SYMBOLS_FUNCTIONS)
|
if (OMIT_HEAVY_DEBUG_SYMBOLS)
|
||||||
target_compile_options(clickhouse_functions_url PRIVATE "-g0")
|
target_compile_options(clickhouse_functions_url PRIVATE "-g0")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -3,6 +3,6 @@ add_headers_and_sources(clickhouse_functions_array .)
|
|||||||
add_library(clickhouse_functions_array ${clickhouse_functions_array_sources} ${clickhouse_functions_array_headers})
|
add_library(clickhouse_functions_array ${clickhouse_functions_array_sources} ${clickhouse_functions_array_headers})
|
||||||
target_link_libraries(clickhouse_functions_array PRIVATE dbms clickhouse_functions_gatherutils)
|
target_link_libraries(clickhouse_functions_array PRIVATE dbms clickhouse_functions_gatherutils)
|
||||||
|
|
||||||
if (STRIP_DEBUG_SYMBOLS_FUNCTIONS)
|
if (OMIT_HEAVY_DEBUG_SYMBOLS)
|
||||||
target_compile_options(clickhouse_functions_array PRIVATE "-g0")
|
target_compile_options(clickhouse_functions_array PRIVATE "-g0")
|
||||||
endif()
|
endif()
|
||||||
|
Loading…
Reference in New Issue
Block a user