summaryrefslogtreecommitdiffstats
path: root/meta/recipes-bsp/gnu-efi
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-bsp/gnu-efi')
-rw-r--r--meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch48
-rw-r--r--meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch22
-rw-r--r--meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb33
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 @@
1Fix parallel make failure for archives
2
3Upstream-Status: Pending
4
5The lib and gnuefi makefiles were using the lib.a() form which compiles
6and ar's as a pair instead of compiling all and then ar'ing which can
7parallelize better. This was resulting in build failures on larger values
8of -j.
9
10See http://www.chemie.fu-berlin.de/chemnet/use/info/make/make_toc.html#TOC105
11for details.
12
13Signed-off-by: Saul Wold <sgw@linux.intel.com>
14Signed-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
21Index: 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
35Index: 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 @@
1Fix parallel make failure
2
3Upstream-Status: Submitted [Maintainer directly]
4
5Add a missing dependency which resulted in a race leading to failure
6on larger values of -j.
7
8Signed-off-by: Darren Hart <dvhart@linux.intel.com>
9
10Index: 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..dbf2a07a8a
--- /dev/null
+++ b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0u.bb
@@ -0,0 +1,33 @@
1SUMMARY = "Libraries for producing EFI binaries"
2HOMEPAGE = "http://sourceforge.net/projects/gnu-efi/"
3SECTION = "devel"
4LICENSE = "GPLv2+"
5LIC_FILES_CHKSUM = "file://debian/copyright;md5=5fb358a180f484b285b0d99acdc29666"
6
7SRC_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 "
11SRC_URI[md5sum] = "d15d3c700e79a1e2938544d73edc572d"
12SRC_URI[sha256sum] = "3c0d450d5829204ca05dcb3b2aae772e52c379b7c7e09146759c6315606f934e"
13
14COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux"
15
16S = "${WORKDIR}/gnu-efi-3.0"
17
18def 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
25EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \
26 'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}' 'LIBDIR=${libdir}' \
27 "
28
29do_install() {
30 oe_runmake install INSTALLROOT="${D}"
31}
32
33FILES_${PN} += "${libdir}/*.lds"