-
Notifications
You must be signed in to change notification settings - Fork 423
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
importing gsl::span if std::span is not available #1167
importing gsl::span if std::span is not available #1167
Conversation
Codecov Report
@@ Coverage Diff @@
## main #1167 +/- ##
=======================================
Coverage 93.29% 93.29%
=======================================
Files 174 174
Lines 6404 6404
=======================================
Hits 5974 5974
Misses 430 430
|
…lable-and-WITH_GSL-is-on
…lable-and-WITH_GSL-is-on
@@ -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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this check required?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
because __cpp_lib_span
is defined for C++17 on g++-10:g++-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0
.
I use these CMake options for build:
-DCMAKE_CXX_COMPILER=g++-10 -DCMAKE_CXX_STANDARD=17
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Which should be ok right? If the HAVE_CPP_STDLIB
option is specified, and the standard library provides the implementation ( stable or experimental) it should get selected. What is the behavior now with these changes on g++-10/C++17
- compilation failure as std::span is not available?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The behavior for g++-10/C++17
is that nostd::span
will be picked if the WITH_GSL
option was not used. I think we shouldn't use std::span
if the user explicitly asks for C++17
.
Shall I enable std::span
if C++17
was used and std::span
is available?
@@ -165,6 +155,20 @@ if(WITH_STL) | |||
endif() | |||
endif() | |||
|
|||
if(WITH_GSL) | |||
add_definitions(-DHAVE_GSL) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just to clarify- with this PR, GSL library will only be used if the WITH_GSL
flag is enabled?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes it is enabled only when the user explicitly asks for it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, I was thinking about this part in cmake:
opentelemetry-cpp/api/CMakeLists.txt
Lines 48 to 51 in 05d43d6
if(WITH_STL) | |
message("Building with standard library types...") | |
target_compile_definitions(opentelemetry_api INTERFACE HAVE_CPP_STDLIB | |
HAVE_GSL) |
As it looks we are enabling HAVE_GSL macro with WITH_STL option, which would mean try using gsl::span from submodule if STL doesn't have std::span implementation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
that is covered in
opentelemetry-cpp/api/include/opentelemetry/std/span.h
Lines 29 to 31 in bc1b469
# if !__has_include(<gsl/gsl>) | |
# undef HAVE_GSL | |
# endif |
WITH_GSL
is off.We shouldn't define it though, I cleaned it from the CMake file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, thanks for the clarification.
…lable-and-WITH_GSL-is-on
…lable-and-WITH_GSL-is-on
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with a minor suggestion.
…lable-and-WITH_GSL-is-on
Fixes #813 (issue)
Changes
If the
WITH_STL
cmake option is enabled, the build will usestd::span
if available (for C++20), and fall back tonostd::span
instead ofgsl::span
(or perhaps fail the build). Usesgsl::span
only if explicitly specified theWITH_GSL
build option.For significant contributions please make sure you have completed the following items:
CHANGELOG.md
updated for non-trivial changes