Skip to content

Build all contribs using our own CMake files #9226

@abyss7

Description

@abyss7

All contribs should be based on common template:

option (ENABLE_XXX)
if (ENABLE_XXX)
    option (USE_INTERNAL_XXX)
    if (USE_INTERNAL_XXX)
        …
    else ()
        add_library (xxx UNKNOWN IMPORT)
        find_library(…) # use library names
        find_path(…) # find include dirs
        set_property(TARGET xxx PROPERTY IMPORTED_LOCATION …)

        # check that external library compiles
    endif ()
    target_compile_definitions (xxx PUBLIC USE_XXX=1)
else ()
    add_library (xxx INTERFACE)
    target_compile_definitions (xxx INTERFACE USE_XXX=0)
endif ()

It allows to always depend on required libraries and give the explicit and determenistic control for their enabling to user. It also removes unnecessary configuration, install and export steps that makes our own CMake files more complicated.

List of contribs to fix:

  • abseil-cpp
  • arrow
  • avro
  • aws*
  • base64
  • boost
  • brotli
  • capnproto
  • cassandra
  • cctz
  • cppkafka
  • curl
  • double-conversion
  • fastops
  • fastfloat
  • flatbuffers
  • googletest
  • grpc
  • gcem
  • h3
  • hyperscan
  • icu
  • jemalloc (special case)
  • libgsasl
  • libhdfs3
  • librdkafka
  • libunwind (special case)
  • libxml2
  • llvm
  • lz4
  • mariadb-connector-c
  • openssl
  • orc
  • poco
  • protobuf
  • rapidjson
  • re2
  • ryu
  • sentry-native
  • simdjson
  • snappy
  • sparsehash-c11
  • thrift
  • unixodbc
  • xz
  • zlib-ng
  • zstd

And maybe some others that are not yet in contrib folder

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions