diff --git a/CMakeLists.txt b/CMakeLists.txt index b6833a3b..90d3fb50 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,7 +102,9 @@ else() ) endif() -option(WITH_STL "Whether to use Standard Library for C++latest features" OFF) +option(WITH_STL "Whether to use Standard Library for C++ latest features" OFF) +option(WITH_GSL + "Whether to use Guidelines Support Library for C++ latest features" OFF) option(WITH_ABSEIL "Whether to use Abseil for C++latest features" OFF) @@ -137,18 +139,6 @@ if(WITH_STL) # (absl::variant or std::variant) in variant unit test code is consistent with # the global project build definitions. add_definitions(-DHAVE_CPP_STDLIB) - add_definitions(-DHAVE_GSL) - - # Guidelines Support Library path. Used if we are not on not get C++20. - # - # TODO: respect WITH_ABSEIL as alternate implementation of std::span - find_package(Microsoft.GSL QUIET) - if(TARGET Microsoft.GSL::GSL) - list(APPEND CORE_RUNTIME_LIBS Microsoft.GSL::GSL) - else() - set(GSL_DIR third_party/ms-gsl) - include_directories(${GSL_DIR}/include) - endif() # Optimize for speed to reduce the hops if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") @@ -165,6 +155,20 @@ if(WITH_STL) endif() endif() +if(WITH_GSL) + add_definitions(-DHAVE_GSL) + + # Guidelines Support Library path. Used if we are not on not get C++20. + # + find_package(Microsoft.GSL QUIET) + if(TARGET Microsoft.GSL::GSL) + list(APPEND CORE_RUNTIME_LIBS Microsoft.GSL::GSL) + else() + set(GSL_DIR third_party/ms-gsl) + include_directories(${GSL_DIR}/include) + endif() +endif() + option(WITH_OTLP "Whether to include the OpenTelemetry Protocol in the SDK" OFF) option(WITH_ZIPKIN "Whether to include the Zipkin exporter in the SDK" OFF) diff --git a/api/CMakeLists.txt b/api/CMakeLists.txt index 83f89db0..adea77ca 100644 --- a/api/CMakeLists.txt +++ b/api/CMakeLists.txt @@ -47,8 +47,7 @@ endif() if(WITH_STL) message("Building with standard library types...") - target_compile_definitions(opentelemetry_api INTERFACE HAVE_CPP_STDLIB - HAVE_GSL) + target_compile_definitions(opentelemetry_api INTERFACE HAVE_CPP_STDLIB) else() message("Building with nostd types...") endif() diff --git a/api/include/opentelemetry/std/span.h b/api/include/opentelemetry/std/span.h index ae614a94..5fdff57f 100644 --- a/api/include/opentelemetry/std/span.h +++ b/api/include/opentelemetry/std/span.h @@ -11,7 +11,7 @@ #if defined __has_include # if __has_include() // Check for __cpp_{feature} # include -# if defined(__cpp_lib_span) +# if defined(__cpp_lib_span) && __cplusplus > 201703L # define HAVE_SPAN # endif # endif @@ -21,7 +21,7 @@ # define HAVE_SPAN # endif # // Check for other compiler span implementation -# if !defined(_MSVC_LANG) && __has_include() +# if !defined(_MSVC_LANG) && __has_include() && __cplusplus > 201703L // This works as long as compiler standard is set to C++20 # define HAVE_SPAN # endif diff --git a/sdk/include/opentelemetry/sdk/instrumentationlibrary/instrumentation_library.h b/sdk/include/opentelemetry/sdk/instrumentationlibrary/instrumentation_library.h index 48f13b78..b288aa5b 100644 --- a/sdk/include/opentelemetry/sdk/instrumentationlibrary/instrumentation_library.h +++ b/sdk/include/opentelemetry/sdk/instrumentationlibrary/instrumentation_library.h @@ -3,6 +3,7 @@ #pragma once +#include #include "opentelemetry/nostd/string_view.h" #include "opentelemetry/nostd/unique_ptr.h" #include "opentelemetry/version.h"