CodeCommitsIssuesPull requestsActionsInsightsSecurity
49095e81692214b45aa4681f0de5a3bea724ea17

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

contrib/avro-cmake/CMakeLists.txt

69lines · modecode

1set(AVROCPP_ROOT_DIR ${CMAKE_SOURCE_DIR}/contrib/avro/lang/c++)
2set(AVROCPP_INCLUDE_DIR ${AVROCPP_ROOT_DIR}/api)
3set(AVROCPP_SOURCE_DIR ${AVROCPP_ROOT_DIR}/impl)
4
5set (CMAKE_CXX_STANDARD 17)
6
7if (EXISTS ${AVROCPP_ROOT_DIR}/../../share/VERSION.txt)
8 file(READ "${AVROCPP_ROOT_DIR}/../../share/VERSION.txt"
9 AVRO_VERSION)
10endif()
11
12string(REPLACE "\n" "" AVRO_VERSION ${AVRO_VERSION})
13set (AVRO_VERSION_MAJOR ${AVRO_VERSION})
14set (AVRO_VERSION_MINOR "0")
15
16set (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
43add_library (avrocpp ${AVROCPP_SOURCE_FILES})
44set_target_properties (avrocpp PROPERTIES VERSION ${AVRO_VERSION_MAJOR}.${AVRO_VERSION_MINOR})
45
46target_include_directories(avrocpp SYSTEM PUBLIC ${AVROCPP_INCLUDE_DIR})
47
48target_link_libraries (avrocpp PRIVATE boost::headers_only boost::iostreams)
49
50if (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})
54endif ()
55
56if (COMPILER_GCC)
57 set (SUPPRESS_WARNINGS -Wno-non-virtual-dtor)
58elseif (COMPILER_CLANG)
59 set (SUPPRESS_WARNINGS -Wno-non-virtual-dtor)
60endif ()
61
62target_compile_options(avrocpp PRIVATE ${SUPPRESS_WARNINGS})
63
64# create a symlink to include headers with <avro/...>
65ADD_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)
69add_dependencies(avrocpp avro_symlink_headers)