On Wed, Feb 20, 2019 at 05:15:54PM -0800, christopher.w.cl...@gmail.com wrote: > From: Christopher Clark <christopher.w.cl...@gmail.com> > > Cannot assume that that flags detected for the target compiler are > the same as for the host compiler. Perform detection for both. > > Add EXTRA_HOST_CFLAGS and EXTRA_HOST_LDFLAGS variable for supplying > host tool arguments. This replaces prior hardcoded '-O2 -g'. > > Signed-off-by: Christopher Clark <christopher.cla...@baesystems.com> > --- > > This patch fixes compilation of ipxe with modern Yocto and OpenEmbedded > on build hosts with different native toolchains. > > src/Makefile.housekeeping | 5 +++-- > src/arch/i386/Makefile | 17 +++++++++++++---- > 2 files changed, 16 insertions(+), 6 deletions(-) > > diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping > index f8334921..5451c39c 100644 > --- a/src/Makefile.housekeeping > +++ b/src/Makefile.housekeeping > @@ -133,6 +133,7 @@ eval : > WORKAROUND_CFLAGS := > WORKAROUND_ASFLAGS := > WORKAROUND_LDFLAGS := > +WORKAROUND_HOST_CFLAGS := > > # Make syntax does not allow use of comma or space in certain places. > # This ugly workaround is suggested in the manual. > @@ -445,7 +446,7 @@ endif > CFLAGS += $(WORKAROUND_CFLAGS) $(EXTRA_CFLAGS) > ASFLAGS += $(WORKAROUND_ASFLAGS) $(EXTRA_ASFLAGS) > LDFLAGS += $(WORKAROUND_LDFLAGS) $(EXTRA_LDFLAGS) > -HOST_CFLAGS += $(WORKAROUND_CFLAGS) -O2 -g > +HOST_CFLAGS += $(WORKAROUND_HOST_CFLAGS) $(EXTRA_HOST_CFLAGS) > > # Inhibit -Werror if NO_WERROR is specified on make command line > # > @@ -1375,7 +1376,7 @@ endif # defined(BIN) > # The compression utilities > # > > -ZBIN_LDFLAGS := -llzma > +ZBIN_LDFLAGS := -llzma $(EXTRA_HOST_LDFLAGS) > > $(ZBIN) : util/zbin.c $(MAKEDEPS) > $(QM)$(ECHO) " [HOSTCC] $@" > diff --git a/src/arch/i386/Makefile b/src/arch/i386/Makefile > index b7c2792d..4a637ad3 100644 > --- a/src/arch/i386/Makefile > +++ b/src/arch/i386/Makefile > @@ -78,11 +78,20 @@ CFLAGS += -Ui386 > # -nopie. We therefore test for both. > # > ifeq ($(CCTYPE),gcc) > -PIE_TEST = [ -z "`$(CC) -fno-PIE -no-pie -x c -c /dev/null -o /dev/null > 2>&1`" ] > -PIE_FLAGS := $(shell $(PIE_TEST) && $(ECHO) '-fno-PIE -no-pie') > -PIE_TEST2 = [ -z "`$(CC) -fno-PIE -nopie -x c -c /dev/null -o /dev/null > 2>&1`" ] > +PIE_TEST1_FLAGS = "-fno-PIE -no-pie -x c -c /dev/null -o /dev/null 2>&1" > +PIE_TEST2_FLAGS = "-fno-PIE -nopie -x c -c /dev/null -o /dev/null 2>&1" > + > +PIE_TEST1 = [ -z "`$(CC) "$(PIE_TEST1_FLAGS)"`" ] > +PIE_TEST2 = [ -z "`$(CC) "$(PIE_TEST2_FLAGS)"`" ] > +PIE_FLAGS1 := $(shell $(PIE_TEST1) && $(ECHO) '-fno-PIE -no-pie') > PIE_FLAGS2 := $(shell $(PIE_TEST2) && $(ECHO) '-fno-PIE -nopie') > -WORKAROUND_CFLAGS += $(PIE_FLAGS) $(PIE_FLAGS2) > +WORKAROUND_CFLAGS += $(PIE_FLAGS1) $(PIE_FLAGS2) > + > +HOST_PIE_TEST1 = [ -z "`$(HOSTCC) "$(PIE_TEST1_FLAGS)"`" ] > +HOST_PIE_TEST2 = [ -z "`$(HOSTCC) "$(PIE_TEST2_FLAGS)"`" ] > +HOST_PIE_FLAGS1 := $(shell $(HOST_PIE_TEST1) && $(ECHO) '-fno-PIE -no-pie') > +HOST_PIE_FLAGS2 := $(shell $(HOST_PIE_TEST2) && $(ECHO) '-fno-PIE -nopie') > +WORKAROUND_HOST_CFLAGS += $(HOST_PIE_FLAGS1) $(HOST_PIE_FLAGS2) > endif > > # i386-specific directories containing source files > --
Doing `git am` went fine. Compiling on Linux amd64 also fine. Included in https://gitlab.com/hendrikx-itc/ipxe/tree/mailinglist in an attempt to prevent that the patch gets lost in the ML archive. Cheers Geert Stappers DevOps Engineer at Hendrikx ITC _______________________________________________ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel