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
>
>
prev 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).