public inbox for newlib@sourceware.org
 help / color / mirror / Atom feed
From: Jeff Johnston <jjohnstn@redhat.com>
To: Mike Frysinger <vapier@gentoo.org>
Cc: newlib@sourceware.org
Subject: Re: [PATCH] newlib: filter out versions from newlib.h to simplify autoreconf
Date: Wed, 25 Oct 2023 19:14:20 -0400	[thread overview]
Message-ID: <CAOox84sb4P4UtSk+DKQ=JO_BxnRPvsbchZy2Cd3vtu_v9sdWbA@mail.gmail.com> (raw)
In-Reply-To: <20231015093230.27356-1-vapier@gentoo.org>

[-- Attachment #1: Type: text/plain, Size: 3489 bytes --]

Works well.  Feel free to push.

-- Jeff J.

On Sun, Oct 15, 2023 at 5:32 AM Mike Frysinger <vapier@gentoo.org> 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
>
>

      parent reply	other threads:[~2023-10-25 23:14 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-15  9:32 Mike Frysinger
2023-10-17  5:40 ` Sebastian Huber
2023-10-25 23:14 ` Jeff Johnston [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAOox84sb4P4UtSk+DKQ=JO_BxnRPvsbchZy2Cd3vtu_v9sdWbA@mail.gmail.com' \
    --to=jjohnstn@redhat.com \
    --cc=newlib@sourceware.org \
    --cc=vapier@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).