From 8281e610ab5666bb3ae6e22a2cc2b11af0fb9226 Mon Sep 17 00:00:00 2001 From: Viper Bailey Date: Wed, 10 Jul 2024 05:29:46 -0600 Subject: [PATCH] AVRO-4015: [C++] fixed the c++ build to facilitate using it with FetchContent (#3008) - exposed the include libraries in such a way that they can be accessed - added the necessary libs to the static target Co-authored-by: Michael Bailey --- lang/c++/CMakeLists.txt | 19 ++++++++++++++----- lang/c++/{api => include/avro}/AvroParse.hh | 0 .../{api => include/avro}/AvroSerialize.hh | 0 lang/c++/{api => include/avro}/AvroTraits.hh | 0 lang/c++/{api => include/avro}/Compiler.hh | 0 lang/c++/{api => include/avro}/Config.hh | 0 .../{api => include/avro}/CustomAttributes.hh | 0 lang/c++/{api => include/avro}/DataFile.hh | 0 lang/c++/{api => include/avro}/Decoder.hh | 0 lang/c++/{api => include/avro}/Encoder.hh | 0 lang/c++/{api => include/avro}/Exception.hh | 0 lang/c++/{api => include/avro}/Generic.hh | 0 .../c++/{api => include/avro}/GenericDatum.hh | 0 lang/c++/{api => include/avro}/Layout.hh | 0 lang/c++/{api => include/avro}/LogicalType.hh | 0 lang/c++/{api => include/avro}/Node.hh | 0 .../c++/{api => include/avro}/NodeConcepts.hh | 0 lang/c++/{api => include/avro}/NodeImpl.hh | 0 lang/c++/{api => include/avro}/Parser.hh | 0 lang/c++/{api => include/avro}/Reader.hh | 0 lang/c++/{api => include/avro}/Resolver.hh | 0 .../{api => include/avro}/ResolverSchema.hh | 0 .../{api => include/avro}/ResolvingReader.hh | 0 lang/c++/{api => include/avro}/Schema.hh | 0 .../{api => include/avro}/SchemaResolution.hh | 0 lang/c++/{api => include/avro}/Serializer.hh | 0 lang/c++/{api => include/avro}/Specific.hh | 0 lang/c++/{api => include/avro}/Stream.hh | 0 lang/c++/{api => include/avro}/Types.hh | 0 lang/c++/{api => include/avro}/ValidSchema.hh | 0 lang/c++/{api => include/avro}/Validator.hh | 0 lang/c++/{api => include/avro}/Writer.hh | 0 lang/c++/{api => include/avro}/Zigzag.hh | 0 .../{api => include/avro}/buffer/Buffer.hh | 0 .../avro}/buffer/BufferPrint.hh | 0 .../avro}/buffer/BufferReader.hh | 0 .../avro}/buffer/BufferStream.hh | 0 .../avro}/buffer/BufferStreambuf.hh | 0 .../avro}/buffer/detail/BufferDetail.hh | 0 .../buffer/detail/BufferDetailIterator.hh | 0 40 files changed, 14 insertions(+), 5 deletions(-) rename lang/c++/{api => include/avro}/AvroParse.hh (100%) rename lang/c++/{api => include/avro}/AvroSerialize.hh (100%) rename lang/c++/{api => include/avro}/AvroTraits.hh (100%) rename lang/c++/{api => include/avro}/Compiler.hh (100%) rename lang/c++/{api => include/avro}/Config.hh (100%) rename lang/c++/{api => include/avro}/CustomAttributes.hh (100%) rename lang/c++/{api => include/avro}/DataFile.hh (100%) rename lang/c++/{api => include/avro}/Decoder.hh (100%) rename lang/c++/{api => include/avro}/Encoder.hh (100%) rename lang/c++/{api => include/avro}/Exception.hh (100%) rename lang/c++/{api => include/avro}/Generic.hh (100%) rename lang/c++/{api => include/avro}/GenericDatum.hh (100%) rename lang/c++/{api => include/avro}/Layout.hh (100%) rename lang/c++/{api => include/avro}/LogicalType.hh (100%) rename lang/c++/{api => include/avro}/Node.hh (100%) rename lang/c++/{api => include/avro}/NodeConcepts.hh (100%) rename lang/c++/{api => include/avro}/NodeImpl.hh (100%) rename lang/c++/{api => include/avro}/Parser.hh (100%) rename lang/c++/{api => include/avro}/Reader.hh (100%) rename lang/c++/{api => include/avro}/Resolver.hh (100%) rename lang/c++/{api => include/avro}/ResolverSchema.hh (100%) rename lang/c++/{api => include/avro}/ResolvingReader.hh (100%) rename lang/c++/{api => include/avro}/Schema.hh (100%) rename lang/c++/{api => include/avro}/SchemaResolution.hh (100%) rename lang/c++/{api => include/avro}/Serializer.hh (100%) rename lang/c++/{api => include/avro}/Specific.hh (100%) rename lang/c++/{api => include/avro}/Stream.hh (100%) rename lang/c++/{api => include/avro}/Types.hh (100%) rename lang/c++/{api => include/avro}/ValidSchema.hh (100%) rename lang/c++/{api => include/avro}/Validator.hh (100%) rename lang/c++/{api => include/avro}/Writer.hh (100%) rename lang/c++/{api => include/avro}/Zigzag.hh (100%) rename lang/c++/{api => include/avro}/buffer/Buffer.hh (100%) rename lang/c++/{api => include/avro}/buffer/BufferPrint.hh (100%) rename lang/c++/{api => include/avro}/buffer/BufferReader.hh (100%) rename lang/c++/{api => include/avro}/buffer/BufferStream.hh (100%) rename lang/c++/{api => include/avro}/buffer/BufferStreambuf.hh (100%) rename lang/c++/{api => include/avro}/buffer/detail/BufferDetail.hh (100%) rename lang/c++/{api => include/avro}/buffer/detail/BufferDetailIterator.hh (100%) diff --git a/lang/c++/CMakeLists.txt b/lang/c++/CMakeLists.txt index 62c04ff2fe6..197d8f9856f 100644 --- a/lang/c++/CMakeLists.txt +++ b/lang/c++/CMakeLists.txt @@ -108,7 +108,7 @@ add_definitions (${Boost_LIB_DIAGNOSTIC_DEFINITIONS}) add_definitions (-DAVRO_VERSION="${AVRO_VERSION_MAJOR}.${AVRO_VERSION_MINOR}.${AVRO_VERSION_PATCH}") -include_directories (api ${CMAKE_CURRENT_BINARY_DIR} ${Boost_INCLUDE_DIRS}) +include_directories (include/avro ${CMAKE_CURRENT_BINARY_DIR} ${Boost_INCLUDE_DIRS}) set (AVRO_SOURCE_FILES impl/Compiler.cc impl/Node.cc impl/LogicalType.cc @@ -135,7 +135,7 @@ set_property (TARGET avrocpp add_library (avrocpp_s STATIC ${AVRO_SOURCE_FILES}) target_include_directories(avrocpp_s PRIVATE ${SNAPPY_INCLUDE_DIR}) -target_link_libraries(avrocpp_s fmt::fmt-header-only) +target_link_libraries(avrocpp_s ${Boost_LIBRARIES} ${SNAPPY_LIBRARIES} fmt::fmt-header-only) set_property (TARGET avrocpp avrocpp_s APPEND PROPERTY COMPILE_DEFINITIONS AVRO_SOURCE) @@ -151,7 +151,7 @@ target_include_directories(avrocpp PRIVATE ${SNAPPY_INCLUDE_DIR}) add_executable (precompile test/precompile.cc) -target_link_libraries (precompile avrocpp_s ${Boost_LIBRARIES} ${SNAPPY_LIBRARIES}) +target_link_libraries (precompile avrocpp_s) macro (gen file ns) add_custom_command (OUTPUT ${file}.hh @@ -183,7 +183,16 @@ gen (cpp_reserved_words cppres) gen (cpp_reserved_words_union_typedef cppres_union) add_executable (avrogencpp impl/avrogencpp.cc) -target_link_libraries (avrogencpp avrocpp_s ${Boost_LIBRARIES} ${SNAPPY_LIBRARIES}) +target_link_libraries (avrogencpp avrocpp_s) + +target_include_directories(avrocpp_s PUBLIC + $ + $ +) +target_include_directories(avrocpp PUBLIC + $ + $ +) enable_testing() @@ -230,7 +239,7 @@ install (TARGETS avrocpp avrocpp_s install (TARGETS avrogencpp RUNTIME DESTINATION bin) -install (DIRECTORY api/ DESTINATION include/avro +install (DIRECTORY include/avro DESTINATION include FILES_MATCHING PATTERN *.hh) if (NOT CMAKE_BUILD_TYPE) diff --git a/lang/c++/api/AvroParse.hh b/lang/c++/include/avro/AvroParse.hh similarity index 100% rename from lang/c++/api/AvroParse.hh rename to lang/c++/include/avro/AvroParse.hh diff --git a/lang/c++/api/AvroSerialize.hh b/lang/c++/include/avro/AvroSerialize.hh similarity index 100% rename from lang/c++/api/AvroSerialize.hh rename to lang/c++/include/avro/AvroSerialize.hh diff --git a/lang/c++/api/AvroTraits.hh b/lang/c++/include/avro/AvroTraits.hh similarity index 100% rename from lang/c++/api/AvroTraits.hh rename to lang/c++/include/avro/AvroTraits.hh diff --git a/lang/c++/api/Compiler.hh b/lang/c++/include/avro/Compiler.hh similarity index 100% rename from lang/c++/api/Compiler.hh rename to lang/c++/include/avro/Compiler.hh diff --git a/lang/c++/api/Config.hh b/lang/c++/include/avro/Config.hh similarity index 100% rename from lang/c++/api/Config.hh rename to lang/c++/include/avro/Config.hh diff --git a/lang/c++/api/CustomAttributes.hh b/lang/c++/include/avro/CustomAttributes.hh similarity index 100% rename from lang/c++/api/CustomAttributes.hh rename to lang/c++/include/avro/CustomAttributes.hh diff --git a/lang/c++/api/DataFile.hh b/lang/c++/include/avro/DataFile.hh similarity index 100% rename from lang/c++/api/DataFile.hh rename to lang/c++/include/avro/DataFile.hh diff --git a/lang/c++/api/Decoder.hh b/lang/c++/include/avro/Decoder.hh similarity index 100% rename from lang/c++/api/Decoder.hh rename to lang/c++/include/avro/Decoder.hh diff --git a/lang/c++/api/Encoder.hh b/lang/c++/include/avro/Encoder.hh similarity index 100% rename from lang/c++/api/Encoder.hh rename to lang/c++/include/avro/Encoder.hh diff --git a/lang/c++/api/Exception.hh b/lang/c++/include/avro/Exception.hh similarity index 100% rename from lang/c++/api/Exception.hh rename to lang/c++/include/avro/Exception.hh diff --git a/lang/c++/api/Generic.hh b/lang/c++/include/avro/Generic.hh similarity index 100% rename from lang/c++/api/Generic.hh rename to lang/c++/include/avro/Generic.hh diff --git a/lang/c++/api/GenericDatum.hh b/lang/c++/include/avro/GenericDatum.hh similarity index 100% rename from lang/c++/api/GenericDatum.hh rename to lang/c++/include/avro/GenericDatum.hh diff --git a/lang/c++/api/Layout.hh b/lang/c++/include/avro/Layout.hh similarity index 100% rename from lang/c++/api/Layout.hh rename to lang/c++/include/avro/Layout.hh diff --git a/lang/c++/api/LogicalType.hh b/lang/c++/include/avro/LogicalType.hh similarity index 100% rename from lang/c++/api/LogicalType.hh rename to lang/c++/include/avro/LogicalType.hh diff --git a/lang/c++/api/Node.hh b/lang/c++/include/avro/Node.hh similarity index 100% rename from lang/c++/api/Node.hh rename to lang/c++/include/avro/Node.hh diff --git a/lang/c++/api/NodeConcepts.hh b/lang/c++/include/avro/NodeConcepts.hh similarity index 100% rename from lang/c++/api/NodeConcepts.hh rename to lang/c++/include/avro/NodeConcepts.hh diff --git a/lang/c++/api/NodeImpl.hh b/lang/c++/include/avro/NodeImpl.hh similarity index 100% rename from lang/c++/api/NodeImpl.hh rename to lang/c++/include/avro/NodeImpl.hh diff --git a/lang/c++/api/Parser.hh b/lang/c++/include/avro/Parser.hh similarity index 100% rename from lang/c++/api/Parser.hh rename to lang/c++/include/avro/Parser.hh diff --git a/lang/c++/api/Reader.hh b/lang/c++/include/avro/Reader.hh similarity index 100% rename from lang/c++/api/Reader.hh rename to lang/c++/include/avro/Reader.hh diff --git a/lang/c++/api/Resolver.hh b/lang/c++/include/avro/Resolver.hh similarity index 100% rename from lang/c++/api/Resolver.hh rename to lang/c++/include/avro/Resolver.hh diff --git a/lang/c++/api/ResolverSchema.hh b/lang/c++/include/avro/ResolverSchema.hh similarity index 100% rename from lang/c++/api/ResolverSchema.hh rename to lang/c++/include/avro/ResolverSchema.hh diff --git a/lang/c++/api/ResolvingReader.hh b/lang/c++/include/avro/ResolvingReader.hh similarity index 100% rename from lang/c++/api/ResolvingReader.hh rename to lang/c++/include/avro/ResolvingReader.hh diff --git a/lang/c++/api/Schema.hh b/lang/c++/include/avro/Schema.hh similarity index 100% rename from lang/c++/api/Schema.hh rename to lang/c++/include/avro/Schema.hh diff --git a/lang/c++/api/SchemaResolution.hh b/lang/c++/include/avro/SchemaResolution.hh similarity index 100% rename from lang/c++/api/SchemaResolution.hh rename to lang/c++/include/avro/SchemaResolution.hh diff --git a/lang/c++/api/Serializer.hh b/lang/c++/include/avro/Serializer.hh similarity index 100% rename from lang/c++/api/Serializer.hh rename to lang/c++/include/avro/Serializer.hh diff --git a/lang/c++/api/Specific.hh b/lang/c++/include/avro/Specific.hh similarity index 100% rename from lang/c++/api/Specific.hh rename to lang/c++/include/avro/Specific.hh diff --git a/lang/c++/api/Stream.hh b/lang/c++/include/avro/Stream.hh similarity index 100% rename from lang/c++/api/Stream.hh rename to lang/c++/include/avro/Stream.hh diff --git a/lang/c++/api/Types.hh b/lang/c++/include/avro/Types.hh similarity index 100% rename from lang/c++/api/Types.hh rename to lang/c++/include/avro/Types.hh diff --git a/lang/c++/api/ValidSchema.hh b/lang/c++/include/avro/ValidSchema.hh similarity index 100% rename from lang/c++/api/ValidSchema.hh rename to lang/c++/include/avro/ValidSchema.hh diff --git a/lang/c++/api/Validator.hh b/lang/c++/include/avro/Validator.hh similarity index 100% rename from lang/c++/api/Validator.hh rename to lang/c++/include/avro/Validator.hh diff --git a/lang/c++/api/Writer.hh b/lang/c++/include/avro/Writer.hh similarity index 100% rename from lang/c++/api/Writer.hh rename to lang/c++/include/avro/Writer.hh diff --git a/lang/c++/api/Zigzag.hh b/lang/c++/include/avro/Zigzag.hh similarity index 100% rename from lang/c++/api/Zigzag.hh rename to lang/c++/include/avro/Zigzag.hh diff --git a/lang/c++/api/buffer/Buffer.hh b/lang/c++/include/avro/buffer/Buffer.hh similarity index 100% rename from lang/c++/api/buffer/Buffer.hh rename to lang/c++/include/avro/buffer/Buffer.hh diff --git a/lang/c++/api/buffer/BufferPrint.hh b/lang/c++/include/avro/buffer/BufferPrint.hh similarity index 100% rename from lang/c++/api/buffer/BufferPrint.hh rename to lang/c++/include/avro/buffer/BufferPrint.hh diff --git a/lang/c++/api/buffer/BufferReader.hh b/lang/c++/include/avro/buffer/BufferReader.hh similarity index 100% rename from lang/c++/api/buffer/BufferReader.hh rename to lang/c++/include/avro/buffer/BufferReader.hh diff --git a/lang/c++/api/buffer/BufferStream.hh b/lang/c++/include/avro/buffer/BufferStream.hh similarity index 100% rename from lang/c++/api/buffer/BufferStream.hh rename to lang/c++/include/avro/buffer/BufferStream.hh diff --git a/lang/c++/api/buffer/BufferStreambuf.hh b/lang/c++/include/avro/buffer/BufferStreambuf.hh similarity index 100% rename from lang/c++/api/buffer/BufferStreambuf.hh rename to lang/c++/include/avro/buffer/BufferStreambuf.hh diff --git a/lang/c++/api/buffer/detail/BufferDetail.hh b/lang/c++/include/avro/buffer/detail/BufferDetail.hh similarity index 100% rename from lang/c++/api/buffer/detail/BufferDetail.hh rename to lang/c++/include/avro/buffer/detail/BufferDetail.hh diff --git a/lang/c++/api/buffer/detail/BufferDetailIterator.hh b/lang/c++/include/avro/buffer/detail/BufferDetailIterator.hh similarity index 100% rename from lang/c++/api/buffer/detail/BufferDetailIterator.hh rename to lang/c++/include/avro/buffer/detail/BufferDetailIterator.hh