ClickHouse/utils/memcpy-bench/CMakeLists.txt
Robert Schulze 1a7727a254
Prefix overridden add_executable() command with "clickhouse_"
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/
2022-07-11 19:36:18 +02:00

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)