importing gsl::span if std::span is not available (#1167)

This commit is contained in:
Ehsan Saei 2022-01-25 04:14:20 +01:00 коммит произвёл GitHub
Родитель 2a821fdfa5
Коммит a605fd9116
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
4 изменённых файлов: 21 добавлений и 17 удалений

Просмотреть файл

@ -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)

Просмотреть файл

@ -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()

Просмотреть файл

@ -11,7 +11,7 @@
#if defined __has_include
# if __has_include(<version>) // Check for __cpp_{feature}
# include <version>
# 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(<span>)
# if !defined(_MSVC_LANG) && __has_include(<span>) && __cplusplus > 201703L
// This works as long as compiler standard is set to C++20
# define HAVE_SPAN
# endif

Просмотреть файл

@ -3,6 +3,7 @@
#pragma once
#include <string>
#include "opentelemetry/nostd/string_view.h"
#include "opentelemetry/nostd/unique_ptr.h"
#include "opentelemetry/version.h"