Skip to content

Commit 7d588e5

Browse files
committed
make the static build have same build/config flags as the dll one
1 parent 369fd4d commit 7d588e5

File tree

4 files changed

+74
-44
lines changed

4 files changed

+74
-44
lines changed

api/include/opentelemetry/common/macros.h

Lines changed: 68 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -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

api/include/opentelemetry/config.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33

44
#pragma once
55

6+
#include "version.h"
7+
68
#ifndef __has_include
79
# define OPENTELEMETRY_HAS_INCLUDE(x) 0
810
#else
911
# define OPENTELEMETRY_HAS_INCLUDE(x) __has_include(x)
1012
#endif
1113

14+
#ifndef OPENTELEMETRY_TRIVIALITY_TYPE_TRAITS
1215
#if !defined(__GLIBCXX__) || OPENTELEMETRY_HAS_INCLUDE(<codecvt>) // >= libstdc++-5
1316
# define OPENTELEMETRY_TRIVIALITY_TYPE_TRAITS
1417
#endif
15-
16-
#include "version.h"
18+
#endif

dll_deps_generated_non_windows.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ DLL_DEPS = {
3434
Label("@otel_sdk//ext/src/http/client/curl:http_client_curl"): None,
3535
Label("@otel_sdk//sdk:headers"): None,
3636
Label("@otel_sdk//sdk/src/common:base64"): None,
37+
Label("@otel_sdk//sdk/src/common:disabled"): None,
3738
Label("@otel_sdk//sdk/src/common:env_variables"): None,
3839
Label("@otel_sdk//sdk/src/common:global_log_handler"): None,
3940
Label("@otel_sdk//sdk/src/logs:logs"): None,

dll_deps_generated_windows.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ DLL_DEPS = {
3535
Label("@otel_sdk//ext/src/http/client/curl:http_client_curl"): None,
3636
Label("@otel_sdk//sdk:headers"): None,
3737
Label("@otel_sdk//sdk/src/common:base64"): None,
38+
Label("@otel_sdk//sdk/src/common:disabled"): None,
3839
Label("@otel_sdk//sdk/src/common:env_variables"): None,
3940
Label("@otel_sdk//sdk/src/common:global_log_handler"): None,
4041
Label("@otel_sdk//sdk/src/logs:logs"): None,

0 commit comments

Comments
 (0)