musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
PATCH 1/1 musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
From: Charles Duffy <[email protected]>
--- package/musl/musl.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
package/musl/musl.mk +3 -1
@@ -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
Signature · 1 line
2.0.0
PATCH 1/1 musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
Charles,
Quoted 3 lines · Charles Duffy
From: Charles Duffy <[email protected]>
Signed-off-by Charles Duffy <[email protected]>
Thanks for the patch!
package/musl/musl.mk define MUSL_CONFIGURE_CMDS · line 33
Quoted 12 lines
package/musl/musl.mk +3
-1@@ -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
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
package/musl/musl.mk define MUSL_CONFIGURE_CMDS
Quoted 7 lines · Thomas Petazzoni
Could you instead try the following change:
package/musl/musl.mk +2
-1- --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>
PATCH 1/1 musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
Charles,
Quoted 5 lines · Charles Duffy
Quoted 2 lines · Thomas Petazzoni
Could you instead try the following change:
Quoted 7 lines
package/musl/musl.mk define MUSL_CONFIGURE_CMDS
Quoted 5 lines
package/musl/musl.mk +2
-1- --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
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
In reply to Charles DuffyCharles, Peter, Arnout, Yann,
Quoted 12 lines · Charles Duffy
From: Charles Duffy <[email protected]>
Signed-off-by Charles Duffy <[email protected]>--- package/musl/musl.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)package/musl/musl.mk +0
-0
package/musl/musl.mk define MUSL_CONFIGURE_CMDS · line 34
Quoted 8 lines
package/musl/musl.mk +3
-1@@ -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
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
Thomas, All,
On 2015-10-18 15:09 +0200, Thomas Petazzoni spake thusly:
Quoted 32 lines · Charles Duffy
Quoted 12 lines
From: Charles Duffy <[email protected]>
Signed-off-by Charles Duffy <[email protected]>--- package/musl/musl.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)package/musl/musl.mk +0
-0package/musl/musl.mk define MUSL_CONFIGURE_CMDS · line 34
Quoted 8 lines
package/musl/musl.mk +3
-1@@ -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)) endefIn 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.
Quoted 7 lines
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.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | 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. | '------------------------------^-------^------------------^--------------------'
PATCH 1/1 musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
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.
Quoted 74 lines · Yann E. MORIN
Thomas, All,
On 2015-10-18 15:09 +0200, Thomas Petazzoni spake thusly:
Quoted 32 lines · Charles Duffy
Quoted 12 lines
From: Charles Duffy <[email protected]>
Signed-off-by Charles Duffy <[email protected]>--- package/musl/musl.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)package/musl/musl.mk +0
-0package/musl/musl.mk define MUSL_CONFIGURE_CMDS · line 34
Quoted 8 lines
package/musl/musl.mk +3
-1@@ -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)) endefIn 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.
Quoted 7 lines
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. |
Quoted 2 lines
'------------------------------^-------^------------------^--------------------'
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20151018/4b3de436/attachment-0001.html>
PATCH 1/1 musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
Charles, Yann,
Quoted 6 lines · Charles Duffy
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
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
Thomas, Charles, All,
On 2015-10-18 18:33 +0200, Thomas Petazzoni spake thusly:
Quoted 10 lines
Charles, Yann,
Quoted 6 lines · Charles Duffy
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.
Quoted 8 lines
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_LIBSis disabled.
Yes, I think this would be the best solution.
Charles, care to send the patch, please?
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | 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. | '------------------------------^-------^------------------^--------------------'
PATCH 1/1 musl: Honor BR2_STATIC_LIBS / BR2_SHARED_LIBS
In reply to Thomas PetazzoniQuoted 11 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Thomas" == Thomas Petazzoni <[email protected]> writes:
Charles, Yann,
Quoted 6 lines · Charles Duffy
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.
Quoted 8 lines
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_LIBSis disabled.
Yes, I think that's the safest/easiest/best-matching-the-other-libcs approach.
Signature · 2 lines
Venlig hilsen, Peter Korsgaard