set(AVROCPP_ROOT_DIR ${CMAKE_SOURCE_DIR}/contrib/avro/lang/c++) set(AVROCPP_INCLUDE_DIR ${AVROCPP_ROOT_DIR}/api) set(AVROCPP_SOURCE_DIR ${AVROCPP_ROOT_DIR}/impl) set (CMAKE_CXX_STANDARD 17) if (EXISTS ${AVROCPP_ROOT_DIR}/../../share/VERSION.txt) file(READ "${AVROCPP_ROOT_DIR}/../../share/VERSION.txt" AVRO_VERSION) endif() string(REPLACE "\n" "" AVRO_VERSION ${AVRO_VERSION}) set (AVRO_VERSION_MAJOR ${AVRO_VERSION}) set (AVRO_VERSION_MINOR "0") set (AVROCPP_SOURCE_FILES ${AVROCPP_SOURCE_DIR}/Compiler.cc ${AVROCPP_SOURCE_DIR}/Node.cc ${AVROCPP_SOURCE_DIR}/LogicalType.cc ${AVROCPP_SOURCE_DIR}/NodeImpl.cc ${AVROCPP_SOURCE_DIR}/ResolverSchema.cc ${AVROCPP_SOURCE_DIR}/Schema.cc ${AVROCPP_SOURCE_DIR}/Types.cc ${AVROCPP_SOURCE_DIR}/ValidSchema.cc ${AVROCPP_SOURCE_DIR}/Zigzag.cc ${AVROCPP_SOURCE_DIR}/BinaryEncoder.cc ${AVROCPP_SOURCE_DIR}/BinaryDecoder.cc ${AVROCPP_SOURCE_DIR}/Stream.cc ${AVROCPP_SOURCE_DIR}/FileStream.cc ${AVROCPP_SOURCE_DIR}/Generic.cc ${AVROCPP_SOURCE_DIR}/GenericDatum.cc ${AVROCPP_SOURCE_DIR}/DataFile.cc ${AVROCPP_SOURCE_DIR}/parsing/Symbol.cc ${AVROCPP_SOURCE_DIR}/parsing/ValidatingCodec.cc ${AVROCPP_SOURCE_DIR}/parsing/JsonCodec.cc ${AVROCPP_SOURCE_DIR}/parsing/ResolvingDecoder.cc ${AVROCPP_SOURCE_DIR}/json/JsonIO.cc ${AVROCPP_SOURCE_DIR}/json/JsonDom.cc ${AVROCPP_SOURCE_DIR}/Resolver.cc ${AVROCPP_SOURCE_DIR}/Validator.cc ) add_library (avrocpp ${AVROCPP_SOURCE_FILES}) set_target_properties (avrocpp PROPERTIES VERSION ${AVRO_VERSION_MAJOR}.${AVRO_VERSION_MINOR}) target_include_directories(avrocpp SYSTEM PUBLIC ${AVROCPP_INCLUDE_DIR}) target_include_directories(avrocpp SYSTEM PUBLIC ${Boost_INCLUDE_DIRS}) target_link_libraries (avrocpp ${Boost_IOSTREAMS_LIBRARY}) if (SNAPPY_INCLUDE_DIR AND SNAPPY_LIBRARY) target_compile_definitions (avrocpp PUBLIC SNAPPY_CODEC_AVAILABLE) target_include_directories (avrocpp PRIVATE ${SNAPPY_INCLUDE_DIR}) target_link_libraries (avrocpp ${SNAPPY_LIBRARY}) endif () if (COMPILER_GCC) set (SUPPRESS_WARNINGS -Wno-non-virtual-dtor) elseif (COMPILER_CLANG) set (SUPPRESS_WARNINGS -Wno-non-virtual-dtor) endif () target_compile_options(avrocpp PRIVATE ${SUPPRESS_WARNINGS}) # create a symlink to include headers with ADD_CUSTOM_TARGET(avro_symlink_headers ALL COMMAND ${CMAKE_COMMAND} -E make_directory ${AVROCPP_ROOT_DIR}/include COMMAND ${CMAKE_COMMAND} -E create_symlink ${AVROCPP_ROOT_DIR}/api ${AVROCPP_ROOT_DIR}/include/avro ) add_dependencies(avrocpp avro_symlink_headers)