* [PATCH] Add --with-nonshared-cflags option to configure
@ 2018-07-04 9:36 Florian Weimer
2018-08-14 15:59 ` Florian Weimer
2018-08-16 17:20 ` Carlos O'Donell
0 siblings, 2 replies; 5+ messages in thread
From: Florian Weimer @ 2018-07-04 9:36 UTC (permalink / raw)
To: libc-alpha
2018-07-04 Florian Weimer <fweimer@redhat.com>
* configure.ac: Add --with-nonshared-cflags option.
* config.make.in (extra-nonshared-cflags): Set variable.
* Makeconfig (CFLAGS-.oS): Use it.
* manual/install.texi (Configuring and compiling): Document
--with-nonshared-cflags.
* configure: Regenerate.
* INSTALL: Likewise.
diff --git a/INSTALL b/INSTALL
index 0a22aa7d01..0f80d9d615 100644
--- a/INSTALL
+++ b/INSTALL
@@ -90,6 +90,15 @@ if 'CFLAGS' is specified it must enable optimization. For example:
library will still be usable, but functionality may be lost--for
example, you can't build a shared libc with old binutils.
+'--with-nonshared-cflags=CFLAGS'
+ Use additional compiler flags CFLAGS to build the parts of the
+ library which are always statically linked into applications and
+ libraries even with shared linking (that is, the object files
+ contained in 'lib*_nonshared.a' libraries). The build process will
+ automatically use the appropriate flags, but this option can be
+ used to set additional flags required for building applications and
+ libraries, to match local policy.
+
'--disable-shared'
Don't build shared libraries even if it is possible. Not all
systems support shared libraries; you need ELF support and
diff --git a/Makeconfig b/Makeconfig
index 608ffe648c..b0b27f0113 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -1038,7 +1038,7 @@ object-suffixes-for-libc += .oS
# Must build the routines as PIC, though, because they can end up in (users')
# shared objects. We don't want to use CFLAGS-os because users may, for
# example, make that processor-specific.
-CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag)
+CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) $(extra-nonshared-cflags)
CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
libtype.oS = lib%_nonshared.a
endif
diff --git a/config.make.in b/config.make.in
index d9891b2cd8..a6fe48d31f 100644
--- a/config.make.in
+++ b/config.make.in
@@ -110,6 +110,7 @@ BUILD_CC = @BUILD_CC@
CFLAGS = @CFLAGS@
CPPFLAGS-config = @CPPFLAGS@
CPPUNDEFS = @CPPUNDEFS@
+extra-nonshared-cflags = @extra_nonshared_cflags@
ASFLAGS-config = @ASFLAGS_config@
AR = @AR@
NM = @NM@
diff --git a/configure b/configure
index ef18302215..fec0efff82 100755
--- a/configure
+++ b/configure
@@ -684,6 +684,7 @@ force_install
bindnow
hardcoded_path_in_tests
enable_timezone_tools
+extra_nonshared_cflags
use_default_link
sysheaders
ac_ct_CXX
@@ -762,6 +763,7 @@ with_binutils
with_selinux
with_headers
with_default_link
+with_nonshared_cflags
enable_sanity_checks
enable_shared
enable_profile
@@ -1479,6 +1481,8 @@ Optional Packages:
--with-headers=PATH location of system headers to use (for example
/usr/src/linux/include) [default=compiler default]
--with-default-link do not use explicit linker scripts
+ --with-nonshared-cflags=FLAGS
+ build nonshared libraries with additional FLAGS
--with-cpu=CPU select code for CPU variant
Some influential environment variables:
@@ -3336,6 +3340,16 @@ else
fi
+
+# Check whether --with-nonshared-cflags was given.
+if test "${with_nonshared_cflags+set}" = set; then :
+ withval=$with_nonshared_cflags; extra_nonshared_cflags=$withval
+else
+ extra_nonshared_cflags=
+fi
+
+
+
# Check whether --enable-sanity-checks was given.
if test "${enable_sanity_checks+set}" = set; then :
enableval=$enable_sanity_checks; enable_sanity=$enableval
diff --git a/configure.ac b/configure.ac
index dc517017f5..154185d70d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -154,6 +154,14 @@ AC_ARG_WITH([default-link],
[use_default_link=$withval],
[use_default_link=default])
+dnl Additional build flags injection.
+AC_ARG_WITH([nonshared-cflags],
+ AC_HELP_STRING([--with-nonshared-cflags=FLAGS],
+ [build nonshared libraries with additional FLAGS]),
+ [extra_nonshared_cflags=$withval],
+ [extra_nonshared_cflags=])
+AC_SUBST(extra_nonshared_cflags)
+
AC_ARG_ENABLE([sanity-checks],
AC_HELP_STRING([--disable-sanity-checks],
[really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
diff --git a/manual/install.texi b/manual/install.texi
index 422da1447e..eaf0cd09e7 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -117,6 +117,15 @@ problem and suppress these constructs, so that the library will still be
usable, but functionality may be lost---for example, you can't build a
shared libc with old binutils.
+@item --with-nonshared-cflags=@var{cflags}
+Use additional compiler flags @var{cflags} to build the parts of the
+library which are always statically linked into applications and
+libraries even with shared linking (that is, the object files contained
+in @file{lib*_nonshared.a} libraries). The build process will
+automatically use the appropriate flags, but this option can be used to
+set additional flags required for building applications and libraries,
+to match local policy.
+
@c disable static doesn't work currently
@c @item --disable-static
@c Don't build static libraries. Static libraries aren't that useful these
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Add --with-nonshared-cflags option to configure
2018-07-04 9:36 [PATCH] Add --with-nonshared-cflags option to configure Florian Weimer
@ 2018-08-14 15:59 ` Florian Weimer
2018-08-16 17:20 ` Carlos O'Donell
1 sibling, 0 replies; 5+ messages in thread
From: Florian Weimer @ 2018-08-14 15:59 UTC (permalink / raw)
To: libc-alpha
On 07/04/2018 11:35 AM, Florian Weimer wrote:
> 2018-07-04 Florian Weimer<fweimer@redhat.com>
>
> * configure.ac: Add --with-nonshared-cflags option.
> * config.make.in (extra-nonshared-cflags): Set variable.
> * Makeconfig (CFLAGS-.oS): Use it.
> * manual/install.texi (Configuring and compiling): Document
> --with-nonshared-cflags.
> * configure: Regenerate.
> * INSTALL: Likewise.
Ping?
<https://sourceware.org/ml/libc-alpha/2018-07/msg00071.html>
Thanks,
Florian
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Add --with-nonshared-cflags option to configure
2018-07-04 9:36 [PATCH] Add --with-nonshared-cflags option to configure Florian Weimer
2018-08-14 15:59 ` Florian Weimer
@ 2018-08-16 17:20 ` Carlos O'Donell
2018-08-16 17:45 ` Florian Weimer
1 sibling, 1 reply; 5+ messages in thread
From: Carlos O'Donell @ 2018-08-16 17:20 UTC (permalink / raw)
To: Florian Weimer, libc-alpha
On 07/04/2018 05:35 AM, Florian Weimer wrote:
> 2018-07-04 Florian Weimer <fweimer@redhat.com>
>
> * configure.ac: Add --with-nonshared-cflags option.
> * config.make.in (extra-nonshared-cflags): Set variable.
> * Makeconfig (CFLAGS-.oS): Use it.
> * manual/install.texi (Configuring and compiling): Document
> --with-nonshared-cflags.
> * configure: Regenerate.
> * INSTALL: Likewise.
>
OK for master if you add an example to --with-nonshared-cflags install.texi
text showing what it might be used for.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
> diff --git a/Makeconfig b/Makeconfig
> index 608ffe648c..b0b27f0113 100644
> --- a/Makeconfig
> +++ b/Makeconfig
> @@ -1038,7 +1038,7 @@ object-suffixes-for-libc += .oS
> # Must build the routines as PIC, though, because they can end up in (users')
> # shared objects. We don't want to use CFLAGS-os because users may, for
> # example, make that processor-specific.
> -CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag)
> +CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) $(extra-nonshared-cflags)
OK.
> CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
> libtype.oS = lib%_nonshared.a
> endif
> diff --git a/config.make.in b/config.make.in
> index d9891b2cd8..a6fe48d31f 100644
> --- a/config.make.in
> +++ b/config.make.in
> @@ -110,6 +110,7 @@ BUILD_CC = @BUILD_CC@
> CFLAGS = @CFLAGS@
> CPPFLAGS-config = @CPPFLAGS@
> CPPUNDEFS = @CPPUNDEFS@
> +extra-nonshared-cflags = @extra_nonshared_cflags@
OK.
> ASFLAGS-config = @ASFLAGS_config@
> AR = @AR@
> NM = @NM@
> diff --git a/configure.ac b/configure.ac
> index dc517017f5..154185d70d 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -154,6 +154,14 @@ AC_ARG_WITH([default-link],
> [use_default_link=$withval],
> [use_default_link=default])
>
> +dnl Additional build flags injection.
> +AC_ARG_WITH([nonshared-cflags],
> + AC_HELP_STRING([--with-nonshared-cflags=FLAGS],
> + [build nonshared libraries with additional FLAGS]),
s/FLAGS/CFLAGS/g
> + [extra_nonshared_cflags=$withval],
> + [extra_nonshared_cflags=])
> +AC_SUBST(extra_nonshared_cflags)
OK.
> +
> AC_ARG_ENABLE([sanity-checks],
> AC_HELP_STRING([--disable-sanity-checks],
> [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
> diff --git a/manual/install.texi b/manual/install.texi
> index 422da1447e..eaf0cd09e7 100644
> --- a/manual/install.texi
> +++ b/manual/install.texi
> @@ -117,6 +117,15 @@ problem and suppress these constructs, so that the library will still be
> usable, but functionality may be lost---for example, you can't build a
> shared libc with old binutils.
>
> +@item --with-nonshared-cflags=@var{cflags}
> +Use additional compiler flags @var{cflags} to build the parts of the
> +library which are always statically linked into applications and
> +libraries even with shared linking (that is, the object files contained
> +in @file{lib*_nonshared.a} libraries). The build process will
> +automatically use the appropriate flags, but this option can be used to
> +set additional flags required for building applications and libraries,
> +to match local policy.
> +
I'd like to see an example added to this to show what the flag is used for.
Suggest:
... to match local policy e.g. <Reason why with flag>
> @c disable static doesn't work currently
> @c @item --disable-static
> @c Don't build static libraries. Static libraries aren't that useful these
>
--
Cheers,
Carlos.
P.S. Is there any way I can convince you to fix bug 17248 given that you're
looking at CFLAGS? :-)
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Add --with-nonshared-cflags option to configure
2018-08-16 17:20 ` Carlos O'Donell
@ 2018-08-16 17:45 ` Florian Weimer
2018-08-16 17:59 ` Carlos O'Donell
0 siblings, 1 reply; 5+ messages in thread
From: Florian Weimer @ 2018-08-16 17:45 UTC (permalink / raw)
To: Carlos O'Donell, libc-alpha
On 08/16/2018 07:19 PM, Carlos O'Donell wrote:
>> +@item --with-nonshared-cflags=@var{cflags}
>> +Use additional compiler flags @var{cflags} to build the parts of the
>> +library which are always statically linked into applications and
>> +libraries even with shared linking (that is, the object files contained
>> +in @file{lib*_nonshared.a} libraries). The build process will
>> +automatically use the appropriate flags, but this option can be used to
>> +set additional flags required for building applications and libraries,
>> +to match local policy.
>> +
>
> I'd like to see an example added to this to show what the flag is used for.
Our use-case is to compile with -Wp,-D_FORTIFY_SOURCE=2, which does not
change the compiled code, only the metadata embedded in the nonshared
objects. Which makes this feature *really* obscure, of course.
> P.S. Is there any way I can convince you to fix bug 17248 given that you're
> looking at CFLAGS? :-)
Can we do anything else but remove the sorting and deduplication? This
was added such a long time ago that we don't have a record why this was
needed.
I can check that the binaries on x86_64 do not change.
Thanks,
Florian
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Add --with-nonshared-cflags option to configure
2018-08-16 17:45 ` Florian Weimer
@ 2018-08-16 17:59 ` Carlos O'Donell
0 siblings, 0 replies; 5+ messages in thread
From: Carlos O'Donell @ 2018-08-16 17:59 UTC (permalink / raw)
To: Florian Weimer, libc-alpha
On 08/16/2018 01:45 PM, Florian Weimer wrote:
> On 08/16/2018 07:19 PM, Carlos O'Donell wrote:
>
>>> +@item --with-nonshared-cflags=@var{cflags} +Use additional
>>> compiler flags @var{cflags} to build the parts of the +library
>>> which are always statically linked into applications and
>>> +libraries even with shared linking (that is, the object files
>>> contained +in @file{lib*_nonshared.a} libraries). The build
>>> process will +automatically use the appropriate flags, but this
>>> option can be used to +set additional flags required for building
>>> applications and libraries, +to match local policy. +
>>
>> I'd like to see an example added to this to show what the flag is
>> used for.
>
> Our use-case is to compile with -Wp,-D_FORTIFY_SOURCE=2, which does
> not change the compiled code, only the metadata embedded in the
> nonshared objects. Which makes this feature *really* obscure, of
> course.
Please add this as a comment or description in install.texi, much
like CFLAGS sorting, I want to come back to this 10 years later,
read the comment and understand the intent.
>> P.S. Is there any way I can convince you to fix bug 17248 given
>> that you're looking at CFLAGS? :-)
>
> Can we do anything else but remove the sorting and deduplication?
> This was added such a long time ago that we don't have a record why
> this was needed.
>
> I can check that the binaries on x86_64 do not change.
Right, I think that's the only solution, and what we should do.
This leaves CFLAGS as expected without sorting (which might
change based on locale?).
--
Cheers,
Carlos.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-08-16 17:59 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-04 9:36 [PATCH] Add --with-nonshared-cflags option to configure Florian Weimer
2018-08-14 15:59 ` Florian Weimer
2018-08-16 17:20 ` Carlos O'Donell
2018-08-16 17:45 ` Florian Weimer
2018-08-16 17:59 ` Carlos O'Donell
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).