* [Buildroot] [PATCH] package/nginx: fix sparc compile
@ 2024-08-04 11:20 Waldemar Brodkorb
2024-08-04 21:12 ` Thomas Petazzoni via buildroot
0 siblings, 1 reply; 4+ messages in thread
From: Waldemar Brodkorb @ 2024-08-04 11:20 UTC (permalink / raw)
To: buildroot
When libatomic_ops are enabled the shared library is using symbols
from libatomic.
In output/build/nginx-1.24.0/objs/autoconf.err
You get:
checking for atomic_ops library
/home/wbx/buildroot/output/host/lib/gcc/sparc-buildroot-linux-uclibc/13.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld:
/tmp/ccx4rHjO.o: in function `main':
autotest.c:(.text.startup+0x30): undefined reference to
`__atomic_fetch_add_4'
collect2: error: ld returned 1 exit status
Fixes:
- http://autobuild.buildroot.net/results/5de/5de45530bbc615b1c44cc73a0ae7bf4cff5f1a56/
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
---
package/nginx/nginx.mk | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/package/nginx/nginx.mk b/package/nginx/nginx.mk
index 7bd2173b48..c462c1f265 100644
--- a/package/nginx/nginx.mk
+++ b/package/nginx/nginx.mk
@@ -75,6 +75,7 @@ NGINX_CONF_OPTS += --with-libatomic
NGINX_CONF_ENV += ngx_force_have_libatomic=yes
ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)
NGINX_CFLAGS += "-DAO_NO_SPARC_V9"
+NGINX_LDFLAGS += -latomic
endif
else
NGINX_CONF_ENV += ngx_force_have_libatomic=no
@@ -300,7 +301,8 @@ define NGINX_CONFIGURE_CMDS
cd $(@D) ; $(NGINX_CONF_ENV) \
PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
./configure $(NGINX_CONF_OPTS) \
- --with-cc-opt="$(TARGET_CFLAGS) $(NGINX_CFLAGS)"
+ --with-cc-opt="$(TARGET_CFLAGS) $(NGINX_CFLAGS)" \
+ --with-ld-opt="$(NGINX_LDFLAGS)"
endef
define NGINX_BUILD_CMDS
--
2.30.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH] package/nginx: fix sparc compile
2024-08-04 11:20 [Buildroot] [PATCH] package/nginx: fix sparc compile Waldemar Brodkorb
@ 2024-08-04 21:12 ` Thomas Petazzoni via buildroot
2024-08-05 7:24 ` Waldemar Brodkorb
0 siblings, 1 reply; 4+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-08-04 21:12 UTC (permalink / raw)
To: Waldemar Brodkorb; +Cc: buildroot
On Sun, 4 Aug 2024 13:20:18 +0200
Waldemar Brodkorb <wbx@openadk.org> wrote:
> When libatomic_ops are enabled the shared library is using symbols
> from libatomic.
>
> In output/build/nginx-1.24.0/objs/autoconf.err
> You get:
> checking for atomic_ops library
>
> /home/wbx/buildroot/output/host/lib/gcc/sparc-buildroot-linux-uclibc/13.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld:
> /tmp/ccx4rHjO.o: in function `main':
> autotest.c:(.text.startup+0x30): undefined reference to
> `__atomic_fetch_add_4'
> collect2: error: ld returned 1 exit status
>
> Fixes:
> - http://autobuild.buildroot.net/results/5de/5de45530bbc615b1c44cc73a0ae7bf4cff5f1a56/
Do you have a minimal reproducer for this issue?
> NGINX_CONF_ENV += ngx_force_have_libatomic=yes
> ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)
> NGINX_CFLAGS += "-DAO_NO_SPARC_V9"
> +NGINX_LDFLAGS += -latomic
> endif
Basically, I am wondering if this is the correct condition to put this.
Other architecture than SPARC may need to link against libatomic. So
perhaps it should instead be:
ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
NGINX_LDFLAGS += -latomic
endif
but as I am not 100% sure, I wanted to first reproduce the issue.
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH] package/nginx: fix sparc compile
2024-08-04 21:12 ` Thomas Petazzoni via buildroot
@ 2024-08-05 7:24 ` Waldemar Brodkorb
2024-08-05 7:31 ` Thomas Petazzoni via buildroot
0 siblings, 1 reply; 4+ messages in thread
From: Waldemar Brodkorb @ 2024-08-05 7:24 UTC (permalink / raw)
To: Thomas Petazzoni; +Cc: buildroot
Hi Thomas,
Thomas Petazzoni wrote,
> On Sun, 4 Aug 2024 13:20:18 +0200
> Waldemar Brodkorb <wbx@openadk.org> wrote:
>
> > When libatomic_ops are enabled the shared library is using symbols
> > from libatomic.
> >
> > In output/build/nginx-1.24.0/objs/autoconf.err
> > You get:
> > checking for atomic_ops library
> >
> > /home/wbx/buildroot/output/host/lib/gcc/sparc-buildroot-linux-uclibc/13.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld:
> > /tmp/ccx4rHjO.o: in function `main':
> > autotest.c:(.text.startup+0x30): undefined reference to
> > `__atomic_fetch_add_4'
> > collect2: error: ld returned 1 exit status
> >
> > Fixes:
> > - http://autobuild.buildroot.net/results/5de/5de45530bbc615b1c44cc73a0ae7bf4cff5f1a56/
>
> Do you have a minimal reproducer for this issue?
>
> > NGINX_CONF_ENV += ngx_force_have_libatomic=yes
> > ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)
> > NGINX_CFLAGS += "-DAO_NO_SPARC_V9"
> > +NGINX_LDFLAGS += -latomic
> > endif
>
> Basically, I am wondering if this is the correct condition to put this.
> Other architecture than SPARC may need to link against libatomic. So
> perhaps it should instead be:
>
> ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
> NGINX_LDFLAGS += -latomic
> endif
>
> but as I am not 100% sure, I wanted to first reproduce the issue.
The minimal reproducer is:
BR2_sparc=y
BR2_PACKAGE_NGINX=y
For sparc only libatomic_ops is selected via
package/nginx/Config.in. So I think the build issue is unique to
sparcv8/leon.
best regards
Waldemar
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH] package/nginx: fix sparc compile
2024-08-05 7:24 ` Waldemar Brodkorb
@ 2024-08-05 7:31 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 4+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-08-05 7:31 UTC (permalink / raw)
To: Waldemar Brodkorb; +Cc: buildroot
On Mon, 5 Aug 2024 09:24:49 +0200
Waldemar Brodkorb <wbx@openadk.org> wrote:
> The minimal reproducer is:
> BR2_sparc=y
> BR2_PACKAGE_NGINX=y
Weird, I didn't reproduce it with the Bootlin SPARC toolchain.
> For sparc only libatomic_ops is selected via
> package/nginx/Config.in. So I think the build issue is unique to
> sparcv8/leon.
Correct, but in the .mk file we have:
ifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y)
NGINX_DEPENDENCIES += libatomic_ops
NGINX_CONF_OPTS += --with-libatomic
NGINX_CONF_ENV += ngx_force_have_libatomic=yes
ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)
NGINX_CFLAGS += "-DAO_NO_SPARC_V9"
endif
else
NGINX_CONF_ENV += ngx_force_have_libatomic=no
endif
and BR2_PACKAGE_LIBATOMIC_OPS can very well be enabled on non-SPARC
architectures. Yes nginx only forces BR2_PACKAGE_LIBATOMIC_OPS on
Sparc, but nothing prevents another package (or even the user) to
enable BR2_PACKAGE_LIBATOMIC_OPS on non-Sparc architectures.
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-08-05 7:31 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-04 11:20 [Buildroot] [PATCH] package/nginx: fix sparc compile Waldemar Brodkorb
2024-08-04 21:12 ` Thomas Petazzoni via buildroot
2024-08-05 7:24 ` Waldemar Brodkorb
2024-08-05 7:31 ` Thomas Petazzoni via buildroot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.