be/cmake/thirdparty.cmake (163 lines of code) (raw):

# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # Set all libraries # define COMMON_THIRDPARTY list variable set(COMMON_THIRDPARTY) # define add_thirdparty function, append thirdparty libraries to COMMON_THIRDPARTY variable, and pass arg too add_library # if arg exist lib64, use lib64, else use lib # if arg exist noadd, not append to COMMON_THIRDPARTY variable # if arg exist libname, use libname to find library # if arg exist wholelibpath, use wholelibpath to find library function(add_thirdparty) cmake_parse_arguments(DORIS_THIRDPARTY "NOTADD;LIB64" "LIBNAME;WHOLELIBPATH" "" ${ARGN}) set(DORIS_THIRDPARTY_NAME ${DORIS_THIRDPARTY_UNPARSED_ARGUMENTS}) add_library(${DORIS_THIRDPARTY_NAME} STATIC IMPORTED) if (NOT DORIS_THIRDPARTY_NOTADD) set(COMMON_THIRDPARTY ${COMMON_THIRDPARTY} ${DORIS_THIRDPARTY_NAME} PARENT_SCOPE) endif() if (DORIS_THIRDPARTY_LIB64) set(DORIS_THIRDPARTY_LIBPATH ${THIRDPARTY_DIR}/lib64/lib${DORIS_THIRDPARTY_NAME}.a) elseif (DORIS_THIRDPARTY_LIBNAME) set(DORIS_THIRDPARTY_LIBPATH ${THIRDPARTY_DIR}/${DORIS_THIRDPARTY_LIBNAME}) elseif (DORIS_THIRDPARTY_WHOLELIBPATH) set(DORIS_THIRDPARTY_LIBPATH ${DORIS_THIRDPARTY_WHOLELIBPATH}) else() set(DORIS_THIRDPARTY_LIBPATH ${THIRDPARTY_DIR}/lib/lib${DORIS_THIRDPARTY_NAME}.a) endif() set_target_properties(${DORIS_THIRDPARTY_NAME} PROPERTIES IMPORTED_LOCATION ${DORIS_THIRDPARTY_LIBPATH}) endfunction() add_thirdparty(gflags) add_thirdparty(glog) add_thirdparty(backtrace) add_thirdparty(re2) add_thirdparty(hyperscan LIBNAME "lib64/libhs.a") add_thirdparty(odbc) add_thirdparty(pprof WHOLELIBPATH ${GPERFTOOLS_HOME}/lib/libprofiler.a) add_thirdparty(protobuf) add_thirdparty(gtest) add_thirdparty(gtest_main) add_thirdparty(benchmark) add_thirdparty(gmock) add_thirdparty(snappy) add_thirdparty(curl) add_thirdparty(lz4) add_thirdparty(thrift) add_thirdparty(thriftnb) add_thirdparty(libevent LIBNAME "lib/libevent.a") add_thirdparty(libevent_pthreads LIBNAME "lib/libevent_pthreads.a") add_thirdparty(libbz2 LIBNAME "lib/libbz2.a") add_thirdparty(libz LIBNAME "lib/libz.a") add_thirdparty(crypto) add_thirdparty(openssl LIBNAME "lib/libssl.a") add_thirdparty(leveldb) if (USE_JEMALLOC) add_thirdparty(jemalloc LIBNAME "lib/libjemalloc_doris.a") else() add_thirdparty(tcmalloc WHOLELIBPATH ${GPERFTOOLS_HOME}/lib/libtcmalloc.a NOTADD) endif() if (USE_UNWIND) add_thirdparty(libunwind LIBNAME "lib64/libunwind.a") endif() add_thirdparty(grpc++_reflection LIB64) add_thirdparty(grpc LIB64) add_thirdparty(grpc++ LIB64) add_thirdparty(grpc++_unsecure LIB64) add_thirdparty(gpr LIB64) add_thirdparty(upb LIB64) add_thirdparty(cares LIB64) add_thirdparty(address_sorting LIB64) add_thirdparty(z LIB64) add_thirdparty(brotlicommon LIB64) add_thirdparty(brotlidec LIB64) add_thirdparty(brotlienc LIB64) add_thirdparty(zstd LIB64) add_thirdparty(arrow LIB64) add_thirdparty(arrow_flight LIB64) add_thirdparty(arrow_flight_sql LIB64) add_thirdparty(parquet LIB64) add_thirdparty(brpc LIB64) add_thirdparty(rocksdb) add_thirdparty(cyrus-sasl LIBNAME "lib/libsasl2.a") # put this after lz4 to avoid using lz4 lib in librdkafka add_thirdparty(rdkafka_cpp LIBNAME "lib/librdkafka++.a") add_thirdparty(rdkafka) add_thirdparty(s2) add_thirdparty(bitshuffle) add_thirdparty(roaring) add_thirdparty(fmt) add_thirdparty(cctz) add_thirdparty(base64) add_thirdparty(aws-cpp-sdk-core LIB64) add_thirdparty(aws-cpp-sdk-s3 LIB64) add_thirdparty(aws-cpp-sdk-transfer LIB64) add_thirdparty(aws-cpp-sdk-s3-crt LIB64) add_thirdparty(aws-crt-cpp LIB64) add_thirdparty(aws-c-cal LIB64) add_thirdparty(aws-c-auth LIB64) add_thirdparty(aws-c-compression LIB64) add_thirdparty(aws-c-common LIB64) add_thirdparty(aws-c-event-stream LIB64) add_thirdparty(aws-c-io LIB64) add_thirdparty(aws-c-http LIB64) add_thirdparty(aws-c-mqtt LIB64) add_thirdparty(aws-checksums LIB64) add_thirdparty(aws-c-s3 LIB64) add_thirdparty(aws-c-sdkutils LIB64) add_thirdparty(aws-cpp-sdk-identity-management LIB64) add_thirdparty(aws-cpp-sdk-sts LIB64) if (NOT OS_MACOSX) add_thirdparty(aws-s2n LIBNAME "lib/libs2n.a") endif() if(BUILD_AZURE STREQUAL "ON") add_thirdparty(azure-core) add_thirdparty(azure-identity) add_thirdparty(azure-storage-blobs) add_thirdparty(azure-storage-common) endif() add_thirdparty(minizip LIB64) add_thirdparty(simdjson LIB64) add_thirdparty(idn LIB64) add_thirdparty(xml2 LIB64) add_thirdparty(lzma LIB64) add_thirdparty(gsasl) add_thirdparty(krb5support) add_thirdparty(krb5) add_thirdparty(com_err) add_thirdparty(k5crypto) add_thirdparty(gssapi_krb5) add_thirdparty(streamvbyte LIB64) if (OS_MACOSX) add_thirdparty(bfd) add_thirdparty(iberty) add_thirdparty(intl) endif() # Only used on x86 or x86_64 if ("${CMAKE_BUILD_TARGET_ARCH}" STREQUAL "x86" OR "${CMAKE_BUILD_TARGET_ARCH}" STREQUAL "x86_64") add_thirdparty(deflate) endif() add_thirdparty(icuuc LIB64) add_thirdparty(icui18n LIB64) add_thirdparty(icudata LIB64) add_thirdparty(pugixml LIB64) if (BUILD_FAISS) add_thirdparty(openblas LIB64) add_thirdparty(faiss LIB64) endif()