diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt --- a/compiler-rt/CMakeLists.txt +++ b/compiler-rt/CMakeLists.txt @@ -119,8 +119,20 @@ CHECK_SYMBOL_EXISTS (__thumb__ "" COMPILER_RT_ARM_THUMB) endif() endif() + +set(ANDROID_HAS_ELF_TLS 0) if ("${COMPILER_RT_DEFAULT_TARGET_TRIPLE}" MATCHES ".*android.*") set(ANDROID 1) + CHECK_CXX_SOURCE_COMPILES(" +int main() { +#if __ANDROID_API__ >= 28 + return 0; +#else + #error NO_ELF_TLS + return 1; +#endif +} + " ANDROID_HAS_ELF_TLS) string(REGEX MATCH "-target(=| +)[^ ]+android([0-9]+)" ANDROID_API_LEVEL "${CMAKE_C_FLAGS}") set(ANDROID_API_LEVEL ${CMAKE_MATCH_2}) endif() @@ -277,7 +289,7 @@ endif() # Provide some common commmandline flags for Sanitizer runtimes. -if(${ANDROID_API_LEVEL} GREATER_EQUAL 28) +if(ANDROID_HAS_ELF_TLS) list(APPEND SANITIZER_COMMON_CFLAGS -fno-emulated-tls) list(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS -fno-emulated-tls) endif()