From be48ae12b10b0556895e356c3ae34b8ca229e61b Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Mon, 1 Dec 2025 17:09:48 -0300 Subject: [PATCH] configure: Enable experimental support for clang The clang support is still experimental and not all testcases run correctly. Only clang 18 and onwards is supported and only for x86_64-linux-gnu and aarch64-linux-gnu. Reviewed-by: Collin Funk Reviewed-by: Sam James --- NEWS | 5 +++++ configure | 2 +- configure.ac | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index c420b67676..b70dc27ebb 100644 --- a/NEWS +++ b/NEWS @@ -49,6 +49,11 @@ Major new features: * The ISO C23 optional time base TIME_MONOTONIC, TIME_ACTIVE, and TIME_THREAD_ACTIVE have been added. +* Experimental support for building with clang has been added. It requires + at least clang version 18, aarch64-linux-gnu or x86_64-linux-gnu + targets, and libgcc compatible runtime (including libgcc_s.so for + pthread cancellation and backtrace runtime support). + Deprecated and removed features, and other changes affecting compatibility: * Support for dumped heaps has been removed - malloc_set_state() now always diff --git a/configure b/configure index b80b9e5255..9e79accc43 100755 --- a/configure +++ b/configure @@ -5799,7 +5799,7 @@ int main (void) { -#if !defined __GNUC__ || __GNUC__ < 12 || (__GNUC__ == 12 && __GNUC_MINOR__ < 1) +#if (!defined __GNUC__ || __GNUC__ < 12 || (__GNUC__ == 12 && __GNUC_MINOR__ < 1)) && (!defined __clang__ || __clang_major__ < 18) #error insufficient compiler #endif ; diff --git a/configure.ac b/configure.ac index ef9fdd1f59..784e9e15a0 100644 --- a/configure.ac +++ b/configure.ac @@ -585,7 +585,7 @@ AC_CHECK_PROG_VER(BISON, bison, --version, # Require GCC 12.1 to build. AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [ AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[ -#if !defined __GNUC__ || __GNUC__ < 12 || (__GNUC__ == 12 && __GNUC_MINOR__ < 1) +#if (!defined __GNUC__ || __GNUC__ < 12 || (__GNUC__ == 12 && __GNUC_MINOR__ < 1)) && (!defined __clang__ || __clang_major__ < 18) #error insufficient compiler #endif]])], [libc_cv_compiler_ok=yes], -- 2.47.3