From b508457fbf3674cd573f00d972aca55048c015cf Mon Sep 17 00:00:00 2001 From: Darren Hart Date: Tue, 20 Mar 2012 17:31:26 -0700 Subject: efilinux: Add efilinux 1.0 and gnu-efi efilinux is a UEFI OS loader. It was created as a reference implementation with the aim of being well documented and containing well written source code. efilinux is lightweight and convenient as a tool to debug misbehaving UEFI systems. Thanks to Paul Eggleton for is initial set of recipes from which these were based. Signed-off-by: Darren Hart CC: Paul Eggleton CC: Tom Zanussi CC: Kishore K Bodke Signed-off-by: Darren Hart --- common/recipes-bsp/efilinux/efilinux_1.0.bb | 28 ++++++++++++++++++ .../gnu-efi/gnu-efi/cross-compile-support.patch | 31 ++++++++++++++++++++ .../gnu-efi/gnu-efi/parallel-make.patch | 22 ++++++++++++++ common/recipes-bsp/gnu-efi/gnu-efi_3.0m.bb | 34 ++++++++++++++++++++++ 4 files changed, 115 insertions(+) create mode 100644 common/recipes-bsp/efilinux/efilinux_1.0.bb create mode 100644 common/recipes-bsp/gnu-efi/gnu-efi/cross-compile-support.patch create mode 100644 common/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch create mode 100644 common/recipes-bsp/gnu-efi/gnu-efi_3.0m.bb diff --git a/common/recipes-bsp/efilinux/efilinux_1.0.bb b/common/recipes-bsp/efilinux/efilinux_1.0.bb new file mode 100644 index 00000000..2a7bf6bf --- /dev/null +++ b/common/recipes-bsp/efilinux/efilinux_1.0.bb @@ -0,0 +1,28 @@ +DESCRIPTION = "A UEFI OS loader" +LICENSE = "efilinux" +LIC_FILES_CHKSUM = "file://efilinux.h;beginline=5;endline=31;md5=2316abda893ef24e6cd55cef33aa0edd" + +DEPENDS = "gnu-efi" + +inherit deploy + +SRCREV = "75b62111f83dab433e901c1a7b0f05e058aa29de" +PV = "1.0+git${SRCPV}" +PR = "r0" + +SRC_URI = "git://git.kernel.org/pub/scm/boot/efilinux/efilinux.git" + +S = "${WORKDIR}/git" + +COMPATIBLE_HOST = '(x86_64|i.86).*-(linux|freebsd.*)' + +EXTRA_OEMAKE = "INCDIR=${STAGING_INCDIR} LIBDIR=${STAGING_LIBDIR}" + +# syslinux uses $LD for linking, strip `-Wl,' so it can work +export LDFLAGS = "`echo $LDFLAGS | sed 's/-Wl,//g'`" + +do_deploy () { + install ${S}/efilinux.efi ${DEPLOYDIR}/efilinux.efi +} +addtask deploy before do_build after do_compile + diff --git a/common/recipes-bsp/gnu-efi/gnu-efi/cross-compile-support.patch b/common/recipes-bsp/gnu-efi/gnu-efi/cross-compile-support.patch new file mode 100644 index 00000000..221f80ed --- /dev/null +++ b/common/recipes-bsp/gnu-efi/gnu-efi/cross-compile-support.patch @@ -0,0 +1,31 @@ +Add cross compile support + +Upstream-Status: Submitted [Maintainer directly] + +All the user to specify the build variables in the environment. + +Signed-off-by: Darren Hart + +Index: gnu-efi-3.0/Make.defaults +=================================================================== +--- gnu-efi-3.0.orig/Make.defaults ++++ gnu-efi-3.0/Make.defaults +@@ -54,12 +55,12 @@ LDFLAGS = -nostdlib + INSTALL = install + prefix = /usr/bin/ + +-CC = $(prefix)gcc +-AS = $(prefix)as +-LD = $(prefix)ld +-AR = $(prefix)ar +-RANLIB = $(prefix)ranlib +-OBJCOPY = $(prefix)objcopy ++CC := $(prefix)gcc ++AS := $(prefix)as ++LD := $(prefix)ld ++AR := $(prefix)ar ++RANLIB := $(prefix)ranlib ++OBJCOPY := $(prefix)objcopy + + ifeq ($(ARCH),ia64) + CFLAGS += -mfixed-range=f32-f127 diff --git a/common/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch b/common/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch new file mode 100644 index 00000000..27c94e8a --- /dev/null +++ b/common/recipes-bsp/gnu-efi/gnu-efi/parallel-make.patch @@ -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 + +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): diff --git a/common/recipes-bsp/gnu-efi/gnu-efi_3.0m.bb b/common/recipes-bsp/gnu-efi/gnu-efi_3.0m.bb new file mode 100644 index 00000000..252d49a1 --- /dev/null +++ b/common/recipes-bsp/gnu-efi/gnu-efi_3.0m.bb @@ -0,0 +1,34 @@ +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" + +PR = "r2" + +SRCREV = "74" + +SRC_URI = "http://downloads.sourceforge.net/gnu-efi/gnu-efi_3.0m.orig.tar.gz \ + file://cross-compile-support.patch \ + file://parallel-make.patch \ + " +SRC_URI[md5sum] = "d0a21125aee56c0c7291ad260e916cb3" + +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}' \ + " + +do_install() { + oe_runmake install INSTALLROOT="${D}${prefix}" +} + +FILES_${PN} += "${libdir}/*.lds" -- cgit v1.2.3-54-g00ecf