diff --git a/.github/workflows/boost_log.yml b/.github/workflows/boost_log.yml index a87d9d77e..6bfb45277 100644 --- a/.github/workflows/boost_log.yml +++ b/.github/workflows/boost_log.yml @@ -27,33 +27,17 @@ jobs: uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - path: opentelemetry-cpp-contrib - # submodules: "recursive" - - name: checkout opentelemetry-cpp - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - repository: "open-telemetry/opentelemetry-cpp" - ref: "v1.19.0" - path: "opentelemetry-cpp" - submodules: "recursive" - name: setup dependencies - working-directory: opentelemetry-cpp-contrib/instrumentation/boost_log + working-directory: instrumentation/boost_log run: | sudo apt update -y xargs -a apt-packages.txt sudo apt install -y --no-install-recommends --no-install-suggests - - name: build opentelemetry-cpp - run: | - mkdir -p "${GITHUB_WORKSPACE}/opentelemetry-cpp/build" - cd "${GITHUB_WORKSPACE}/opentelemetry-cpp/build" - cmake .. -G Ninja -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON - cmake --build . -j$(nproc) - cmake --install . --prefix="${GITHUB_WORKSPACE}/sandbox" - name: build boost_log contrib + working-directory: instrumentation/boost_log run: | - mkdir -p "${GITHUB_WORKSPACE}/boost_log/build" - cd "${GITHUB_WORKSPACE}/boost_log/build" - cmake ../../opentelemetry-cpp-contrib/instrumentation/boost_log \ + mkdir -p "build" + cd "build" + cmake .. \ -G Ninja \ -DCMAKE_PREFIX_PATH="${GITHUB_WORKSPACE}/sandbox" \ -DBUILD_TESTING=ON \ diff --git a/.github/workflows/geneva_metrics.yml b/.github/workflows/geneva_metrics.yml index 0748c813b..3f0cbfc86 100644 --- a/.github/workflows/geneva_metrics.yml +++ b/.github/workflows/geneva_metrics.yml @@ -27,32 +27,16 @@ jobs: uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - path: "otel_cpp_contrib" - - name: checkout otel cpp - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - repository: "open-telemetry/opentelemetry-cpp" - ref: "v1.23.0" - path: "otel_cpp" - submodules: "recursive" - name: setup - working-directory: otel_cpp_contrib/exporters/geneva + working-directory: exporters/geneva run: | sudo apt update -y xargs -a apt-packages.txt sudo apt install -y --no-install-recommends --no-install-suggests - name: run tests + working-directory: exporters/geneva run: | - pushd "$GITHUB_WORKSPACE/otel_cpp" - sudo ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release --packages "googletest;benchmark" - popd - mkdir -p "$GITHUB_WORKSPACE/otel_cpp/build" - cd "$GITHUB_WORKSPACE/otel_cpp/build" - cmake .. -DOPENTELEMETRY_INSTALL=ON - cmake --build . -j$(nproc) - cmake --install . --prefix "$HOME/prebuilt-otel" - mkdir -p "$GITHUB_WORKSPACE/otel_cpp_contrib/exporters/geneva/build" - cd "$GITHUB_WORKSPACE/otel_cpp_contrib/exporters/geneva/build" + mkdir -p "build" + cd "build" cmake .. "-DCMAKE_PREFIX_PATH=$HOME/prebuilt-otel" \ -DBUILD_TESTING=ON -DWITH_EXAMPLES=ON cmake --build . -j$(nproc) diff --git a/.github/workflows/glog.yml b/.github/workflows/glog.yml index 918299ef6..25d16b2c6 100644 --- a/.github/workflows/glog.yml +++ b/.github/workflows/glog.yml @@ -35,14 +35,6 @@ jobs: with: persist-credentials: false path: opentelemetry-cpp-contrib - - name: checkout opentelemetry-cpp - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - repository: "open-telemetry/opentelemetry-cpp" - ref: "v1.19.0" - path: "opentelemetry-cpp" - submodules: "recursive" - name: setup dependencies working-directory: opentelemetry-cpp-contrib/instrumentation/glog run: | @@ -55,18 +47,12 @@ jobs: cmake .. -G Ninja cmake --build . -j$(nproc) cmake --install . --prefix="${GITHUB_WORKSPACE}/sandbox" - - name: build opentelemetry-cpp - run: | - mkdir -p "${GITHUB_WORKSPACE}/opentelemetry-cpp/build" - cd "${GITHUB_WORKSPACE}/opentelemetry-cpp/build" - cmake .. -G Ninja -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON - cmake --build . -j$(nproc) - cmake --install . --prefix="${GITHUB_WORKSPACE}/sandbox" - name: build instrumentation/glog contrib + working-directory: opentelemetry-cpp-contrib/instrumentation/glog run: | - mkdir -p "${GITHUB_WORKSPACE}/instrumentation-glog/build" - cd "${GITHUB_WORKSPACE}/instrumentation-glog/build" - cmake ../../opentelemetry-cpp-contrib/instrumentation/glog \ + mkdir -p "build" + cd "build" + cmake .. \ -G Ninja \ -DCMAKE_PREFIX_PATH="${GITHUB_WORKSPACE}/sandbox" \ -DBUILD_TESTING=ON \ diff --git a/.github/workflows/log4cxx.yml b/.github/workflows/log4cxx.yml index 01efeee62..a5fcef42e 100644 --- a/.github/workflows/log4cxx.yml +++ b/.github/workflows/log4cxx.yml @@ -27,32 +27,17 @@ jobs: uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - path: opentelemetry-cpp-contrib - - name: checkout opentelemetry-cpp - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - repository: "open-telemetry/opentelemetry-cpp" - ref: "v1.19.0" - path: "opentelemetry-cpp" - submodules: "recursive" - name: setup dependencies - working-directory: opentelemetry-cpp-contrib/instrumentation/log4cxx + working-directory: instrumentation/log4cxx run: | sudo apt update -y xargs -a apt-packages.txt sudo apt install -y --no-install-recommends --no-install-suggests - - name: build opentelemetry-cpp - run: | - mkdir -p "${GITHUB_WORKSPACE}/opentelemetry-cpp/build" - cd "${GITHUB_WORKSPACE}/opentelemetry-cpp/build" - cmake .. -G Ninja -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON - cmake --build . -j$(nproc) - cmake --install . --prefix="${GITHUB_WORKSPACE}/sandbox" - name: build instrumentation/log4cxx contrib + working-directory: instrumentation/log4cxx run: | - mkdir -p "${GITHUB_WORKSPACE}/instrumentation-log4cxx/build" - cd "${GITHUB_WORKSPACE}/instrumentation-log4cxx/build" - cmake ../../opentelemetry-cpp-contrib/instrumentation/log4cxx \ + mkdir -p "build" + cd "build" + cmake .. \ -G Ninja \ -DCMAKE_PREFIX_PATH="${GITHUB_WORKSPACE}/sandbox" \ -DBUILD_TESTING=ON \ diff --git a/.github/workflows/spdlog.yml b/.github/workflows/spdlog.yml index 995257786..55f5938c5 100644 --- a/.github/workflows/spdlog.yml +++ b/.github/workflows/spdlog.yml @@ -27,32 +27,17 @@ jobs: uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - path: opentelemetry-cpp-contrib - - name: checkout opentelemetry-cpp - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - repository: "open-telemetry/opentelemetry-cpp" - ref: "v1.24.0" - path: "opentelemetry-cpp" - submodules: "recursive" - name: setup dependencies - working-directory: opentelemetry-cpp-contrib/instrumentation/spdlog + working-directory: instrumentation/spdlog run: | sudo apt update -y xargs -a apt-packages.txt sudo apt install -y --no-install-recommends --no-install-suggests - - name: build opentelemetry-cpp - run: | - mkdir -p "${GITHUB_WORKSPACE}/opentelemetry-cpp/build" - cd "${GITHUB_WORKSPACE}/opentelemetry-cpp/build" - cmake .. -G Ninja -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON - cmake --build . -j$(nproc) - cmake --install . --prefix="${GITHUB_WORKSPACE}/sandbox" - name: build instrumentation/spdlog contrib + working-directory: instrumentation/spdlog run: | - mkdir -p "${GITHUB_WORKSPACE}/instrumentation-spdlog/build" - cd "${GITHUB_WORKSPACE}/instrumentation-spdlog/build" - cmake ../../opentelemetry-cpp-contrib/instrumentation/spdlog \ + mkdir -p "build" + cd "build" + cmake .. \ -G Ninja \ -DCMAKE_PREFIX_PATH="${GITHUB_WORKSPACE}/sandbox" \ -DBUILD_TESTING=ON \ diff --git a/.github/workflows/user_events.yml b/.github/workflows/user_events.yml index f2fdb0878..1afe8de48 100644 --- a/.github/workflows/user_events.yml +++ b/.github/workflows/user_events.yml @@ -27,25 +27,17 @@ jobs: uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - path: opentelemetry-cpp-contrib - submodules: "recursive" - - name: checkout opentelemetry-cpp - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - repository: "open-telemetry/opentelemetry-cpp" - ref: "v1.23.0" - path: "opentelemetry-cpp" submodules: "recursive" - name: setup dependencies - working-directory: opentelemetry-cpp-contrib/exporters/user_events + working-directory: exporters/user_events run: | sudo apt update -y xargs -a apt-packages.txt sudo apt install -y --no-install-recommends --no-install-suggests - name: run tests + working-directory: exporters/user_events run: | - mkdir -p "$GITHUB_WORKSPACE/opentelemetry-cpp/build" - cd "$GITHUB_WORKSPACE/opentelemetry-cpp/build" - cmake .. -G Ninja -D OPENTELEMETRY_EXTERNAL_COMPONENT_PATH=$GITHUB_WORKSPACE/opentelemetry-cpp-contrib/exporters/user_events -D WITH_OTLP_HTTP=ON + mkdir -p "build" + cd "build" + cmake .. -G Ninja -D OPENTELEMETRY_EXTERNAL_COMPONENT_PATH=$GITHUB_WORKSPACE/exporters/user_events -D WITH_OTLP_HTTP=ON cmake --build . -j$(nproc) ctest -j1 --output-on-failure diff --git a/exporters/geneva-trace/CMakeLists.txt b/exporters/geneva-trace/CMakeLists.txt index 48b4c9ae6..004c1ba3f 100644 --- a/exporters/geneva-trace/CMakeLists.txt +++ b/exporters/geneva-trace/CMakeLists.txt @@ -8,8 +8,18 @@ if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) set(MAIN_PROJECT ON) endif() +include(FetchContent) + if(MAIN_PROJECT) option(WITH_EXAMPLES "Build examples" ON) + + FetchContent_Declare( + opentelemetry-cpp + GIT_REPOSITORY https://github.com/open-telemetry/opentelemetry-cpp.git + GIT_TAG b9cf499ff5715433848b316059714b5c59af1f2c # v1.21.0 + ) + + FetchContent_MakeAvailable(opentelemetry-cpp) endif() add_library(opentelemetry_exporter_geneva_trace INTERFACE) @@ -30,6 +40,10 @@ set_target_properties( opentelemetry_exporter_geneva_logs PROPERTIES EXPORT_NAME opentelemetry_exporter_geneva_logs) +if(MAIN_PROJECT) + target_link_libraries(opentelemetry_exporter_geneva_logs + PUBLIC opentelemetry-cpp::api) +endif() if(WITH_EXAMPLES) include_directories(include) @@ -65,4 +79,4 @@ if(OPENTELEMETRY_INSTALL) PATTERN "*.h") endif() -endif() \ No newline at end of file +endif() diff --git a/exporters/geneva-trace/third_party/opentelemetry-cpp b/exporters/geneva-trace/third_party/opentelemetry-cpp deleted file mode 160000 index b9cf499ff..000000000 --- a/exporters/geneva-trace/third_party/opentelemetry-cpp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b9cf499ff5715433848b316059714b5c59af1f2c diff --git a/exporters/geneva/CMakeLists.txt b/exporters/geneva/CMakeLists.txt index b01130c13..ce2300371 100644 --- a/exporters/geneva/CMakeLists.txt +++ b/exporters/geneva/CMakeLists.txt @@ -5,6 +5,8 @@ cmake_minimum_required(VERSION 3.12) # set(MAIN_PROJECT OFF) +include(FetchContent) + if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) project(opentelemetry-geneva-metrics) set(MAIN_PROJECT ON) @@ -17,7 +19,13 @@ endif() add_definitions(-DHAVE_CONSOLE_LOG) if(MAIN_PROJECT) - find_package(opentelemetry-cpp REQUIRED) + FetchContent_Declare( + opentelemetry-cpp + GIT_REPOSITORY https://github.com/open-telemetry/opentelemetry-cpp.git + GIT_TAG b9cf499ff5715433848b316059714b5c59af1f2c # v1.21.0 + ) + + FetchContent_MakeAvailable(opentelemetry-cpp) endif() include_directories(include) @@ -49,10 +57,8 @@ set_target_properties( PROPERTIES EXPORT_NAME opentelemetry_exporter_geneva_metrics) if(MAIN_PROJECT) - target_include_directories(opentelemetry_exporter_geneva_metrics - PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS}) target_link_libraries(opentelemetry_exporter_geneva_metrics - PUBLIC ${OPENTELEMETRY_CPP_LIBRARIES}) + PUBLIC opentelemetry-cpp::api) else() target_link_libraries(opentelemetry_exporter_geneva_metrics PUBLIC opentelemetry_metrics opentelemetry_resources opentelemetry_common) diff --git a/exporters/geneva/apt-packages.txt b/exporters/geneva/apt-packages.txt index 6a4aed3b0..58fff007e 100644 --- a/exporters/geneva/apt-packages.txt +++ b/exporters/geneva/apt-packages.txt @@ -4,3 +4,6 @@ wget git valgrind lcov +libbenchmark-dev +libgmock-dev +libgtest-dev diff --git a/exporters/user_events/CMakeLists.txt b/exporters/user_events/CMakeLists.txt index 84c27ab3b..6c9d156da 100644 --- a/exporters/user_events/CMakeLists.txt +++ b/exporters/user_events/CMakeLists.txt @@ -23,7 +23,14 @@ if(MAIN_PROJECT) find_package(Protobuf REQUIRED) find_package(CURL REQUIRED) find_package(nlohmann_json REQUIRED) - find_package(opentelemetry-cpp REQUIRED) + + FetchContent_Declare( + opentelemetry-cpp + GIT_REPOSITORY https://github.com/open-telemetry/opentelemetry-cpp.git + GIT_TAG ea1f0d61ce5baa5584b097266bf133d1f31e3607 # v1.23.0 + ) + + FetchContent_MakeAvailable(opentelemetry-cpp) endif() if(BUILD_TRACEPOINTS) @@ -54,10 +61,8 @@ target_compile_definitions(opentelemetry_exporter_user_events_logs PUBLIC HAVE_CONSOLE_LOG HAVE_LOGS_PREVIEW) if(MAIN_PROJECT) - target_include_directories(opentelemetry_exporter_user_events_logs - PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS}) target_link_libraries(opentelemetry_exporter_user_events_logs - PUBLIC ${OPENTELEMETRY_CPP_LIBRARIES}) + PUBLIC opentelemetry-cpp::api) else() target_link_libraries( opentelemetry_exporter_user_events_logs @@ -76,11 +81,9 @@ target_compile_features(opentelemetry_exporter_user_events_metrics PRIVATE cxx_std_17) if(MAIN_PROJECT) - target_include_directories(opentelemetry_exporter_user_events_metrics - PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS}) target_link_libraries( opentelemetry_exporter_user_events_metrics - PUBLIC ${OPENTELEMETRY_CPP_LIBRARIES} tracepoint protobuf::libprotobuf) + PUBLIC opentelemetry-cpp::api tracepoint protobuf::libprotobuf) # TODO: link to opentelemetry_otlp_recordable else() target_link_libraries( @@ -131,9 +134,10 @@ if(WITH_BENCHMARK) GIT_REPOSITORY https://github.com/google/benchmark.git GIT_TAG 192ef10025eb2c4cdd392bc502f0c852196baa48 # v1.9.5 ) + FetchContent_MakeAvailable(benchmark) add_executable(user_events_logger_benchmark benchmark/logger_benchmark.cc) target_link_libraries( - user_events_logger_benchmark benchmark::benchmark ${CMAKE_THREAD_LIBS_INIT} + user_events_logger_benchmark benchmark::benchmark ${CMAKE_THREAD_LIBS_INIT} opentelemetry_logs opentelemetry_exporter_user_events_logs) endif() @@ -162,16 +166,10 @@ if(MAIN_PROJECT) PATTERN "*.h") else() otel_add_component( - COMPONENT - exporters_user_events - TARGETS - opentelemetry_exporter_user_events_logs - opentelemetry_exporter_user_events_metrics - FILES_DIRECTORY - "include/opentelemetry/exporters/user_events" - FILES_DESTINATION - "include/opentelemetry/exporters" + COMPONENT exporters_user_events + TARGETS opentelemetry_exporter_user_events_logs opentelemetry_exporter_user_events_metrics + FILES_DIRECTORY "include/opentelemetry/exporters/user_events" + FILES_DESTINATION "include/opentelemetry/exporters" FILES_MATCHING - PATTERN - "*.h") -endif() \ No newline at end of file + PATTERN "*.h") +endif() diff --git a/exporters/user_events/apt-packages.txt b/exporters/user_events/apt-packages.txt index 8e2ecb074..6e0cf2553 100644 --- a/exporters/user_events/apt-packages.txt +++ b/exporters/user_events/apt-packages.txt @@ -5,3 +5,7 @@ libssl-dev libcurl4-openssl-dev libprotobuf-dev protobuf-compiler +nlohmann-json3-dev +libbenchmark-dev +libgmock-dev +libgtest-dev diff --git a/instrumentation/boost_log/CMakeLists.txt b/instrumentation/boost_log/CMakeLists.txt index 31272b2d6..758966e6d 100644 --- a/instrumentation/boost_log/CMakeLists.txt +++ b/instrumentation/boost_log/CMakeLists.txt @@ -5,17 +5,33 @@ cmake_minimum_required(VERSION 3.12) set(this_target opentelemetry_boost_log_sink) -project(${this_target}) +set(MAIN_PROJECT OFF) + +if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) + set(MAIN_PROJECT ON) + project(${this_target}) + message(STATUS "${PROJECT_NAME} is main project") +endif() include(FetchContent) -find_package(opentelemetry-cpp REQUIRED) +if(MAIN_PROJECT) + FetchContent_Declare( + opentelemetry-cpp + GIT_REPOSITORY https://github.com/open-telemetry/opentelemetry-cpp.git + GIT_TAG b9cf499ff5715433848b316059714b5c59af1f2c # v1.21.0 + ) + + FetchContent_MakeAvailable(opentelemetry-cpp) +endif() + find_package(Boost 1.73 COMPONENTS log REQUIRED) add_library(${this_target} src/sink.cc) target_compile_options(${this_target} PUBLIC -Wall -Wextra -Werror -Wpedantic -fPIC + -Wno-error=deprecated-declarations ) set_target_properties(${this_target} PROPERTIES EXPORT_NAME ${this_target}) @@ -23,51 +39,44 @@ set_target_properties(${this_target} PROPERTIES EXPORT_NAME ${this_target}) target_include_directories(${this_target} PUBLIC $ $ - ${OPENTELEMETRY_CPP_INCLUDE_DIRS} ) +if(MAIN_PROJECT) + target_link_libraries(${this_target} PUBLIC + opentelemetry-cpp::api + ) +endif() + target_link_libraries(${this_target} PRIVATE Boost::log ) if(OPENTELEMETRY_INSTALL) - include(GNUInstallDirs) - include(CMakePackageConfigHelpers) - - install( - TARGETS ${this_target} - EXPORT "${PROJECT_NAME}-target" - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - - install( - DIRECTORY include/opentelemetry/instrumentation/boost_log - DESTINATION include/opentelemetry/instrumentation - FILES_MATCHING - PATTERN "*.h") - - configure_package_config_file( - "${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}-config.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}/${PROJECT_NAME}-config.cmake" - INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" - NO_CHECK_REQUIRED_COMPONENTS_MACRO) - - install( - FILES - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}/${PROJECT_NAME}-config.cmake" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") - - export( - EXPORT "${PROJECT_NAME}-target" - NAMESPACE ${PROJECT_NAME}:: - FILE "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/${PROJECT_NAME}-target.cmake") - - install( - EXPORT "${PROJECT_NAME}-target" - NAMESPACE ${PROJECT_NAME}:: - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") + if(MAIN_PROJECT) + include(GNUInstallDirs) + + install( + TARGETS ${this_target} + EXPORT "${PROJECT_NAME}-target" + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + install( + DIRECTORY include/opentelemetry/instrumentation/boost_log + DESTINATION include/opentelemetry/instrumentation + FILES_MATCHING + PATTERN "*.h") + else() + otel_add_component( + COMPONENT instrumentation_boost_log + TARGETS ${this_target} + FILES_DIRECTORY "include/opentelemetry/instrumentation/boost_log" + FILES_DESTINATION "include/opentelemetry/instrumentation" + FILES_MATCHING + PATTERN "*.h") + endif() endif() # OPENTELEMETRY_INSTALL if(BUILD_TESTING) @@ -89,7 +98,6 @@ if(BUILD_TESTING) target_include_directories(${testname} PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include - ${OPENTELEMETRY_CPP_INCLUDE_DIRS} ) target_link_libraries(${testname} PRIVATE @@ -115,7 +123,6 @@ if(WITH_EXAMPLES) target_include_directories(${example_exe} PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include - ${OPENTELEMETRY_CPP_INCLUDE_DIRS} ) target_link_libraries(${example_exe} PRIVATE diff --git a/instrumentation/boost_log/apt-packages.txt b/instrumentation/boost_log/apt-packages.txt index 6915c8bec..dacd07a9b 100644 --- a/instrumentation/boost_log/apt-packages.txt +++ b/instrumentation/boost_log/apt-packages.txt @@ -6,3 +6,6 @@ libcurl4-openssl-dev libprotobuf-dev protobuf-compiler libboost-log-dev +libbenchmark-dev +libgmock-dev +libgtest-dev diff --git a/instrumentation/glog/CMakeLists.txt b/instrumentation/glog/CMakeLists.txt index 8cbe160f5..10b26598f 100644 --- a/instrumentation/glog/CMakeLists.txt +++ b/instrumentation/glog/CMakeLists.txt @@ -5,17 +5,32 @@ cmake_minimum_required(VERSION 3.12) set(this_target opentelemetry_glog_sink) -project(${this_target}) +set(MAIN_PROJECT OFF) + +if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) + set(MAIN_PROJECT ON) + project(${this_target}) + message(STATUS "${PROJECT_NAME} is main project") +endif() include(FetchContent) -find_package(opentelemetry-cpp REQUIRED) +if(MAIN_PROJECT) + FetchContent_Declare( + opentelemetry-cpp + GIT_REPOSITORY https://github.com/open-telemetry/opentelemetry-cpp.git + GIT_TAG b9cf499ff5715433848b316059714b5c59af1f2c # v1.21.0 + ) +endif() + +FetchContent_MakeAvailable(opentelemetry-cpp) find_package(glog 0.7.0 REQUIRED) add_library(${this_target} src/sink.cc) target_compile_options(${this_target} PUBLIC -Wall -Wextra -Werror -Wpedantic -fPIC + -Wno-error=deprecated-declarations ) set_target_properties(${this_target} PROPERTIES EXPORT_NAME ${this_target}) @@ -23,56 +38,47 @@ set_target_properties(${this_target} PROPERTIES EXPORT_NAME ${this_target}) target_include_directories(${this_target} PUBLIC $ $ - ${OPENTELEMETRY_CPP_INCLUDE_DIRS} ) +if(MAIN_PROJECT) + target_link_libraries(${this_target} PUBLIC + opentelemetry-cpp::api + ) +endif() + target_link_libraries(${this_target} PRIVATE glog::glog ) if(OPENTELEMETRY_INSTALL) - include(GNUInstallDirs) - include(CMakePackageConfigHelpers) - - install( - TARGETS ${this_target} - EXPORT "${PROJECT_NAME}-target" - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - - install( - DIRECTORY include/opentelemetry/instrumentation/glog - DESTINATION include/opentelemetry/instrumentation - FILES_MATCHING - PATTERN "*.h") - - configure_package_config_file( - "${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}-config.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}/${PROJECT_NAME}-config.cmake" - INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" - NO_CHECK_REQUIRED_COMPONENTS_MACRO) - - install( - FILES - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}/${PROJECT_NAME}-config.cmake" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") - - export( - EXPORT "${PROJECT_NAME}-target" - NAMESPACE ${PROJECT_NAME}:: - FILE "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/${PROJECT_NAME}-target.cmake") - - install( - EXPORT "${PROJECT_NAME}-target" - NAMESPACE ${PROJECT_NAME}:: - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") + if(MAIN_PROJECT) + include(GNUInstallDirs) + + install( + TARGETS ${this_target} + EXPORT "${PROJECT_NAME}-target" + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + install( + DIRECTORY include/opentelemetry/instrumentation/glog + DESTINATION include/opentelemetry/instrumentation + FILES_MATCHING + PATTERN "*.h") + else() + otel_add_component( + COMPONENT instrumentation_glog + TARGETS ${this_target} + FILES_DIRECTORY "include/opentelemetry/instrumentation/prometheus" + FILES_DESTINATION "include/opentelemetry/instrumentation" + FILES_MATCHING + PATTERN "*.h") + endif() endif() # OPENTELEMETRY_INSTALL if(BUILD_TESTING) - include(FetchContent) - FetchContent_Declare( googletest GIT_REPOSITORY https://github.com/google/googletest.git @@ -91,7 +97,6 @@ if(BUILD_TESTING) target_include_directories(${testname} PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include - ${OPENTELEMETRY_CPP_INCLUDE_DIRS} ) target_link_libraries(${testname} PRIVATE @@ -116,7 +121,6 @@ if(WITH_EXAMPLES) target_include_directories(${example_exe} PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include - ${OPENTELEMETRY_CPP_INCLUDE_DIRS} ) target_link_libraries(${example_exe} PRIVATE diff --git a/instrumentation/glog/apt-packages.txt b/instrumentation/glog/apt-packages.txt index 282a51e8f..c72443e17 100644 --- a/instrumentation/glog/apt-packages.txt +++ b/instrumentation/glog/apt-packages.txt @@ -6,3 +6,5 @@ libcurl4-openssl-dev libprotobuf-dev protobuf-compiler libbenchmark-dev +libgmock-dev +libgtest-dev diff --git a/instrumentation/log4cxx/CMakeLists.txt b/instrumentation/log4cxx/CMakeLists.txt index 2c0ea2cc4..7172c4db5 100644 --- a/instrumentation/log4cxx/CMakeLists.txt +++ b/instrumentation/log4cxx/CMakeLists.txt @@ -5,18 +5,26 @@ cmake_minimum_required(VERSION 3.12) set(this_target opentelemetry_log4cxx_appender) -project(${this_target}) +set(MAIN_PROJECT OFF) -include(FetchContent) +if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) + set(MAIN_PROJECT ON) + project(${this_target}) + message(STATUS "${PROJECT_NAME} is main project") +endif() -find_package(opentelemetry-cpp QUIET) +include(FetchContent) -if (opentelemetry-cpp_FOUND) - message(STATUS "Found opentelemetry-cpp version: ${opentelemetry-cpp_VERSION}") -else() - message(FATAL_ERROR "Could not find opentelemetry-cpp") +if(MAIN_PROJECT) + FetchContent_Declare( + opentelemetry-cpp + GIT_REPOSITORY https://github.com/open-telemetry/opentelemetry-cpp.git + GIT_TAG b9cf499ff5715433848b316059714b5c59af1f2c # v1.21.0 + ) endif() +FetchContent_MakeAvailable(opentelemetry-cpp) + find_package(log4cxx QUIET) if (log4cxx_FOUND) @@ -28,8 +36,9 @@ endif() add_library(${this_target} src/appender.cc) -target_compile_options(${this_target} - PUBLIC -Wall -Wextra -Werror -Wpedantic -fPIC +target_compile_options(${this_target} PUBLIC + -Wall -Wextra -Werror -Wpedantic -fPIC + -Wno-error=deprecated-declarations ) set_target_properties(${this_target} PROPERTIES EXPORT_NAME ${this_target}) @@ -38,51 +47,44 @@ target_include_directories(${this_target} PUBLIC $ $ $ - ${OPENTELEMETRY_CPP_INCLUDE_DIRS} ) +if(MAIN_PROJECT) + target_link_libraries(${this_target} PUBLIC + opentelemetry-cpp::api + ) +endif() + target_link_libraries(${this_target} PRIVATE log4cxx ) if(OPENTELEMETRY_INSTALL) - include(GNUInstallDirs) - include(CMakePackageConfigHelpers) - - install( - TARGETS ${this_target} - EXPORT "${PROJECT_NAME}-target" - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - - install( - DIRECTORY include/opentelemetry/instrumentation/log4cxx - DESTINATION include/opentelemetry/instrumentation - FILES_MATCHING - PATTERN "*.h") - - configure_package_config_file( - "${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}-config.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}/${PROJECT_NAME}-config.cmake" - INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" - NO_CHECK_REQUIRED_COMPONENTS_MACRO) - - install( - FILES - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}/${PROJECT_NAME}-config.cmake" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") - - export( - EXPORT "${PROJECT_NAME}-target" - NAMESPACE ${PROJECT_NAME}:: - FILE "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/${PROJECT_NAME}-target.cmake") - - install( - EXPORT "${PROJECT_NAME}-target" - NAMESPACE ${PROJECT_NAME}:: - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") + if(MAIN_PROJECT) + include(GNUInstallDirs) + + install( + TARGETS ${this_target} + EXPORT "${PROJECT_NAME}-target" + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + install( + DIRECTORY include/opentelemetry/instrumentation/log4cxx + DESTINATION include/opentelemetry/instrumentation + FILES_MATCHING + PATTERN "*.h") + else() + otel_add_component( + COMPONENT instrumentation_log4cxx + TARGETS ${this_target} + FILES_DIRECTORY "include/opentelemetry/instrumentation/log4cxx" + FILES_DESTINATION "include/opentelemetry/instrumentation" + FILES_MATCHING + PATTERN "*.h") + endif() endif() # OPENTELEMETRY_INSTALL if(BUILD_TESTING) @@ -105,7 +107,6 @@ if(BUILD_TESTING) target_include_directories(${testname} PUBLIC $ ${CMAKE_CURRENT_LIST_DIR}/include - ${OPENTELEMETRY_CPP_INCLUDE_DIRS} ) target_link_libraries(${testname} PRIVATE @@ -132,7 +133,6 @@ if(WITH_EXAMPLES) target_include_directories(${example_exe} PUBLIC $ ${CMAKE_CURRENT_LIST_DIR}/include - ${OPENTELEMETRY_CPP_INCLUDE_DIRS} ) target_link_libraries(${example_exe} PRIVATE diff --git a/instrumentation/log4cxx/apt-packages.txt b/instrumentation/log4cxx/apt-packages.txt index fd4a22c09..4d44098c8 100644 --- a/instrumentation/log4cxx/apt-packages.txt +++ b/instrumentation/log4cxx/apt-packages.txt @@ -6,3 +6,6 @@ libcurl4-openssl-dev libprotobuf-dev protobuf-compiler liblog4cxx-dev +libbenchmark-dev +libgmock-dev +libgtest-dev diff --git a/instrumentation/spdlog/CMakeLists.txt b/instrumentation/spdlog/CMakeLists.txt index 6578e4f7c..e2cdf8198 100644 --- a/instrumentation/spdlog/CMakeLists.txt +++ b/instrumentation/spdlog/CMakeLists.txt @@ -5,11 +5,26 @@ cmake_minimum_required(VERSION 3.12) set(this_target opentelemetry_spdlog_sink) -project(${this_target}) +set(MAIN_PROJECT OFF) + +if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) + set(MAIN_PROJECT ON) + project(${this_target}) + message(STATUS "${PROJECT_NAME} is main project") +endif() include(FetchContent) -find_package(opentelemetry-cpp REQUIRED) +if(MAIN_PROJECT) + FetchContent_Declare( + opentelemetry-cpp + GIT_REPOSITORY https://github.com/open-telemetry/opentelemetry-cpp.git + GIT_TAG b9cf499ff5715433848b316059714b5c59af1f2c # v1.21.0 + ) + + FetchContent_MakeAvailable(opentelemetry-cpp) +endif() + find_package(spdlog REQUIRED) add_library(${this_target} src/sink.cc) @@ -23,51 +38,44 @@ set_target_properties(${this_target} PROPERTIES EXPORT_NAME ${this_target}) target_include_directories(${this_target} PUBLIC $ $ - ${OPENTELEMETRY_CPP_INCLUDE_DIRS} ) +if(MAIN_PROJECT) + target_link_libraries(${this_target} PUBLIC + opentelemetry-cpp::api + ) +endif() + target_link_libraries(${this_target} PRIVATE spdlog::spdlog ) if(OPENTELEMETRY_INSTALL) - include(GNUInstallDirs) - include(CMakePackageConfigHelpers) - - install( - TARGETS ${this_target} - EXPORT "${PROJECT_NAME}-target" - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - - install( - DIRECTORY include/opentelemetry/instrumentation/spdlog - DESTINATION include/opentelemetry/instrumentation - FILES_MATCHING - PATTERN "*.h") - - configure_package_config_file( - "${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}-config.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}/${PROJECT_NAME}-config.cmake" - INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" - NO_CHECK_REQUIRED_COMPONENTS_MACRO) - - install( - FILES - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}/${PROJECT_NAME}-config.cmake" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") - - export( - EXPORT "${PROJECT_NAME}-target" - NAMESPACE ${PROJECT_NAME}:: - FILE "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/${PROJECT_NAME}-target.cmake") - - install( - EXPORT "${PROJECT_NAME}-target" - NAMESPACE ${PROJECT_NAME}:: - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") + if(MAIN_PROJECT) + include(GNUInstallDirs) + + install( + TARGETS ${this_target} + EXPORT "${PROJECT_NAME}-target" + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + install( + DIRECTORY include/opentelemetry/instrumentation/spdlog + DESTINATION include/opentelemetry/instrumentation + FILES_MATCHING + PATTERN "*.h") + else() + otel_add_component( + COMPONENT instrumentation_spdlog + TARGETS ${this_target} + FILES_DIRECTORY "include/opentelemetry/instrumentation/spdlog" + FILES_DESTINATION "include/opentelemetry/instrumentation" + FILES_MATCHING + PATTERN "*.h") + endif() endif() # OPENTELEMETRY_INSTALL if(BUILD_TESTING) @@ -89,7 +97,6 @@ if(BUILD_TESTING) target_include_directories(${testname} PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include - ${OPENTELEMETRY_CPP_INCLUDE_DIRS} ) target_link_libraries(${testname} PRIVATE @@ -115,7 +122,6 @@ if(WITH_EXAMPLES) target_include_directories(${example_exe} PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include - ${OPENTELEMETRY_CPP_INCLUDE_DIRS} ) target_link_libraries(${example_exe} PRIVATE diff --git a/instrumentation/spdlog/apt-packages.txt b/instrumentation/spdlog/apt-packages.txt index 52a43121c..ed76f20eb 100644 --- a/instrumentation/spdlog/apt-packages.txt +++ b/instrumentation/spdlog/apt-packages.txt @@ -6,3 +6,6 @@ libcurl4-openssl-dev libprotobuf-dev protobuf-compiler libspdlog-dev +libbenchmark-dev +libgmock-dev +libgtest-dev