include(configure_config.cmake) configure_file(config_functions.h.in ${ConfigIncludePath}/config_functions.h) add_subdirectory(divide) include("${ClickHouse_SOURCE_DIR}/cmake/dbms_glob_sources.cmake") add_headers_and_sources(clickhouse_functions .) list(REMOVE_ITEM clickhouse_functions_sources IFunction.cpp FunctionFactory.cpp FunctionHelpers.cpp extractTimeZoneFromFunctionArguments.cpp FunctionsLogical.cpp) list(REMOVE_ITEM clickhouse_functions_headers IFunction.h FunctionFactory.h FunctionHelpers.h extractTimeZoneFromFunctionArguments.h FunctionsLogical.h) add_library(clickhouse_functions_obj OBJECT ${clickhouse_functions_sources}) list (APPEND OBJECT_LIBS $) list (APPEND PUBLIC_LIBS ch_contrib::wyhash ch_contrib::cityhash ch_contrib::farmhash clickhouse_dictionaries clickhouse_dictionaries_embedded clickhouse_parsers ch_contrib::consistent_hashing dbms ch_contrib::metrohash ch_contrib::murmurhash ch_contrib::hashidsxx ) list (APPEND PRIVATE_LIBS ch_contrib::zlib boost::filesystem divide_impl ) if (TARGET OpenSSL::Crypto) list (APPEND PUBLIC_LIBS OpenSSL::Crypto) endif() if (OMIT_HEAVY_DEBUG_SYMBOLS) target_compile_options(clickhouse_functions_obj PRIVATE "-g0") endif() if (TARGET ch_contrib::icu) list (APPEND PRIVATE_LIBS ch_contrib::icu) endif () if (TARGET ch_contrib::fastops) list (APPEND PRIVATE_LIBS ch_contrib::fastops) endif () if (ENABLE_EXAMPLES) add_subdirectory(examples) endif () if (TARGET ch_contrib::llvm) list (APPEND PRIVATE_LIBS ch_contrib::llvm) endif () if (TARGET ch_contrib::base64) list (APPEND PRIVATE_LIBS ch_contrib::base64) endif() list (APPEND PRIVATE_LIBS ch_contrib::lz4) if (ENABLE_NLP) list (APPEND PRIVATE_LIBS ch_contrib::cld2) endif() if (TARGET ch_contrib::h3) list (APPEND PRIVATE_LIBS ch_contrib::h3) endif() if (TARGET ch_contrib::vectorscan) list (APPEND PRIVATE_LIBS ch_contrib::vectorscan) endif() if (TARGET ch_contrib::simdjson) list (APPEND PRIVATE_LIBS ch_contrib::simdjson) endif() if (TARGET ch_contrib::rapidjson) list (APPEND PRIVATE_LIBS ch_contrib::rapidjson) endif() add_subdirectory(GatherUtils) list (APPEND PRIVATE_LIBS clickhouse_functions_gatherutils) add_subdirectory(URL) list (APPEND OBJECT_LIBS $) add_subdirectory(array) list (APPEND OBJECT_LIBS $) if (TARGET ch_contrib::datasketches) add_subdirectory(UniqTheta) list (APPEND OBJECT_LIBS $) endif() add_subdirectory(JSONPath) list (APPEND PRIVATE_LIBS clickhouse_functions_jsonpath) # Signed integer overflow on user-provided data inside boost::geometry - ignore. set_source_files_properties("pointInPolygon.cpp" PROPERTIES COMPILE_FLAGS -fno-sanitize=signed-integer-overflow) if (ENABLE_FUZZING) add_compile_definitions(FUZZING_MODE=1) endif () target_link_libraries(clickhouse_functions_obj PUBLIC ${PUBLIC_LIBS} PRIVATE ${PRIVATE_LIBS}) if (USE_STATIC_LIBRARIES OR NOT SPLIT_SHARED_LIBRARIES) # Used to forward the linking information to the final binaries such as clickhouse / unit_tests_dbms, # since such information are lost after we convert to OBJECT target add_library(clickhouse_functions INTERFACE) target_link_libraries(clickhouse_functions INTERFACE ${OBJECT_LIBS} ${PUBLIC_LIBS} ${PRIVATE_LIBS}) else() add_library(clickhouse_functions SHARED ${OBJECT_LIBS}) target_link_libraries(clickhouse_functions PUBLIC ${PUBLIC_LIBS} PRIVATE ${PRIVATE_LIBS}) endif ()