Works well. Feel free to push. -- Jeff J. On Sun, Oct 15, 2023 at 5:32 AM Mike Frysinger wrote: > We've been manually editing newlib.hin after generating it with > autoheader to drop the version defines that we keep in the separate > _newlib_version.h header. This is confusing for people, and is an > easy source of mistakes/errors. > > Since we're already running sed on newlib.h during configure to > filter out defines we don't want to expose, add the version macros > there too. This way we don't have to manually edit newlib.hin. > > This simplifies the autoreconf step in exchange for a slightly more > complicated configure+sed step, but seems worth the trade-off. > --- > newlib/configure | 2 +- > newlib/configure.ac | 5 ++++- > newlib/newlib.hin | 12 ++++++++++++ > 3 files changed, 17 insertions(+), 2 deletions(-) > > diff --git a/newlib/configure b/newlib/configure > index 0585e0ee8b33..b21d9bf45810 100755 > --- a/newlib/configure > +++ b/newlib/configure > @@ -9269,7 +9269,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} > > > case $ac_file$ac_mode in > - "newlib.h":H) sed -i.tmp -e '/^#define [^_]/d' -e '/^\/\* #undef > [^_]/d' newlib.h && rm -f newlib.h.tmp ;; > + "newlib.h":H) sed -i.tmp -E -e '/^#define [^_]/d' -e '/^\/\* #undef > [^_]/d' -e '/_NEWLIB_VERSION|__NEWLIB_(MINOR|PATCHLEVEL)__|__NEWLIB__/d' > newlib.h && rm -f newlib.h.tmp ;; > "default-1":C) > # Only add multilib support code if we just rebuilt the top-level > # Makefile. > diff --git a/newlib/configure.ac b/newlib/configure.ac > index 94242c082d20..55e5a944689f 100644 > --- a/newlib/configure.ac > +++ b/newlib/configure.ac > @@ -8,8 +8,11 @@ dnl Since we can't control what defines autoheader picks > up (various autoconf > dnl macros will add their own), filter out all the ones w/out a _ > prefix. All > dnl the ones we want to export use a _ prefix, and all the rest we don't > want > dnl to export as it'll pollute the namespace of newlib users. > +dnl We also filter out version defines that we want in _newlib_version.h. > dnl NB: newlib.h must be the first AC_CONFIG_HEADERS call for autoheader. > -AC_CONFIG_HEADERS([newlib.h:newlib.hin], [sed -i.tmp -e '/^#define > [^_]/d' -e '/^\/\* #undef [^_]/d' newlib.h && rm -f newlib.h.tmp]) > +AC_CONFIG_HEADERS( > + [newlib.h:newlib.hin], > + [sed -i.tmp -E -e '/^#define [^_]/d' -e '/^\/\* #undef [^_]/d' -e > '/_NEWLIB_VERSION|__NEWLIB_(MINOR|PATCHLEVEL)__|__NEWLIB__/d' newlib.h && > rm -f newlib.h.tmp]) > AH_TOP([/* NB: The contents are filtered before being installed. */ > > #ifndef __NEWLIB_H__ > diff --git a/newlib/newlib.hin b/newlib/newlib.hin > index e87a5eabbb24..8318469400b0 100644 > --- a/newlib/newlib.hin > +++ b/newlib/newlib.hin > @@ -375,6 +375,9 @@ > /* nano version of malloc is used. */ > #undef _NANO_MALLOC > > +/* The newlib version in string format. */ > +#undef _NEWLIB_VERSION > + > /* Verify _REENT_CHECK macros allocate memory successfully. */ > #undef _REENT_CHECK_VERIFY > > @@ -422,4 +425,13 @@ > /* Define if wide char orientation is supported. */ > #undef _WIDE_ORIENT > > +/* The newlib minor version number. */ > +#undef __NEWLIB_MINOR__ > + > +/* The newlib patch level. */ > +#undef __NEWLIB_PATCHLEVEL__ > + > +/* The newlib major version number. */ > +#undef __NEWLIB__ > + > #endif /* !__NEWLIB_H__ */ > -- > 2.42.0 > >