cloudflare/ClickHouse
Publicmirrored fromhttps://github.com/cloudflare/ClickHouse
contrib/avro-cmake/CMakeLists.txt
69lines · modecode
unknown
| 1 | set(AVROCPP_ROOT_DIR ${CMAKE_SOURCE_DIR}/contrib/avro/lang/c++) |
| 2 | set(AVROCPP_INCLUDE_DIR ${AVROCPP_ROOT_DIR}/api) |
| 3 | set(AVROCPP_SOURCE_DIR ${AVROCPP_ROOT_DIR}/impl) |
| 4 | |
| 5 | set (CMAKE_CXX_STANDARD 17) |
| 6 | |
| 7 | if (EXISTS ${AVROCPP_ROOT_DIR}/../../share/VERSION.txt) |
| 8 | file(READ "${AVROCPP_ROOT_DIR}/../../share/VERSION.txt" |
| 9 | AVRO_VERSION) |
| 10 | endif() |
| 11 | |
| 12 | string(REPLACE "\n" "" AVRO_VERSION ${AVRO_VERSION}) |
| 13 | set (AVRO_VERSION_MAJOR ${AVRO_VERSION}) |
| 14 | set (AVRO_VERSION_MINOR "0") |
| 15 | |
| 16 | set (AVROCPP_SOURCE_FILES |
| 17 | ${AVROCPP_SOURCE_DIR}/Compiler.cc |
| 18 | ${AVROCPP_SOURCE_DIR}/Node.cc |
| 19 | ${AVROCPP_SOURCE_DIR}/LogicalType.cc |
| 20 | ${AVROCPP_SOURCE_DIR}/NodeImpl.cc |
| 21 | ${AVROCPP_SOURCE_DIR}/ResolverSchema.cc |
| 22 | ${AVROCPP_SOURCE_DIR}/Schema.cc |
| 23 | ${AVROCPP_SOURCE_DIR}/Types.cc |
| 24 | ${AVROCPP_SOURCE_DIR}/ValidSchema.cc |
| 25 | ${AVROCPP_SOURCE_DIR}/Zigzag.cc |
| 26 | ${AVROCPP_SOURCE_DIR}/BinaryEncoder.cc |
| 27 | ${AVROCPP_SOURCE_DIR}/BinaryDecoder.cc |
| 28 | ${AVROCPP_SOURCE_DIR}/Stream.cc |
| 29 | ${AVROCPP_SOURCE_DIR}/FileStream.cc |
| 30 | ${AVROCPP_SOURCE_DIR}/Generic.cc |
| 31 | ${AVROCPP_SOURCE_DIR}/GenericDatum.cc |
| 32 | ${AVROCPP_SOURCE_DIR}/DataFile.cc |
| 33 | ${AVROCPP_SOURCE_DIR}/parsing/Symbol.cc |
| 34 | ${AVROCPP_SOURCE_DIR}/parsing/ValidatingCodec.cc |
| 35 | ${AVROCPP_SOURCE_DIR}/parsing/JsonCodec.cc |
| 36 | ${AVROCPP_SOURCE_DIR}/parsing/ResolvingDecoder.cc |
| 37 | ${AVROCPP_SOURCE_DIR}/json/JsonIO.cc |
| 38 | ${AVROCPP_SOURCE_DIR}/json/JsonDom.cc |
| 39 | ${AVROCPP_SOURCE_DIR}/Resolver.cc |
| 40 | ${AVROCPP_SOURCE_DIR}/Validator.cc |
| 41 | ) |
| 42 | |
| 43 | add_library (avrocpp ${AVROCPP_SOURCE_FILES}) |
| 44 | set_target_properties (avrocpp PROPERTIES VERSION ${AVRO_VERSION_MAJOR}.${AVRO_VERSION_MINOR}) |
| 45 | |
| 46 | target_include_directories(avrocpp SYSTEM PUBLIC ${AVROCPP_INCLUDE_DIR}) |
| 47 | |
| 48 | target_link_libraries (avrocpp PRIVATE boost::headers_only boost::iostreams) |
| 49 | |
| 50 | if (SNAPPY_INCLUDE_DIR AND SNAPPY_LIBRARY) |
| 51 | target_compile_definitions (avrocpp PUBLIC SNAPPY_CODEC_AVAILABLE) |
| 52 | target_include_directories (avrocpp PRIVATE ${SNAPPY_INCLUDE_DIR}) |
| 53 | target_link_libraries (avrocpp PRIVATE ${SNAPPY_LIBRARY}) |
| 54 | endif () |
| 55 | |
| 56 | if (COMPILER_GCC) |
| 57 | set (SUPPRESS_WARNINGS -Wno-non-virtual-dtor) |
| 58 | elseif (COMPILER_CLANG) |
| 59 | set (SUPPRESS_WARNINGS -Wno-non-virtual-dtor) |
| 60 | endif () |
| 61 | |
| 62 | target_compile_options(avrocpp PRIVATE ${SUPPRESS_WARNINGS}) |
| 63 | |
| 64 | # create a symlink to include headers with <avro/...> |
| 65 | ADD_CUSTOM_TARGET(avro_symlink_headers ALL |
| 66 | COMMAND ${CMAKE_COMMAND} -E make_directory ${AVROCPP_ROOT_DIR}/include |
| 67 | COMMAND ${CMAKE_COMMAND} -E create_symlink ${AVROCPP_ROOT_DIR}/api ${AVROCPP_ROOT_DIR}/include/avro |
| 68 | ) |
| 69 | add_dependencies(avrocpp avro_symlink_headers) |