diff mbox

[v2] lmbench: fix build with libtirpc

Message ID 7760c8e2eb6de04f4acc5b4fd348cb35216bc2b7.1425615675.git.baruch@tkos.co.il
State Superseded
Headers show

Commit Message

Baruch Siach March 6, 2015, 4:21 a.m. UTC
When linking with an external libtirpc, -ltirpc must come after lmbench.a in
the linker command line. Use LDLIBS for that.

Fixes:
http://autobuild.buildroot.net/results/89e/89ee35561d3a49f38e9a747ed78a5846be4764c8/
http://autobuild.buildroot.net/results/409/4097b1c2585db2de517a8741174c02177aabee00/

and more.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
v2:
	Rebase on current master (Fabio Porcedda)
---
 package/lmbench/0001-allow-ldlibs-override.patch | 19 +++++++++++++++++++
 package/lmbench/lmbench.mk                       |  8 +++++---
 2 files changed, 24 insertions(+), 3 deletions(-)
 create mode 100644 package/lmbench/0001-allow-ldlibs-override.patch

Comments

Fabio Porcedda March 6, 2015, 7:53 a.m. UTC | #1
On Fri, Mar 6, 2015 at 5:21 AM, Baruch Siach <baruch@tkos.co.il> wrote:
<snip>
> +
> +-LDLIBS=-lm
> ++LDLIBS="${LDLIBS} -lm"

Because we already do that for CFLAGS, instead of adding a patch just use sed:

 define LMBENCH_CONFIGURE_CMDS
        $(call CONFIG_UPDATE,$(@D))
        sed -i 's/CFLAGS=/CFLAGS+=/g' $(@D)/src/Makefile
+       sed -i 's/LDLIBS=/LDLIBS+=/g' $(@D)/scripts/build
        sed -i '/cd .*doc/d' $(@D)/src/Makefile
        sed -i '/include/d' $(@D)/src/Makefile
        touch $@
 endef


> + # check for HP-UX's ANSI compiler
> + echo "main(int ac, char *av[]) { int i; }" > ${BASE}$$.c
> diff --git a/package/lmbench/lmbench.mk b/package/lmbench/lmbench.mk
> index 59e750c5892f..224ec6983a66 100644
> --- a/package/lmbench/lmbench.mk
> +++ b/package/lmbench/lmbench.mk
> @@ -11,12 +11,11 @@ LMBENCH_LICENSE = lmbench license (based on GPLv2)
>  LMBENCH_LICENSE_FILES = COPYING COPYING-2
>
>  LMBENCH_CFLAGS = $(TARGET_CFLAGS)
> -LMBENCH_LDLIBS = $(TARGET_LDFLAGS)

Why you don't want to use the TARGET_LDFLAGS variable anymore? This
change is not needed to fix this build failure.

BR
Baruch Siach March 6, 2015, 9:24 a.m. UTC | #2
Hi Fabio,

On Fri, Mar 06, 2015 at 08:53:23AM +0100, Fabio Porcedda wrote:
> On Fri, Mar 6, 2015 at 5:21 AM, Baruch Siach <baruch@tkos.co.il> wrote:
> <snip>
> > +
> > +-LDLIBS=-lm
> > ++LDLIBS="${LDLIBS} -lm"
> 
> Because we already do that for CFLAGS, instead of adding a patch just use sed:
> 
>  define LMBENCH_CONFIGURE_CMDS
>         $(call CONFIG_UPDATE,$(@D))
>         sed -i 's/CFLAGS=/CFLAGS+=/g' $(@D)/src/Makefile
> +       sed -i 's/LDLIBS=/LDLIBS+=/g' $(@D)/scripts/build
>         sed -i '/cd .*doc/d' $(@D)/src/Makefile
>         sed -i '/include/d' $(@D)/src/Makefile
>         touch $@
>  endef

Good point. Will do in v3.

> > + # check for HP-UX's ANSI compiler
> > + echo "main(int ac, char *av[]) { int i; }" > ${BASE}$$.c
> > diff --git a/package/lmbench/lmbench.mk b/package/lmbench/lmbench.mk
> > index 59e750c5892f..224ec6983a66 100644
> > --- a/package/lmbench/lmbench.mk
> > +++ b/package/lmbench/lmbench.mk
> > @@ -11,12 +11,11 @@ LMBENCH_LICENSE = lmbench license (based on GPLv2)
> >  LMBENCH_LICENSE_FILES = COPYING COPYING-2
> >
> >  LMBENCH_CFLAGS = $(TARGET_CFLAGS)
> > -LMBENCH_LDLIBS = $(TARGET_LDFLAGS)
> 
> Why you don't want to use the TARGET_LDFLAGS variable anymore? This
> change is not needed to fix this build failure.

The $(LMBENCH_LDLIBS) variable was not used before this patch, so this is just 
dead code removal. Since this patch uses this variable I think we should 
remove this in this patch to avoid unintended side effects.

Thanks for reviewing,
baruch
diff mbox

Patch

diff --git a/package/lmbench/0001-allow-ldlibs-override.patch b/package/lmbench/0001-allow-ldlibs-override.patch
new file mode 100644
index 000000000000..8085e7e90a4c
--- /dev/null
+++ b/package/lmbench/0001-allow-ldlibs-override.patch
@@ -0,0 +1,19 @@ 
+Allow LDLIBS override
+
+The real make runs from the scripts/build script. Teach this script accept
+override value set in an environment variable.
+
+Signed-off-by: Baruch Siach <baruch@tkos.co.il>
+---
+diff -Nuar lmbench-3.0-a9.orig/scripts/build lmbench-3.0-a9/scripts/build
+--- lmbench-3.0-a9.orig/scripts/build	2006-06-27 19:25:18.000000000 +0300
++++ lmbench-3.0-a9/scripts/build	2015-02-24 09:59:30.302654994 +0200
+@@ -18,7 +18,7 @@
+ 
+ trap 'rm -f ${BASE}$$.s ${BASE}$$.c ${BASE}$$.o ${BASE}$$; exit 1' 1 2 15
+ 
+-LDLIBS=-lm
++LDLIBS="${LDLIBS} -lm"
+ 
+ # check for HP-UX's ANSI compiler
+ echo "main(int ac, char *av[]) { int i; }" > ${BASE}$$.c
diff --git a/package/lmbench/lmbench.mk b/package/lmbench/lmbench.mk
index 59e750c5892f..224ec6983a66 100644
--- a/package/lmbench/lmbench.mk
+++ b/package/lmbench/lmbench.mk
@@ -11,12 +11,11 @@  LMBENCH_LICENSE = lmbench license (based on GPLv2)
 LMBENCH_LICENSE_FILES = COPYING COPYING-2
 
 LMBENCH_CFLAGS = $(TARGET_CFLAGS)
-LMBENCH_LDLIBS = $(TARGET_LDFLAGS)
 
 ifeq ($(BR2_PACKAGE_LIBTIRPC),y)
 LMBENCH_DEPENDENCIES += host-pkgconf libtirpc
 LMBENCH_CFLAGS += $(shell $(PKG_CONFIG_HOST_BINARY) --cflags libtirpc)
-LMBENCH_LDFLAGS += $(shell $(PKG_CONFIG_HOST_BINARY) --libs libtirpc)
+LMBENCH_LDLIBS = $(shell $(PKG_CONFIG_HOST_BINARY) --libs libtirpc)
 endif
 
 define LMBENCH_CONFIGURE_CMDS
@@ -27,8 +26,11 @@  define LMBENCH_CONFIGURE_CMDS
 	touch $@
 endef
 
+# Note: there is a second stage 'make' invocation from the 'scripts/build'
+# script. So the variables override below don't take direct effect in
+# src/Makefile.
 define LMBENCH_BUILD_CMDS
-	$(MAKE) CFLAGS="$(LMBENCH_CFLAGS)" LDFLAGS="$(LMBENCH_LDFLAGS)" OS=$(ARCH) CC="$(TARGET_CC)" -C $(@D)/src
+	$(MAKE) CFLAGS="$(LMBENCH_CFLAGS)" LDLIBS="$(LMBENCH_LDLIBS)" OS=$(ARCH) CC="$(TARGET_CC)" -C $(@D)/src
 endef
 
 define LMBENCH_INSTALL_TARGET_CMDS