recipes-bsp: add gnu-efi recipe

gnu-efi is required by gummiboot.
Imported from meta-intel, PR dropped, no new version available.

(From OE-Core rev: fdb65c569db2b55023f9d1d72959e4e7d187a1d8)

Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Stefan Stanacar
2014-03-09 15:22:15 +02:00
committed by Richard Purdie
parent 798877eac9
commit b588a243e7
3 changed files with 103 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
Fix parallel make failure for archives
Upstream-Status: Pending
The lib and gnuefi makefiles were using the lib.a() form which compiles
and ar's as a pair instead of compiling all and then ar'ing which can
parallelize better. This was resulting in build failures on larger values
of -j.
See http://www.chemie.fu-berlin.de/chemnet/use/info/make/make_toc.html#TOC105
for details.
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
---
---
gnuefi/Makefile | 3 ++-
lib/Makefile | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
Index: gnu-efi-3.0/lib/Makefile
===================================================================
--- gnu-efi-3.0.orig/lib/Makefile
+++ gnu-efi-3.0/lib/Makefile
@@ -66,7 +66,8 @@ all: libsubdirs libefi.a
libsubdirs:
for sdir in $(SUBDIRS); do mkdir -p $$sdir; done
-libefi.a: $(patsubst %,libefi.a(%),$(OBJS))
+libefi.a: $(OBJS)
+ $(AR) rv $@ $(OBJS)
clean:
rm -f libefi.a *~ $(OBJS) */*.o
Index: gnu-efi-3.0/gnuefi/Makefile
===================================================================
--- gnu-efi-3.0.orig/gnuefi/Makefile
+++ gnu-efi-3.0/gnuefi/Makefile
@@ -51,7 +51,8 @@ TARGETS = crt0-efi-$(ARCH).o libgnuefi.a
all: $(TARGETS)
-libgnuefi.a: $(patsubst %,libgnuefi.a(%),$(OBJS))
+libgnuefi.a: $(OBJS)
+ $(AR) rv $@ $(OBJS)
clean:
rm -f $(TARGETS) *~ *.o $(OBJS)

View File

@@ -0,0 +1,22 @@
Fix parallel make failure
Upstream-Status: Submitted [Maintainer directly]
Add a missing dependency which resulted in a race leading to failure
on larger values of -j.
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
Index: gnu-efi-3.0/Makefile
===================================================================
--- gnu-efi-3.0.orig/Makefile
+++ gnu-efi-3.0/Makefile
@@ -42,6 +42,8 @@ include $(SRCDIR)/Make.defaults
SUBDIRS = lib gnuefi inc apps
+gnuefi: lib
+
all: check_gcc $(SUBDIRS)
$(SUBDIRS):

View File

@@ -0,0 +1,33 @@
SUMMARY = "Libraries for producing EFI binaries"
HOMEPAGE = "http://sourceforge.net/projects/gnu-efi/"
SECTION = "devel"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://debian/copyright;md5=5fb358a180f484b285b0d99acdc29666"
SRC_URI = "http://downloads.sourceforge.net/gnu-efi/gnu-efi_3.0u.orig.tar.gz \
file://parallel-make.patch \
file://parallel-make-archives.patch \
"
SRC_URI[md5sum] = "d15d3c700e79a1e2938544d73edc572d"
SRC_URI[sha256sum] = "3c0d450d5829204ca05dcb3b2aae772e52c379b7c7e09146759c6315606f934e"
COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux"
S = "${WORKDIR}/gnu-efi-3.0"
def gnu_efi_arch(d):
import re
tarch = d.getVar("TARGET_ARCH", True)
if re.match("i[3456789]86", tarch):
return "ia32"
return tarch
EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \
'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}'\
"
do_install() {
oe_runmake install INSTALLROOT="${D}"
}
FILES_${PN} += "${libdir}/*.lds"