* [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
@ 2015-10-14 4:29 Charles Duffy
2015-10-14 21:35 ` Thomas Petazzoni
2015-10-18 13:09 ` Thomas Petazzoni
0 siblings, 2 replies; 10+ messages in thread
From: Charles Duffy @ 2015-10-14 4:29 UTC (permalink / raw)
To: buildroot
From: Charles Duffy <charles@dyfis.net>
Signed-off-by: Charles Duffy <chaduffy@cisco.com>
---
package/musl/musl.mk | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/package/musl/musl.mk b/package/musl/musl.mk
index 22589f5..aca78ab 100644
--- a/package/musl/musl.mk
+++ b/package/musl/musl.mk
@@ -28,7 +28,9 @@ define MUSL_CONFIGURE_CMDS
--host=$(GNU_TARGET_NAME) \
--prefix=/usr \
--libdir=/lib \
- --disable-gcc-wrapper)
+ --disable-gcc-wrapper \
+ $(if $(BR2_STATIC_LIBS),--disable-shared) \
+ $(if $(BR2_SHARED_LIBS),--disable-static))
endef
define MUSL_BUILD_CMDS
--
2.0.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
2015-10-14 4:29 [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS Charles Duffy
@ 2015-10-14 21:35 ` Thomas Petazzoni
2015-10-14 22:23 ` Charles Duffy
2015-10-18 13:09 ` Thomas Petazzoni
1 sibling, 1 reply; 10+ messages in thread
From: Thomas Petazzoni @ 2015-10-14 21:35 UTC (permalink / raw)
To: buildroot
Charles,
On Tue, 13 Oct 2015 23:29:37 -0500, Charles Duffy wrote:
> From: Charles Duffy <charles@dyfis.net>
>
> Signed-off-by: Charles Duffy <chaduffy@cisco.com>
Thanks for the patch!
> diff --git a/package/musl/musl.mk b/package/musl/musl.mk
> index 22589f5..aca78ab 100644
> --- a/package/musl/musl.mk
> +++ b/package/musl/musl.mk
> @@ -28,7 +28,9 @@ define MUSL_CONFIGURE_CMDS
> --host=$(GNU_TARGET_NAME) \
> --prefix=/usr \
> --libdir=/lib \
> - --disable-gcc-wrapper)
> + --disable-gcc-wrapper \
> + $(if $(BR2_STATIC_LIBS),--disable-shared) \
> + $(if $(BR2_SHARED_LIBS),--disable-static))
Could you instead try the following change:
- --disable-gcc-wrapper)
+ --disable-gcc-wrapper \
+ $(SHARED_STATIC_LIBS_OPTS))
The SHARED_STATIC_LIBS_OPTS variable, defined in package/Makefile.in,
already contains the right combination of
--{enable,disable}-{static,shared} depending on BR2_STATIC_LIBS,
BR2_SHARED_LIBS and BR2_STATIC_SHARED_LIBS.
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
2015-10-14 21:35 ` Thomas Petazzoni
@ 2015-10-14 22:23 ` Charles Duffy
2015-10-15 7:38 ` Thomas Petazzoni
0 siblings, 1 reply; 10+ messages in thread
From: Charles Duffy @ 2015-10-14 22:23 UTC (permalink / raw)
To: buildroot
On Wed, Oct 14, 2015 at 4:35 PM Thomas Petazzoni <
thomas.petazzoni@free-electrons.com> wrote:
> Could you instead try the following change:
>
> - --disable-gcc-wrapper)
> + --disable-gcc-wrapper \
> + $(SHARED_STATIC_LIBS_OPTS))
>
>
Works perfectly. Should I bother resubmitting, or are you inclined to make
the change directly?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20151014/c6a2d855/attachment.html>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
2015-10-14 22:23 ` Charles Duffy
@ 2015-10-15 7:38 ` Thomas Petazzoni
0 siblings, 0 replies; 10+ messages in thread
From: Thomas Petazzoni @ 2015-10-15 7:38 UTC (permalink / raw)
To: buildroot
Charles,
On Wed, 14 Oct 2015 22:23:12 +0000, Charles Duffy wrote:
> On Wed, Oct 14, 2015 at 4:35 PM Thomas Petazzoni <
> thomas.petazzoni at free-electrons.com> wrote:
>
> > Could you instead try the following change:
> >
> > - --disable-gcc-wrapper)
> > + --disable-gcc-wrapper \
> > + $(SHARED_STATIC_LIBS_OPTS))
> >
> >
> Works perfectly. Should I bother resubmitting, or are you inclined to make
> the change directly?
I did the change and applied. See
http://git.buildroot.net/buildroot/commit/?id=bb41933d3642f44c8d2db07886b2e5bf18b97fad.
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
2015-10-14 4:29 [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS Charles Duffy
2015-10-14 21:35 ` Thomas Petazzoni
@ 2015-10-18 13:09 ` Thomas Petazzoni
2015-10-18 15:58 ` Yann E. MORIN
1 sibling, 1 reply; 10+ messages in thread
From: Thomas Petazzoni @ 2015-10-18 13:09 UTC (permalink / raw)
To: buildroot
Charles, Peter, Arnout, Yann,
On Tue, 13 Oct 2015 23:29:37 -0500, Charles Duffy wrote:
> From: Charles Duffy <charles@dyfis.net>
>
> Signed-off-by: Charles Duffy <chaduffy@cisco.com>
> ---
> package/musl/musl.mk | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/package/musl/musl.mk b/package/musl/musl.mk
> index 22589f5..aca78ab 100644
> --- a/package/musl/musl.mk
> +++ b/package/musl/musl.mk
> @@ -28,7 +28,9 @@ define MUSL_CONFIGURE_CMDS
> --host=$(GNU_TARGET_NAME) \
> --prefix=/usr \
> --libdir=/lib \
> - --disable-gcc-wrapper)
> + --disable-gcc-wrapper \
> + $(if $(BR2_STATIC_LIBS),--disable-shared) \
> + $(if $(BR2_SHARED_LIBS),--disable-static))
> endef
In fact, this patch is causing some problems. Now, when
BR2_SHARED_LIBS=y, musl is built with --disable-static. Due to this,
there is no libc.a generated for musl. For the internal toolchain
backend, this is OK.
But when the produced toolchain gets re-used as an external toolchain,
it fails because the external toolchain logic in Buildroot uses "gcc
-print-file-name=libc.a" to find the sysroot. Since there is no libc.a,
it fails and the toolchain cannot be used.
Arnout, Yann, Peter, what do you think about this?
Should we always produce a libc.a in the musl case, so that it's more
like glibc and uClibc.
Or should we adjust our external toolchain logic to fallback on
searching for a different file than libc.a when libc.a is not available?
Thanks for your feedback,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
2015-10-18 13:09 ` Thomas Petazzoni
@ 2015-10-18 15:58 ` Yann E. MORIN
2015-10-18 16:18 ` Charles Duffy
0 siblings, 1 reply; 10+ messages in thread
From: Yann E. MORIN @ 2015-10-18 15:58 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-10-18 15:09 +0200, Thomas Petazzoni spake thusly:
> On Tue, 13 Oct 2015 23:29:37 -0500, Charles Duffy wrote:
> > From: Charles Duffy <charles@dyfis.net>
> >
> > Signed-off-by: Charles Duffy <chaduffy@cisco.com>
> > ---
> > package/musl/musl.mk | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/package/musl/musl.mk b/package/musl/musl.mk
> > index 22589f5..aca78ab 100644
> > --- a/package/musl/musl.mk
> > +++ b/package/musl/musl.mk
> > @@ -28,7 +28,9 @@ define MUSL_CONFIGURE_CMDS
> > --host=$(GNU_TARGET_NAME) \
> > --prefix=/usr \
> > --libdir=/lib \
> > - --disable-gcc-wrapper)
> > + --disable-gcc-wrapper \
> > + $(if $(BR2_STATIC_LIBS),--disable-shared) \
> > + $(if $(BR2_SHARED_LIBS),--disable-static))
> > endef
>
> In fact, this patch is causing some problems. Now, when
> BR2_SHARED_LIBS=y, musl is built with --disable-static. Due to this,
> there is no libc.a generated for musl. For the internal toolchain
> backend, this is OK.
>
> But when the produced toolchain gets re-used as an external toolchain,
> it fails because the external toolchain logic in Buildroot uses "gcc
> -print-file-name=libc.a" to find the sysroot. Since there is no libc.a,
> it fails and the toolchain cannot be used.
>
> Arnout, Yann, Peter, what do you think about this?
>
> Should we always produce a libc.a in the musl case, so that it's more
> like glibc and uClibc.
>
> Or should we adjust our external toolchain logic to fallback on
> searching for a different file than libc.a when libc.a is not available?
Hmmm... I have to admit that this is a tough one...
On the one hand, there's no reason to produce libc.a when we really want
dynamically-linked executables.
On the other hand, the toolchain is always a bit "special", and it still
makes sense to have libc.a even in the purely-shared scenario.
Really, I am totally unsure which way to go.
The quick fix to our build failures would be to revert this patch, of
course, until we have a better solution.
Charles, was there a hard resaon you provided this patch, or was it more
like "hey, let's not build static or shared when not needed" ?
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
2015-10-18 15:58 ` Yann E. MORIN
@ 2015-10-18 16:18 ` Charles Duffy
2015-10-18 16:33 ` Thomas Petazzoni
0 siblings, 1 reply; 10+ messages in thread
From: Charles Duffy @ 2015-10-18 16:18 UTC (permalink / raw)
To: buildroot
I provided this patch because my build results were unnecessarily enlarged
by dynamic libraries on an otherwise static-only system.
It sounds to me like we could optionally disable only dynamic libraries;
leave static libraries always enabled; and end up in a place that works for
everyone.
On Sun, Oct 18, 2015 at 10:58 AM Yann E. MORIN <yann.morin.1998@free.fr>
wrote:
> Thomas, All,
>
> On 2015-10-18 15:09 +0200, Thomas Petazzoni spake thusly:
> > On Tue, 13 Oct 2015 23:29:37 -0500, Charles Duffy wrote:
> > > From: Charles Duffy <charles@dyfis.net>
> > >
> > > Signed-off-by: Charles Duffy <chaduffy@cisco.com>
> > > ---
> > > package/musl/musl.mk | 4 +++-
> > > 1 file changed, 3 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/package/musl/musl.mk b/package/musl/musl.mk
> > > index 22589f5..aca78ab 100644
> > > --- a/package/musl/musl.mk
> > > +++ b/package/musl/musl.mk
> > > @@ -28,7 +28,9 @@ define MUSL_CONFIGURE_CMDS
> > > --host=$(GNU_TARGET_NAME) \
> > > --prefix=/usr \
> > > --libdir=/lib \
> > > - --disable-gcc-wrapper)
> > > + --disable-gcc-wrapper \
> > > + $(if $(BR2_STATIC_LIBS),--disable-shared) \
> > > + $(if $(BR2_SHARED_LIBS),--disable-static))
> > > endef
> >
> > In fact, this patch is causing some problems. Now, when
> > BR2_SHARED_LIBS=y, musl is built with --disable-static. Due to this,
> > there is no libc.a generated for musl. For the internal toolchain
> > backend, this is OK.
> >
> > But when the produced toolchain gets re-used as an external toolchain,
> > it fails because the external toolchain logic in Buildroot uses "gcc
> > -print-file-name=libc.a" to find the sysroot. Since there is no libc.a,
> > it fails and the toolchain cannot be used.
> >
> > Arnout, Yann, Peter, what do you think about this?
> >
> > Should we always produce a libc.a in the musl case, so that it's more
> > like glibc and uClibc.
> >
> > Or should we adjust our external toolchain logic to fallback on
> > searching for a different file than libc.a when libc.a is not available?
>
> Hmmm... I have to admit that this is a tough one...
>
> On the one hand, there's no reason to produce libc.a when we really want
> dynamically-linked executables.
>
> On the other hand, the toolchain is always a bit "special", and it still
> makes sense to have libc.a even in the purely-shared scenario.
>
> Really, I am totally unsure which way to go.
>
> The quick fix to our build failures would be to revert this patch, of
> course, until we have a better solution.
>
> Charles, was there a hard resaon you provided this patch, or was it more
> like "hey, let's not build static or shared when not needed" ?
>
> Regards,
> Yann E. MORIN.
>
> --
>
> .-----------------.--------------------.------------------.--------------------.
> | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics'
> conspiracy: |
> | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___
> |
> | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is
> no |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v
> conspiracy. |
>
> '------------------------------^-------^------------------^--------------------'
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20151018/4b3de436/attachment-0001.html>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
2015-10-18 16:18 ` Charles Duffy
@ 2015-10-18 16:33 ` Thomas Petazzoni
2015-10-18 18:52 ` Yann E. MORIN
2015-10-18 19:06 ` Peter Korsgaard
0 siblings, 2 replies; 10+ messages in thread
From: Thomas Petazzoni @ 2015-10-18 16:33 UTC (permalink / raw)
To: buildroot
Charles, Yann,
On Sun, 18 Oct 2015 16:18:10 +0000, Charles Duffy wrote:
> I provided this patch because my build results were unnecessarily enlarged
> by dynamic libraries on an otherwise static-only system.
>
> It sounds to me like we could optionally disable only dynamic libraries;
> leave static libraries always enabled; and end up in a place that works for
> everyone.
Yeah, that's also my thought. In uClibc, you can enable/disable the
shared library build, but not the static library build. So maybe we
should do:
--enable-static \
$(if $(BR2_STATIC_LIBS),--disable-shared,--enable-shared)
I.e, always static, and shared as soon as BR2_STATIC_LIBS is disabled.
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
2015-10-18 16:33 ` Thomas Petazzoni
@ 2015-10-18 18:52 ` Yann E. MORIN
2015-10-18 19:06 ` Peter Korsgaard
1 sibling, 0 replies; 10+ messages in thread
From: Yann E. MORIN @ 2015-10-18 18:52 UTC (permalink / raw)
To: buildroot
Thomas, Charles, All,
On 2015-10-18 18:33 +0200, Thomas Petazzoni spake thusly:
> Charles, Yann,
>
> On Sun, 18 Oct 2015 16:18:10 +0000, Charles Duffy wrote:
> > I provided this patch because my build results were unnecessarily enlarged
> > by dynamic libraries on an otherwise static-only system.
> >
> > It sounds to me like we could optionally disable only dynamic libraries;
> > leave static libraries always enabled; and end up in a place that works for
> > everyone.
>
> Yeah, that's also my thought. In uClibc, you can enable/disable the
> shared library build, but not the static library build. So maybe we
> should do:
>
> --enable-static \
> $(if $(BR2_STATIC_LIBS),--disable-shared,--enable-shared)
>
> I.e, always static, and shared as soon as BR2_STATIC_LIBS is disabled.
Yes, I think this would be the best solution.
Charles, care to send the patch, please?
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
2015-10-18 16:33 ` Thomas Petazzoni
2015-10-18 18:52 ` Yann E. MORIN
@ 2015-10-18 19:06 ` Peter Korsgaard
1 sibling, 0 replies; 10+ messages in thread
From: Peter Korsgaard @ 2015-10-18 19:06 UTC (permalink / raw)
To: buildroot
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:
> Charles, Yann,
> On Sun, 18 Oct 2015 16:18:10 +0000, Charles Duffy wrote:
>> I provided this patch because my build results were unnecessarily enlarged
>> by dynamic libraries on an otherwise static-only system.
>>
>> It sounds to me like we could optionally disable only dynamic libraries;
>> leave static libraries always enabled; and end up in a place that works for
>> everyone.
> Yeah, that's also my thought. In uClibc, you can enable/disable the
> shared library build, but not the static library build. So maybe we
> should do:
> --enable-static \
> $(if $(BR2_STATIC_LIBS),--disable-shared,--enable-shared)
> I.e, always static, and shared as soon as BR2_STATIC_LIBS is disabled.
Yes, I think that's the safest/easiest/best-matching-the-other-libcs
approach.
--
Venlig hilsen,
Peter Korsgaard
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2015-10-18 19:06 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-14 4:29 [Buildroot] [PATCH 1/1] musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS Charles Duffy
2015-10-14 21:35 ` Thomas Petazzoni
2015-10-14 22:23 ` Charles Duffy
2015-10-15 7:38 ` Thomas Petazzoni
2015-10-18 13:09 ` Thomas Petazzoni
2015-10-18 15:58 ` Yann E. MORIN
2015-10-18 16:18 ` Charles Duffy
2015-10-18 16:33 ` Thomas Petazzoni
2015-10-18 18:52 ` Yann E. MORIN
2015-10-18 19:06 ` Peter Korsgaard
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox