|  | @@ -93,28 +93,6 @@
 | 
	
		
			
				|  |  |  #define ABSL_HAVE_TLS 1
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -// There are platforms for which TLS should not be used even though the compiler
 | 
	
		
			
				|  |  | -// makes it seem like it's supported (Android NDK < r12b for example).
 | 
	
		
			
				|  |  | -// This is primarily because of linker problems and toolchain misconfiguration:
 | 
	
		
			
				|  |  | -// Abseil does not intend to support this indefinitely. Currently, the newest
 | 
	
		
			
				|  |  | -// toolchain that we intend to support that requires this behavior is the
 | 
	
		
			
				|  |  | -// r11 NDK - allowing for a 5 year support window on that means this option
 | 
	
		
			
				|  |  | -// is likely to be removed around June of 2021.
 | 
	
		
			
				|  |  | -#if defined(__ANDROID__) && defined(__clang__)
 | 
	
		
			
				|  |  | -#if __has_include(<android/ndk-version.h>)
 | 
	
		
			
				|  |  | -#include <android/ndk-version.h>
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  | -// TLS isn't supported until NDK r12b per
 | 
	
		
			
				|  |  | -// https://developer.android.com/ndk/downloads/revision_history.html
 | 
	
		
			
				|  |  | -// Since NDK r16, `__NDK_MAJOR__` and `__NDK_MINOR__` are defined in
 | 
	
		
			
				|  |  | -// <android/ndk-version.h>. For NDK < r16, users should define these macros,
 | 
	
		
			
				|  |  | -// e.g. `-D__NDK_MAJOR__=11 -D__NKD_MINOR__=0` for NDK r11.
 | 
	
		
			
				|  |  | -#if defined(__NDK_MAJOR__) && defined(__NDK_MINOR__) && \
 | 
	
		
			
				|  |  | -    ((__NDK_MAJOR__ < 12) || ((__NDK_MAJOR__ == 12) && (__NDK_MINOR__ < 1)))
 | 
	
		
			
				|  |  | -#undef ABSL_HAVE_TLS
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  | -#endif  // defined(__ANDROID__) && defined(__clang__)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  // ABSL_HAVE_STD_IS_TRIVIALLY_DESTRUCTIBLE
 | 
	
		
			
				|  |  |  //
 | 
	
		
			
				|  |  |  // Checks whether `std::is_trivially_destructible<T>` is supported.
 | 
	
	
		
			
				|  | @@ -168,6 +146,30 @@
 | 
	
		
			
				|  |  |  #define ABSL_HAVE_THREAD_LOCAL 1
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// There are platforms for which TLS should not be used even though the compiler
 | 
	
		
			
				|  |  | +// makes it seem like it's supported (Android NDK < r12b for example).
 | 
	
		
			
				|  |  | +// This is primarily because of linker problems and toolchain misconfiguration:
 | 
	
		
			
				|  |  | +// Abseil does not intend to support this indefinitely. Currently, the newest
 | 
	
		
			
				|  |  | +// toolchain that we intend to support that requires this behavior is the
 | 
	
		
			
				|  |  | +// r11 NDK - allowing for a 5 year support window on that means this option
 | 
	
		
			
				|  |  | +// is likely to be removed around June of 2021.
 | 
	
		
			
				|  |  | +// TLS isn't supported until NDK r12b per
 | 
	
		
			
				|  |  | +// https://developer.android.com/ndk/downloads/revision_history.html
 | 
	
		
			
				|  |  | +// Since NDK r16, `__NDK_MAJOR__` and `__NDK_MINOR__` are defined in
 | 
	
		
			
				|  |  | +// <android/ndk-version.h>. For NDK < r16, users should define these macros,
 | 
	
		
			
				|  |  | +// e.g. `-D__NDK_MAJOR__=11 -D__NKD_MINOR__=0` for NDK r11.
 | 
	
		
			
				|  |  | +#if defined(__ANDROID__) && defined(__clang__)
 | 
	
		
			
				|  |  | +#if __has_include(<android/ndk-version.h>)
 | 
	
		
			
				|  |  | +#include <android/ndk-version.h>
 | 
	
		
			
				|  |  | +#endif  // __has_include(<android/ndk-version.h>)
 | 
	
		
			
				|  |  | +#if defined(__ANDROID__) && defined(__clang__) && defined(__NDK_MAJOR__) && \
 | 
	
		
			
				|  |  | +    defined(__NDK_MINOR__) &&                                               \
 | 
	
		
			
				|  |  | +    ((__NDK_MAJOR__ < 12) || ((__NDK_MAJOR__ == 12) && (__NDK_MINOR__ < 1)))
 | 
	
		
			
				|  |  | +#undef ABSL_HAVE_TLS
 | 
	
		
			
				|  |  | +#undef ABSL_HAVE_THREAD_LOCAL
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +#endif  // defined(__ANDROID__) && defined(__clang__)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // ABSL_HAVE_INTRINSIC_INT128
 | 
	
		
			
				|  |  |  //
 | 
	
		
			
				|  |  |  // Checks whether the __int128 compiler extension for a 128-bit integral type is
 | 
	
	
		
			
				|  | @@ -182,10 +184,17 @@
 | 
	
		
			
				|  |  |  #elif (defined(__clang__) && defined(__SIZEOF_INT128__) &&               \
 | 
	
		
			
				|  |  |         !defined(__aarch64__)) ||                                         \
 | 
	
		
			
				|  |  |      (defined(__CUDACC__) && defined(__SIZEOF_INT128__) &&                \
 | 
	
		
			
				|  |  | -     __CUDACC_VER__ >= 70000) ||                                         \
 | 
	
		
			
				|  |  | +     __CUDACC_VER_MAJOR__ >= 9) ||                                       \
 | 
	
		
			
				|  |  |      (!defined(__clang__) && !defined(__CUDACC__) && defined(__GNUC__) && \
 | 
	
		
			
				|  |  |       defined(__SIZEOF_INT128__))
 | 
	
		
			
				|  |  |  #define ABSL_HAVE_INTRINSIC_INT128 1
 | 
	
		
			
				|  |  | +// __CUDACC_VER__ is a full version number before CUDA 9, and is defined to a
 | 
	
		
			
				|  |  | +// std::string explaining that it has been removed starting with CUDA 9. We can't
 | 
	
		
			
				|  |  | +// compare both variants in a single boolean expression because there is no
 | 
	
		
			
				|  |  | +// short-circuiting in the preprocessor.
 | 
	
		
			
				|  |  | +#elif defined(__CUDACC__) && defined(__SIZEOF_INT128__) && \
 | 
	
		
			
				|  |  | +    __CUDACC_VER__ >= 7000
 | 
	
		
			
				|  |  | +#define ABSL_HAVE_INTRINSIC_INT128 1
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // ABSL_HAVE_EXCEPTIONS
 |