mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-15 10:52:30 +00:00
1a7727a254
A simple HelloWorld program with zero includes except iostream triggers a build of ca. 2000 source files. The reason is that ClickHouse's top-level CMakeLists.txt overrides "add_executable()" to link all binaries against "clickhouse_new_delete". This links against "clickhouse_common_io", which in turn has lots of 3rd party library dependencies ... Without linking "clickhouse_new_delete", the number of compiled files for "HelloWorld" goes down to ca. 70. As an example, the self-extracting-executable needs none of its current dependencies but other programs may also benefit. In order to restore access to the original "add_executable()", the overriding version is now prefixed. There is precedence for a "clickhouse_" prefix (as opposed to "ch_"), for example "clickhouse_split_debug_symbols". In general prefixing makes sense also because overriding CMake commands relies on undocumented behavior and is considered not-so-great practice (*). (*) https://crascit.com/2018/09/14/do-not-redefine-cmake-commands/
27 lines
829 B
CMake
27 lines
829 B
CMake
enable_language(ASM)
|
|
|
|
clickhouse_add_executable (memcpy-bench
|
|
memcpy-bench.cpp
|
|
FastMemcpy.cpp
|
|
FastMemcpy_Avx.cpp
|
|
memcpy_jart.S
|
|
glibc/memcpy-ssse3.S
|
|
glibc/memcpy-ssse3-back.S
|
|
glibc/memmove-sse2-unaligned-erms.S
|
|
glibc/memmove-avx-unaligned-erms.S
|
|
glibc/memmove-avx512-unaligned-erms.S
|
|
glibc/memmove-avx512-no-vzeroupper.S
|
|
)
|
|
|
|
add_compile_options(memcpy-bench PRIVATE -fno-tree-loop-distribute-patterns)
|
|
|
|
if (OS_SUNOS)
|
|
target_compile_options(memcpy-bench PRIVATE "-Wa,--divide")
|
|
endif()
|
|
|
|
set_source_files_properties(FastMemcpy.cpp PROPERTIES COMPILE_FLAGS "-Wno-old-style-cast")
|
|
set_source_files_properties(FastMemcpy_Avx.cpp PROPERTIES COMPILE_FLAGS "-mavx -Wno-old-style-cast -Wno-cast-qual -Wno-cast-align")
|
|
|
|
target_link_libraries(memcpy-bench PRIVATE dbms boost::program_options)
|
|
|