Hi Robert, > Subject: [PATCH] cobol: Eliminate unguarded clock_gettime dependencies. > [PR119975] > > These changes are help make it possible to compile on MacOS. In
it's not macOS in general, just older versions: clock_gettime is available in macOS 11 and up (maybe earlier), but missing in (at least) 10.7 and 10.11. > addition to guarding clock_settime() calls, it removes the use > of structures and constants needed for clock_settime(). I've just run a COBOL-only bootstrap on Darwin 15 (Mac OS X 10.11) which lacks clock_gettime. The build went fine and cobol results are reasonable: === cobol Summary === # of expected passes 5271 # of unexpected failures 92 # of expected failures 54 # of unresolved testcases 91 All remaining failures are like FAIL: cobol.dg/group1/declarative_1.cob -O0 (test for excess errors) Excess errors: /vol/gcc/src/hg/master/darwin/gcc/testsuite/cobol.dg/group1/declarative_1.cob:51:22: sorry, unimplemented: SECTION segment '�~Oúíþ^G' is not ISO syntax UNRESOLVED: cobol.dg/group1/declarative_1.cob -O0 compilation failed to produce executable My builds are run with LANG=C LC_CTYPE=en_US.UTF-8; that may be related. > diff --git a/libgcobol/libgcobol.cc b/libgcobol/libgcobol.cc > index f8697afd59c..81b5b7af812 100644 > --- a/libgcobol/libgcobol.cc > +++ b/libgcobol/libgcobol.cc [...] > -uint64_t > -get_time_nanoseconds() > +// For testing purposes, this undef causes the use of gettimeofday(). > +// #undef HAVE_CLOCK_GETTIME No need to do this in the sources proper: if you want to test such a configuration, you can adjust .../libgcobol/config.h after configuration. > +static uint64_t > +get_time_nanoseconds_local() > { > // This code was unabashedly stolen from gcc/timevar.cc. > // It returns the Unix epoch with nine decimal places. > > + /* Note: I am perplexed. I have been examining the gcc Makefiles and > + configure.ac files, and I am unable to locate where > HAVE_GETTIMEOFDAY > + is established. There have been issues compiling on MacOS, where > + apparently clock_gettime() is not available. But I don't see > exactly > + how gettimeofday() gets used, instead. But without the ability to > + compile on a MacOS system, I am fumbling along as best I can. > + > + I decided to simply replace clock_gettime() with getttimeofday() > when > + clock_gettime() isn't available, even though gcc/timevar.cc handles > + the situation differently. > + > + -- Bob Dubner, 2025-06-11*/ The issue is that gettimeofday availability is never tested for. You need something like AC_CHECK_FUNCS_ONCE(gettimeofday) in libgcobol/configure.ac, then run autoconf; autoheader to regenerate configure and config.h.in. gcc/configure.ac has this as AC_CHECK_FUNCS(... gettimeofday ...) After that, you can use #ifdef HAVE_CLOCK_GETTIME <use clock_gettime> #elif HAVE_GETTIMEOFDAY <use gettimeofday> #else #error ... #endif Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University