Index: test/support/test_macros.h =================================================================== --- test/support/test_macros.h +++ test/support/test_macros.h @@ -91,9 +91,11 @@ #if (defined(__has_include) && __has_include()) || \ defined(__linux__) #include +#if defined(__GLIBC_PREREQ) #define TEST_HAS_GLIBC #define TEST_GLIBC_PREREQ(major, minor) __GLIBC_PREREQ(major, minor) #endif +#endif #if TEST_STD_VER >= 11 #define TEST_ALIGNOF(...) alignof(__VA_ARGS__) @@ -135,12 +137,16 @@ # define TEST_HAS_C11_FEATURES # define TEST_HAS_TIMESPEC_GET # elif defined(__linux__) -# if !defined(_LIBCPP_HAS_MUSL_LIBC) -# if defined(TEST_GLIBC_PREREQ) && TEST_GLIBC_PREREQ(2, 17) +// This block preserves the old behavior used by include/__config: +// _LIBCPP_GLIBC_PREREQ would be defined to 0 if __GLIBC_PREREQ was not +// available. The configuration here may be too vague though, as Bionic, uClibc, +// newlib, etc may all support these features but need to be configured. +# if defined(TEST_GLIBC_PREREQ) +# if TEST_GLIBC_PREREQ(2, 17) # define TEST_HAS_TIMESPEC_GET # define TEST_HAS_C11_FEATURES # endif -# else // defined(_LIBCPP_HAS_MUSL_LIBC) +# elif defined(_LIBCPP_HAS_MUSL_LIBC) # define TEST_HAS_C11_FEATURES # define TEST_HAS_TIMESPEC_GET # endif