From ee36dd3abbeb1388ade6d285ddc3dd2d36a73cfe Mon Sep 17 00:00:00 2001 From: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:19:11 -0700 Subject: [PATCH] OpenTelemetry ApiView fix (#3784) --- eng/scripts/Get-ApiViewCommandLine.ps1 | 5 +++++ .../CMakeLists.txt | 1 + .../opentelemetry/internal/apiview.hpp | 22 +++++++++++++++++++ .../tracing/opentelemetry/opentelemetry.hpp | 5 +++++ 4 files changed, 33 insertions(+) create mode 100644 sdk/core/azure-core-tracing-opentelemetry/inc/azure/core/tracing/opentelemetry/internal/apiview.hpp diff --git a/eng/scripts/Get-ApiViewCommandLine.ps1 b/eng/scripts/Get-ApiViewCommandLine.ps1 index 9359416cf..5eeb9aa25 100644 --- a/eng/scripts/Get-ApiViewCommandLine.ps1 +++ b/eng/scripts/Get-ApiViewCommandLine.ps1 @@ -50,4 +50,9 @@ foreach ($incDir in $AllLibIncDirs) { $CmdLine += " -I " + $incDir } +# Define an _azure_APIVIEW macro so that the public headers that depend on 3rd party headers apply a work around +# for declaring 3rd party dependencies in a minimalistic way that is sufficient for the ApiView generation. +# Otherwise, ApiView would've been including 3rd party types for review, which is not what we want. +$CmdLine += " -D_azure_APIVIEW" + $CmdLine diff --git a/sdk/core/azure-core-tracing-opentelemetry/CMakeLists.txt b/sdk/core/azure-core-tracing-opentelemetry/CMakeLists.txt index 8fd5f3908..bf3077e67 100644 --- a/sdk/core/azure-core-tracing-opentelemetry/CMakeLists.txt +++ b/sdk/core/azure-core-tracing-opentelemetry/CMakeLists.txt @@ -40,6 +40,7 @@ if (BUILD_AZURE_CORE_TRACING_OPENTELEMETRY) set( AZURE_CORE_OPENTELEMETRY_HEADER + inc/azure/core/tracing/opentelemetry/internal/apiview.hpp inc/azure/core/tracing/opentelemetry/opentelemetry.hpp src/opentelemetry_private.hpp ) diff --git a/sdk/core/azure-core-tracing-opentelemetry/inc/azure/core/tracing/opentelemetry/internal/apiview.hpp b/sdk/core/azure-core-tracing-opentelemetry/inc/azure/core/tracing/opentelemetry/internal/apiview.hpp new file mode 100644 index 000000000..7360b018a --- /dev/null +++ b/sdk/core/azure-core-tracing-opentelemetry/inc/azure/core/tracing/opentelemetry/internal/apiview.hpp @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// SPDX-License-Identifier: MIT + +#pragma once + +// This file is supposed to be included only when generating files for ApiView. +// All the declarations here are only sufficient for the ApiView generation to not fail. + +namespace opentelemetry { +namespace nostd { + template struct shared_ptr + { + }; +} // namespace nostd +namespace trace { + struct TracerProvider; + struct Provider + { + static nostd::shared_ptr GetTracerProvider(); + }; +} // namespace trace +} // namespace opentelemetry diff --git a/sdk/core/azure-core-tracing-opentelemetry/inc/azure/core/tracing/opentelemetry/opentelemetry.hpp b/sdk/core/azure-core-tracing-opentelemetry/inc/azure/core/tracing/opentelemetry/opentelemetry.hpp index 00be39410..ce8142835 100644 --- a/sdk/core/azure-core-tracing-opentelemetry/inc/azure/core/tracing/opentelemetry/opentelemetry.hpp +++ b/sdk/core/azure-core-tracing-opentelemetry/inc/azure/core/tracing/opentelemetry/opentelemetry.hpp @@ -4,6 +4,10 @@ #pragma once #include + +#if defined(_azure_APIVIEW) +#include "azure/core/tracing/opentelemetry/internal/apiview.hpp" +#else #if defined(_MSC_VER) // The OpenTelemetry headers generate a couple of warnings on MSVC in the OTel 1.2 package, suppress // the warnings across the includes. @@ -17,6 +21,7 @@ #if defined(_MSC_VER) #pragma warning(pop) #endif +#endif namespace Azure { namespace Core { namespace Tracing { namespace OpenTelemetry {