diff options
Diffstat (limited to 'external/meta-virtualization/recipes-extended/ipxe')
-rw-r--r-- | external/meta-virtualization/recipes-extended/ipxe/files/ipxe-fix-hostcc-nopie-cflags.patch | 68 | ||||
-rw-r--r-- | external/meta-virtualization/recipes-extended/ipxe/ipxe_git.bb | 35 |
2 files changed, 103 insertions, 0 deletions
diff --git a/external/meta-virtualization/recipes-extended/ipxe/files/ipxe-fix-hostcc-nopie-cflags.patch b/external/meta-virtualization/recipes-extended/ipxe/files/ipxe-fix-hostcc-nopie-cflags.patch new file mode 100644 index 00000000..da154a6f --- /dev/null +++ b/external/meta-virtualization/recipes-extended/ipxe/files/ipxe-fix-hostcc-nopie-cflags.patch @@ -0,0 +1,68 @@ +Fix detection of host compiler "no-pie"/"nopie" and link flags. + +Detection of the "no-pie" vs "nopie" flag needs to be performed for both +the host and target compilers; cannot assume that one works for the other. + +Use EXTRA_HOST_CFLAGS and EXTRA_HOST_LDFLAGS variables for passing +host tool parameters if required. Removes previous hardcoded "-O2 -g". + +Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com> +diff --git a/Makefile.housekeeping b/Makefile.housekeeping +index f833492..5451c39 100644 +--- a/Makefile.housekeeping ++++ b/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/arch/i386/Makefile b/arch/i386/Makefile +index b7c2792..4a637ad 100644 +--- a/arch/i386/Makefile ++++ b/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 diff --git a/external/meta-virtualization/recipes-extended/ipxe/ipxe_git.bb b/external/meta-virtualization/recipes-extended/ipxe/ipxe_git.bb new file mode 100644 index 00000000..1de0f21e --- /dev/null +++ b/external/meta-virtualization/recipes-extended/ipxe/ipxe_git.bb @@ -0,0 +1,35 @@ +DESCRIPTION = "Open source network boot firmware" +HOMEPAGE = "http://ipxe.org" +LICENSE = "GPLv2" +DEPENDS = "binutils-native perl-native syslinux mtools-native cdrtools-native xz" +LIC_FILES_CHKSUM = "file://../COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263" + +SRCREV = "64b4452bca04af433f1c98ab782c0e93cd5c88c0" +PV = "gitr${SRCPV}" +PR = "r0" + +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" + +SRC_URI = " \ + git://git.ipxe.org/ipxe.git;protocol=https \ + file://ipxe-fix-hostcc-nopie-cflags.patch \ + " + +FILES_${PN} = "/usr/share/firmware/*.rom" + +EXTRA_OEMAKE = " \ + ISOLINUX_BIN="${STAGING_DIR_TARGET}/usr/share/syslinux/isolinux.bin" \ + CROSS_COMPILE="${TARGET_PREFIX}" \ + EXTRA_HOST_CFLAGS="${BUILD_CFLAGS}" \ + EXTRA_HOST_LDFLAGS="${BUILD_LDFLAGS}"" + +S = "${WORKDIR}/git/src" + +do_compile() { + oe_runmake +} + +do_install() { + install -d ${D}/usr/share/firmware + install ${S}/bin/*.rom ${D}/usr/share/firmware/ +} |