100 lines
3.0 KiB
Diff
100 lines
3.0 KiB
Diff
diff --git a/CMake/AbseilDll.cmake b/CMake/AbseilDll.cmake
|
|
index 32cc28f..e51d6df 100644
|
|
--- a/CMake/AbseilDll.cmake
|
|
+++ b/CMake/AbseilDll.cmake
|
|
@@ -699,31 +699,44 @@ set(ABSL_INTERNAL_TEST_DLL_TARGETS
|
|
|
|
include(CheckCXXSourceCompiles)
|
|
|
|
-check_cxx_source_compiles(
|
|
- [==[
|
|
-#ifdef _MSC_VER
|
|
-# if _MSVC_LANG < 201703L
|
|
-# error "The compiler defaults or is configured for C++ < 17"
|
|
-# endif
|
|
-#elif __cplusplus < 201703L
|
|
-# error "The compiler defaults or is configured for C++ < 17"
|
|
-#endif
|
|
-int main() { return 0; }
|
|
-]==]
|
|
+message(WARNING "ABSL_CXX_STANDARD: ${ABSL_CXX_STANDARD}")
|
|
+message(WARNING "CMAKE_CXX_STANDARD: ${CMAKE_CXX_STANDARD}")
|
|
+message(WARNING "CMAKE_CXX_STANDARD_REQUIRED: ${CMAKE_CXX_STANDARD_REQUIRED}")
|
|
+message(WARNING "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
|
|
+
|
|
+if(CMAKE_CXX_STANDARD GREATER_EQUAL 17)
|
|
+ set(ABSL_INTERNAL_AT_LEAST_CXX17 TRUE)
|
|
+else()
|
|
+ check_cxx_source_compiles(
|
|
+ [==[
|
|
+ #ifdef _MSC_VER
|
|
+ # if _MSVC_LANG < 201703L
|
|
+ # error "The compiler defaults or is configured for C++ < 17"
|
|
+ # endif
|
|
+ #elif __cplusplus < 201703L
|
|
+ # error "The compiler defaults or is configured for C++ < 17"
|
|
+ #endif
|
|
+ int main() { return 0; }
|
|
+ ]==]
|
|
ABSL_INTERNAL_AT_LEAST_CXX17)
|
|
+endif()
|
|
|
|
-check_cxx_source_compiles(
|
|
- [==[
|
|
-#ifdef _MSC_VER
|
|
-# if _MSVC_LANG < 202002L
|
|
-# error "The compiler defaults or is configured for C++ < 20"
|
|
-# endif
|
|
-#elif __cplusplus < 202002L
|
|
-# error "The compiler defaults or is configured for C++ < 20"
|
|
-#endif
|
|
-int main() { return 0; }
|
|
-]==]
|
|
+if(CMAKE_CXX_STANDARD GREATER_EQUAL 20)
|
|
+ set(ABSL_INTERNAL_AT_LEAST_CXX20 TRUE)
|
|
+else()
|
|
+ check_cxx_source_compiles(
|
|
+ [==[
|
|
+ #ifdef _MSC_VER
|
|
+ # if _MSVC_LANG < 202002L
|
|
+ # error "The compiler defaults or is configured for C++ < 20"
|
|
+ # endif
|
|
+ #elif __cplusplus < 202002L
|
|
+ # error "The compiler defaults or is configured for C++ < 20"
|
|
+ #endif
|
|
+ int main() { return 0; }
|
|
+ ]==]
|
|
ABSL_INTERNAL_AT_LEAST_CXX20)
|
|
+endif()
|
|
|
|
if(ABSL_INTERNAL_AT_LEAST_CXX20)
|
|
set(ABSL_INTERNAL_CXX_STD_FEATURE cxx_std_20)
|
|
@@ -731,6 +744,7 @@ elseif(ABSL_INTERNAL_AT_LEAST_CXX17)
|
|
set(ABSL_INTERNAL_CXX_STD_FEATURE cxx_std_17)
|
|
else()
|
|
set(ABSL_INTERNAL_CXX_STD_FEATURE cxx_std_14)
|
|
+ message(FATAL_ERROR "Should not pass here !!!")
|
|
endif()
|
|
|
|
function(absl_internal_dll_contains)
|
|
diff --git a/absl/flags/declare.h b/absl/flags/declare.h
|
|
index 8d2a856..a154046 100644
|
|
--- a/absl/flags/declare.h
|
|
+++ b/absl/flags/declare.h
|
|
@@ -59,10 +59,15 @@ ABSL_NAMESPACE_END
|
|
|
|
// Internal implementation of ABSL_DECLARE_FLAG to allow macro expansion of its
|
|
// arguments. Clients must use ABSL_DECLARE_FLAG instead.
|
|
+#if defined(_MSC_VER)
|
|
+#define ABSL_DECLARE_FLAG_INTERNAL(type, name) \
|
|
+ extern absl::Flag<type> FLAGS_##name
|
|
+#else
|
|
#define ABSL_DECLARE_FLAG_INTERNAL(type, name) \
|
|
extern absl::Flag<type> FLAGS_##name; \
|
|
namespace absl /* block flags in namespaces */ {} \
|
|
/* second redeclaration is to allow applying attributes */ \
|
|
extern absl::Flag<type> FLAGS_##name
|
|
+#endif // _MSC_VER
|
|
|
|
#endif // ABSL_FLAGS_DECLARE_H_
|