vcpkg/ports/google-cloud-cpp/support_absl_cxx17.patch
Carlos O'Ryan d8d61c941c
[google-cloud-cpp] update to latest release (v1.36.0) (#22897)
I updated the patch for `abseil[cxx17]`. Unfortunately the patch
includes the version of `google-cloud-cpp`, I will try to fix things
upstream so we do not need to go through this on each release.
2022-02-02 12:41:17 -08:00

34 lines
1.3 KiB
Diff

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0e2b703..7097f06 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -28,8 +28,13 @@ project(
VERSION 1.36.0
LANGUAGES CXX C)
-# Allow applications to override the CMAKE_CXX_STANDARD, but if not set use 11.
-if (NOT CMAKE_CXX_STANDARD)
+find_package(absl CONFIG REQUIRED)
+
+# Use CMAKE_CXX_STANDARD=17 if ABSL_USE_CXX17 is set
+if (ABSL_USE_CXX17)
+ message(STATUS "Found absl uses CXX17, enable CXX17 feature.")
+ set(CMAKE_CXX_STANDARD 17)
+elseif (NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 11)
endif ()
if (CMAKE_CXX_STANDARD VERSION_LESS 11)
diff --git a/google/cloud/internal/port_platform.h b/google/cloud/internal/port_platform.h
index c9f34cf..e624004 100644
--- a/google/cloud/internal/port_platform.h
+++ b/google/cloud/internal/port_platform.h
@@ -49,6 +49,8 @@
// Abort compilation if the compiler does not support C++11.
#if GOOGLE_CLOUD_CPP_CPP_VERSION < 201103L
# error "C++11 or newer is required"
+#elif defined(ABSL_USE_CXX17) && GOOGLE_CLOUD_CPP_CPP_VERSION < 201703L
+# error "Compiled to use Abseil with C++17 support, but using with C++ < C++17"
#endif // GOOGLE_CLOUD_CPP_CPP_VERSION < 201103L
// Abort the build if the version of the compiler is too old. With CMake we