diff options
| -rw-r--r-- | meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch | 48 | ||||
| -rw-r--r-- | meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch | 22 | ||||
| -rw-r--r-- | meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb | 33 |
3 files changed, 103 insertions, 0 deletions
diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch new file mode 100644 index 0000000000..e5b47c197a --- /dev/null +++ b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | Fix parallel make failure for archives | ||
| 2 | |||
| 3 | Upstream-Status: Pending | ||
| 4 | |||
| 5 | The lib and gnuefi makefiles were using the lib.a() form which compiles | ||
| 6 | and ar's as a pair instead of compiling all and then ar'ing which can | ||
| 7 | parallelize better. This was resulting in build failures on larger values | ||
| 8 | of -j. | ||
| 9 | |||
| 10 | See http://www.chemie.fu-berlin.de/chemnet/use/info/make/make_toc.html#TOC105 | ||
| 11 | for details. | ||
| 12 | |||
| 13 | Signed-off-by: Saul Wold <sgw@linux.intel.com> | ||
| 14 | Signed-off-by: Darren Hart <dvhart@linux.intel.com> | ||
| 15 | --- | ||
| 16 | --- | ||
| 17 | gnuefi/Makefile | 3 ++- | ||
| 18 | lib/Makefile | 3 ++- | ||
| 19 | 2 files changed, 4 insertions(+), 2 deletions(-) | ||
| 20 | |||
| 21 | Index: gnu-efi-3.0/lib/Makefile | ||
| 22 | =================================================================== | ||
| 23 | --- gnu-efi-3.0.orig/lib/Makefile | ||
| 24 | +++ gnu-efi-3.0/lib/Makefile | ||
| 25 | @@ -66,7 +66,8 @@ all: libsubdirs libefi.a | ||
| 26 | libsubdirs: | ||
| 27 | for sdir in $(SUBDIRS); do mkdir -p $$sdir; done | ||
| 28 | |||
| 29 | -libefi.a: $(patsubst %,libefi.a(%),$(OBJS)) | ||
| 30 | +libefi.a: $(OBJS) | ||
| 31 | + $(AR) rv $@ $(OBJS) | ||
| 32 | |||
| 33 | clean: | ||
| 34 | rm -f libefi.a *~ $(OBJS) */*.o | ||
| 35 | Index: gnu-efi-3.0/gnuefi/Makefile | ||
| 36 | =================================================================== | ||
| 37 | --- gnu-efi-3.0.orig/gnuefi/Makefile | ||
| 38 | +++ gnu-efi-3.0/gnuefi/Makefile | ||
| 39 | @@ -51,7 +51,8 @@ TARGETS = crt0-efi-$(ARCH).o libgnuefi.a | ||
| 40 | |||
| 41 | all: $(TARGETS) | ||
| 42 | |||
| 43 | -libgnuefi.a: $(patsubst %,libgnuefi.a(%),$(OBJS)) | ||
| 44 | +libgnuefi.a: $(OBJS) | ||
| 45 | + $(AR) rv $@ $(OBJS) | ||
| 46 | |||
| 47 | clean: | ||
| 48 | rm -f $(TARGETS) *~ *.o $(OBJS) | ||
diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch new file mode 100644 index 0000000000..27c94e8a74 --- /dev/null +++ b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | Fix parallel make failure | ||
| 2 | |||
| 3 | Upstream-Status: Submitted [Maintainer directly] | ||
| 4 | |||
| 5 | Add a missing dependency which resulted in a race leading to failure | ||
| 6 | on larger values of -j. | ||
| 7 | |||
| 8 | Signed-off-by: Darren Hart <dvhart@linux.intel.com> | ||
| 9 | |||
| 10 | Index: gnu-efi-3.0/Makefile | ||
| 11 | =================================================================== | ||
| 12 | --- gnu-efi-3.0.orig/Makefile | ||
| 13 | +++ gnu-efi-3.0/Makefile | ||
| 14 | @@ -42,6 +42,8 @@ include $(SRCDIR)/Make.defaults | ||
| 15 | |||
| 16 | SUBDIRS = lib gnuefi inc apps | ||
| 17 | |||
| 18 | +gnuefi: lib | ||
| 19 | + | ||
| 20 | all: check_gcc $(SUBDIRS) | ||
| 21 | |||
| 22 | $(SUBDIRS): | ||
diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb new file mode 100644 index 0000000000..0dbdba27ac --- /dev/null +++ b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | SUMMARY = "Libraries for producing EFI binaries" | ||
| 2 | HOMEPAGE = "http://sourceforge.net/projects/gnu-efi/" | ||
| 3 | SECTION = "devel" | ||
| 4 | LICENSE = "GPLv2+" | ||
| 5 | LIC_FILES_CHKSUM = "file://debian/copyright;md5=5fb358a180f484b285b0d99acdc29666" | ||
| 6 | |||
| 7 | SRC_URI = "http://downloads.sourceforge.net/gnu-efi/gnu-efi_3.0u.orig.tar.gz \ | ||
| 8 | file://parallel-make.patch \ | ||
| 9 | file://parallel-make-archives.patch \ | ||
| 10 | " | ||
| 11 | SRC_URI[md5sum] = "d15d3c700e79a1e2938544d73edc572d" | ||
| 12 | SRC_URI[sha256sum] = "3c0d450d5829204ca05dcb3b2aae772e52c379b7c7e09146759c6315606f934e" | ||
| 13 | |||
| 14 | COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux" | ||
| 15 | |||
| 16 | S = "${WORKDIR}/gnu-efi-3.0" | ||
| 17 | |||
| 18 | def gnu_efi_arch(d): | ||
| 19 | import re | ||
| 20 | tarch = d.getVar("TARGET_ARCH", True) | ||
| 21 | if re.match("i[3456789]86", tarch): | ||
| 22 | return "ia32" | ||
| 23 | return tarch | ||
| 24 | |||
| 25 | EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \ | ||
| 26 | 'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}'\ | ||
| 27 | " | ||
| 28 | |||
| 29 | do_install() { | ||
| 30 | oe_runmake install INSTALLROOT="${D}" | ||
| 31 | } | ||
| 32 | |||
| 33 | FILES_${PN} += "${libdir}/*.lds" | ||
