diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt --- a/compiler-rt/CMakeLists.txt +++ b/compiler-rt/CMakeLists.txt @@ -277,9 +277,22 @@ endif() # Provide some common commmandline flags for Sanitizer runtimes. -if(${ANDROID_API_LEVEL} GREATER_EQUAL 28) - list(APPEND SANITIZER_COMMON_CFLAGS -fno-emulated-tls) - list(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS -fno-emulated-tls) +set(ANDROID_HAS_ELF_TLS 0) +if(ANDROID) + CHECK_CXX_SOURCE_COMPILES(" +int main() { +#if __ANDROID_API__ >= 28 + return 0; +#else + #error NO_ELF_TLS + return 1; +#endif +} + " ANDROID_HAS_ELF_TLS) + if (ANDROID_HAS_ELF_TLS) + list(APPEND SANITIZER_COMMON_CFLAGS -fno-emulated-tls) + list(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS -fno-emulated-tls) + endif() endif() if(NOT WIN32) append_list_if(COMPILER_RT_HAS_FPIC_FLAG -fPIC SANITIZER_COMMON_CFLAGS)