From 1da0a84f788c637b6a2ce4eda5bb77b7ce7abe06 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Thu, 9 May 2019 22:28:07 +0200 Subject: [PATCH] package/netsurf: change how CFLAGS/LDFLAGS are passed Fixes: http://autobuild.buildroot.net/results/eeb2863c6237aac8428e49a5ee514d43088b0fb8 http://autobuild.buildroot.net/results/f938fd1515f1d6e11b57aa6e314135789da52a44 In commit 6da049f8ae61b956d135526722ce58fc2f67626a ("package/netsurf: fix build"), the CC variable passed to netsurf's build system was extended to pass some special -I and -L options needed for netsurf to find its own headers/libraries. Unfortunately, on some systems (including mine), it breaks the build, due to: toolpath_ := $(shell /bin/which $(CC__)) when $(CC__) contains some -I/-L options, they are considered to be options "to which", which causes the funny: /usr/bin/make install --directory=libnslog HOST=arm-buildroot-linux-uclibcgnueabi PREFIX=/home/thomas/projets/outputs/shared-netsurf/build/netsurf-3.8/tmpusr Q=@ WARNFLAGS='-Wall -W -Wno-error' DESTDIR= make[3]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. /bin/which: invalid option -- 'I' /bin/which: invalid option -- '/' /bin/which: invalid option -- 'h' /bin/which: invalid option -- 'o' /bin/which: invalid option -- 'm' /bin/which: invalid option -- 'e' /bin/which: invalid option -- '/' /bin/which: invalid option -- 't' /bin/which: invalid option -- 'h' /bin/which: invalid option -- 'o' /bin/which: invalid option -- 'm' /bin/which: invalid option -- 's' /bin/which: invalid option -- '/' [...] /bin/which: invalid option -- 'l' /bin/which: invalid option -- 'b' /bin/which: --read-alias, -i: Warning: stdin is a tty. and the build simply hangs. We cannot pass CFLAGS/LDFLAGS as make options, as they would override the CFLAGS definitions in netsurf Makefiles. However, those Makefiles use the construct: CFLAGS := $(CFLAGS) -more-flags so by passing CFLAGS and LDFLAGS through the make environment, which can achieve our goal. It is worth mentioning that it remains very fragile, because CFLAGS/LDFLAGS are used both for building target objects but also some host tools. The netsurf build system is really not good. Signed-off-by: Thomas Petazzoni Signed-off-by: Peter Korsgaard --- package/netsurf/netsurf.mk | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/package/netsurf/netsurf.mk b/package/netsurf/netsurf.mk index e617707ade..31cf9e62b8 100644 --- a/package/netsurf/netsurf.mk +++ b/package/netsurf/netsurf.mk @@ -70,13 +70,18 @@ define NETSURF_CONFIGURE_CMDS $(NETSURF_CURL_CONFIGURE_CMDS) endef +NETSURF_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + CFLAGS="$(TARGET_CFLAGS) -I$(@D)/tmpusr/include" \ + LDFLAGS="$(TARGET_LDFLAGS) -L$(@D)/tmpusr/lib" + NETSURF_MAKE_OPTS = \ TARGET=$(NETSURF_FRONTEND) \ BISON="$(HOST_DIR)/bin/bison" \ FLEX="$(HOST_DIR)/bin/flex" \ PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ BUILD_CC="$(HOSTCC)" \ - CC="$(TARGET_CC) -I$(@D)/tmpusr/include -L$(@D)/tmpusr/lib" \ + CC="$(TARGET_CC)" \ AR="$(TARGET_AR)" \ TMP_PREFIX=$(@D)/tmpusr \ NETSURF_CONFIG="$(NETSURF_CONFIG)" \ @@ -84,7 +89,7 @@ NETSURF_MAKE_OPTS = \ define NETSURF_BUILD_CMDS mkdir -p $(@D)/tmpusr - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(NETSURF_MAKE_OPTS) \ + $(NETSURF_MAKE_ENV) $(MAKE) -C $(@D) $(NETSURF_MAKE_OPTS) \ build endef -- 2.30.2