@@ -524,6 +524,50 @@ point.
524524# define OPENTELEMETRY_SANITIZER_NO_ADDRESS
525525#endif
526526
527+ // what foloows are overrides specific to github.com/malkia/opentelemetry-cpp's fork
528+ // where we force certain flags to be set, such that users of the library do not have to set them (through -Dxxx=yyy, etc.)
529+ // It assumes more strict target requirements: C++2017, exceptions/rtti ON, otel abi version 2, etc.
530+
531+ // Stick to C++2017 for now
532+ #ifdef OPENTELEMETRY_STL_VERSION
533+ #undef OPENTELEMETRY_STL_VERSION
534+ #endif
535+ #define OPENTELEMETRY_STL_VERSION 2017
536+
537+ #ifdef OPENTELEMETRY_RTTI_ENABLED
538+ #undef OPENTELEMETRY_RTTI_ENABLED
539+ #endif
540+ #define OPENTELEMETRY_RTTI_ENABLED 1
541+
542+ #ifdef OPENTELEMETRY_OPTION_USE_STD_SPAN
543+ #undef OPENTELEMETRY_OPTION_USE_STD_SPAN
544+ #endif
545+ #define OPENTELEMETRY_OPTION_USE_STD_SPAN 0 // Use the nostd version, std::span is in C++2020
546+
547+ #ifdef OPENTELEMETRY_TRIVIALITY_TYPE_TRAITS
548+ #undef OPENTELEMETRY_TRIVIALITY_TYPE_TRAITS
549+ #endif
550+ #define OPENTELEMETRY_TRIVIALITY_TYPE_TRAITS 1
551+
552+ #ifdef OPENTELEMETRY_HAVE_EXCEPTIONS
553+ #undef OPENTELEMETRY_HAVE_EXCEPTIONS
554+ #endif
555+ #define OPENTELEMETRY_HAVE_EXCEPTIONS 1
556+
557+ #ifdef OPENTELEMETRY_ABI_VERSION_NO
558+ #undef OPENTELEMETRY_ABI_VERSION_NO
559+ #endif
560+ #define OPENTELEMETRY_ABI_VERSION_NO 2 // Use the new api
561+
562+ // Enable specific library features
563+ #define ENABLE_METRICS_EXEMPLAR_PREVIEW 1
564+ #define ENABLE_ASYNC_EXPORT 1
565+ #define ENABLE_OTLP_GRPC_SSL_MTLS_PREVIEW 1
566+ #define ENABLE_OTLP_COMPRESSION_PREVIEW 1
567+ #define ENABLE_OTLP_RETRY_PREVIEW 1
568+ #define ENABLE_THREAD_INSTRUMENTATION_PREVIEW 1
569+ #define ENABLE_CURL_LOGGING 1
570+
527571// What follows is specific to the https://github.com/malkia/opentelemetry-cpp windows-dll branch.
528572// Users should not predefine OPENTELEMETRY_DLL, and it would get set to 1 ("dllimport").
529573// When building, using bazel --//:with_dll=true, OPENTELEMETRY_DLL is set to -1, except for tests.
@@ -550,25 +594,6 @@ point.
550594# if !defined(OPENTELEMETRY_RTTI_ENABLED)
551595# error OPENTELEMETRY_DLL: RTTI must be enabled.
552596# endif
553- // Build settings for otel_sdk are hard-coded in this file, so users don't have to define them.
554- # define OPENTELEMETRY_STL_VERSION 2017
555- # define OPENTELEMETRY_OPTION_USE_STD_SPAN 0 // Use the nostd version, std::span is in C++2020
556- # ifdef OPENTELEMETRY_ABI_VERSION_NO
557- # undef OPENTELEMETRY_ABI_VERSION_NO
558- # endif
559- # define OPENTELEMETRY_ABI_VERSION_NO 2 // Use the new api
560- # define ENABLE_METRICS_EXEMPLAR_PREVIEW 1
561- # define ENABLE_ASYNC_EXPORT 1
562- # define ENABLE_OTLP_GRPC_SSL_MTLS_PREVIEW 1
563- # define ENABLE_OTLP_COMPRESSION_PREVIEW 1
564- # define ENABLE_OTLP_RETRY_PREVIEW 1
565- # define ENABLE_THREAD_INSTRUMENTATION_PREVIEW 1
566- # define ENABLE_CURL_LOGGING 1
567- // We ensure that this is defined to a value of, as its gets encoded down in the detect_mismatch
568- # undef OPENTELEMETRY_RTTI_ENABLED
569- # define OPENTELEMETRY_RTTI_ENABLED 1
570- # undef OPENTELEMETRY_HAVE_EXCEPTIONS
571- # define OPENTELEMETRY_HAVE_EXCEPTIONS 1
572597# undef OPENTELEMETRY_EXPORT
573598# undef OPENTELEMETRY_EXPORT_TYPE
574599# undef OPENTELEMETRY_API_SINGLETON
@@ -597,27 +622,28 @@ point.
597622// The rule is that if there is struct/class with one or more OPENTELEMETRY_API_SINGLETON function members,
598623// then itself can't be defined OPENTELEMETRY_EXPORT
599624# define OPENTELEMETRY_API_SINGLETON OPENTELEMETRY_EXPORT
600- //
601- # if defined(_MSC_VER)
602- # define OPENTELEMETRY_DLL_STRX (x ) #x
603- # define OPENTELEMETRY_DLL_STR (x ) OPENTELEMETRY_DLL_STRX(x)
604- // TODO: Revisit what's broken here
605- # pragma detect_mismatch("otel_sdk_detect_mismatch", \
606- " +dll:" OPENTELEMETRY_DLL_STR(OPENTELEMETRY_DLL) \
607- " +stl:" OPENTELEMETRY_DLL_STR(OPENTELEMETRY_STL_VERSION) \
608- " +rtti:" OPENTELEMETRY_DLL_STR(OPENTELEMETRY_RTTI_ENABLED) \
609- " +std_span:" OPENTELEMETRY_DLL_STR(OPENTELEMETRY_OPTION_USE_STD_SPAN) \
610- " +abi:" OPENTELEMETRY_DLL_STR(OPENTELEMETRY_ABI_VERSION_NO) \
611- " +exemplar:" OPENTELEMETRY_DLL_STR(ENABLE_METRICS_EXEMPLAR_PREVIEW) \
612- " +async:" OPENTELEMETRY_DLL_STR(ENABLE_ASYNC_EXPORT) \
613- " +mtls:" OPENTELEMETRY_DLL_STR(ENABLE_OTLP_GRPC_SSL_MTLS_PREVIEW) \
614- " +otlp_compr:" OPENTELEMETRY_DLL_STR(ENABLE_OTLP_COMPRESSION_PREVIEW) \
615- " +otlp_retry:" OPENTELEMETRY_DLL_STR(ENABLE_OTLP_RETRY_PREVIEW) \
616- " +thrd_instr:" OPENTELEMETRY_DLL_STR(ENABLE_THREAD_INSTRUMENTATION_PREVIEW) \
617- " +curl_log:" OPENTELEMETRY_DLL_STR(ENABLE_CURL_LOGGING) \
618- )
619- # undef OPENTELEMETRY_DLL_STRX
620- # undef OPENTELEMETRY_DLL_STR
621-
622- # endif
623625#endif // if OPENTELEMETRY_DLL != 0
626+
627+ // this check only works for static library build
628+ #if defined(_MSC_VER)
629+ #define OPENTELEMETRY_STRX (x ) #x
630+ #define OPENTELEMETRY_STR (x ) OPENTELEMETRY_STRX(x)
631+ #pragma detect_mismatch("otel_sdk_detect_mismatch", \
632+ " +dll:" OPENTELEMETRY_STR(OPENTELEMETRY_DLL) \
633+ " +stl:" OPENTELEMETRY_STR(OPENTELEMETRY_STL_VERSION) \
634+ " +rtti:" OPENTELEMETRY_STR(OPENTELEMETRY_RTTI_ENABLED) \
635+ " +std_span:" OPENTELEMETRY_STR(OPENTELEMETRY_OPTION_USE_STD_SPAN) \
636+ " +type_traits:" OPENTELEMETRY_STR(OPENTELEMETRY_TRIVIALITY_TYPE_TRAITS) \
637+ " +have_excpts:" OPENTELEMETRY_STR(OPENTELEMETRY_HAVE_EXCEPTIONS) \
638+ " +abi:" OPENTELEMETRY_STR(OPENTELEMETRY_ABI_VERSION_NO) \
639+ " +exemplar:" OPENTELEMETRY_STR(ENABLE_METRICS_EXEMPLAR_PREVIEW) \
640+ " +async:" OPENTELEMETRY_STR(ENABLE_ASYNC_EXPORT) \
641+ " +mtls:" OPENTELEMETRY_STR(ENABLE_OTLP_GRPC_SSL_MTLS_PREVIEW) \
642+ " +otlp_compr:" OPENTELEMETRY_STR(ENABLE_OTLP_COMPRESSION_PREVIEW) \
643+ " +otlp_retry:" OPENTELEMETRY_STR(ENABLE_OTLP_RETRY_PREVIEW) \
644+ " +thrd_instr:" OPENTELEMETRY_STR(ENABLE_THREAD_INSTRUMENTATION_PREVIEW) \
645+ " +curl_log:" OPENTELEMETRY_STR(ENABLE_CURL_LOGGING) \
646+ )
647+ #undef OPENTELEMETRY_DLL_STRX
648+ #undef OPENTELEMETRY_DLL_STR
649+ #endif
0 commit comments