Hi Mark,

On Fri, Apr 04, 2025 at 01:38:01PM +0200, Mark Wielaard wrote:
> Hi Dmitry,
> 
> On Thu, 2025-04-03 at 19:09 +0300, Dmitry V. Levin wrote:
> > On Thu, Aug 29, 2019 at 03:16:12PM +0200, Mark Wielaard wrote:
> > > From: Jonathon Anderson <jm...@rice.edu>
> > > 
> > > Uses the stdatomic.h provided by FreeBSD when GCC doesn't (ie. GCC < 4.9)
> > > 
> > > Signed-off-by: Jonathon Anderson <jm...@rice.edu>
> > > Signed-off-by: Srđan Milaković <sm...@rice.edu>
> [...]
> > > diff --git a/configure.ac b/configure.ac
> > > index c443fa3b..b8aba460 100644
> > > --- a/configure.ac
> > > +++ b/configure.ac
> > > @@ -226,6 +226,18 @@ LDFLAGS="$save_LDFLAGS"])
> > >  AS_IF([test "x$ac_cv_tls" != xyes],
> > >        AC_MSG_ERROR([__thread support required]))
> > >  
> > > +dnl Before 4.9 gcc doesn't ship stdatomic.h, but the nessesary atomics 
> > > are
> > > +dnl available by (at least) 4.7. So if the system doesn't have a 
> > > stdatomic.h we
> > > +dnl fall back on one copied from FreeBSD that handles the difference.
> > > +AC_CACHE_CHECK([whether gcc provides stdatomic.h], ac_cv_has_stdatomic,
> > > +  [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdatomic.h>]])],
> > > +              ac_cv_has_stdatomic=yes, ac_cv_has_stdatomic=no)])
> > > +AM_CONDITIONAL(HAVE_STDATOMIC_H, test "x$ac_cv_has_stdatomic" = xyes)
> > > +AS_IF([test "x$ac_cv_has_stdatomic" = xyes], 
> > > [AC_DEFINE(HAVE_STDATOMIC_H)])
> > > +
> > > +AH_TEMPLATE([HAVE_STDATOMIC_H], [Define to 1 if `stdatomic.h` is 
> > > provided by the
> > > +                                 system, 0 otherwise.])
> > > +
> > >  dnl This test must come as early as possible after the compiler 
> > > configuration
> > >  dnl tests, because the choice of the file model can (in principle) affect
> > >  dnl whether functions and headers are available, whether they work, etc.
> > 
> > Sorry, do you remember why stdatomic.h availability check had to be so
> > complicated instead of straightforward AC_CHECK_HEADERS([stdatomic.h])?
> 
> I am afraid I don't remember.
> 
> Note that 5 years later we just require C11 + stdatomic:
> https://sourceware.org/cgit/elfutils/commit/?id=d5fe635875628a9de431c883c0e5037dec0f85f3
> The check for stdatomic.h is still the same though. But it doesn't set
> HAVE_STDATOMIC_H anymore and the fallback lib/atomics.h has been
> removed.
> 
> I think that means your issue/worry cannot happen anymore.

Sorry, I must have been looking at some old commit and missed that
lib/atomics.h has been removed.

> But maybe we should just use AC_CHECK_HEADERS([stdatomic.h]) and drop
> the AC_COMPILE_IFELSE trick?

Sure.  And if we want to keep AC_MSG_ERROR, then
  AC_CHECK_HEADERS([stdatomic.h], [], [AC_MSG_ERROR([stdatomic.h required])])
should be fine.


-- 
ldv

Reply via email to