aboutsummaryrefslogtreecommitdiffstats
path: root/main/gummiboot
diff options
context:
space:
mode:
Diffstat (limited to 'main/gummiboot')
-rw-r--r--main/gummiboot/APKBUILD37
-rw-r--r--main/gummiboot/gummiboot-aarch64-support.patch231
2 files changed, 249 insertions, 19 deletions
diff --git a/main/gummiboot/APKBUILD b/main/gummiboot/APKBUILD
index 752fbfeef9..9b0c1a6802 100644
--- a/main/gummiboot/APKBUILD
+++ b/main/gummiboot/APKBUILD
@@ -4,7 +4,7 @@ pkgver=48.1
pkgrel=0
pkgdesc="Simple EFI Boot Manager"
url="http://freedesktop.org/wiki/Software/gummiboot"
-arch="x86 x86_64"
+arch="all"
license="LGPLv2+"
depends=""
depends_dev="util-linux-dev"
@@ -12,37 +12,36 @@ makedepends="$depends_dev gnu-efi-dev autoconf automake docbook-xsl libxslt"
install=""
subpackages="$pkgname-doc"
#source="http://cgit.freedesktop.org/gummiboot/snapshot/gummiboot-$pkgver.tar.gz"
-source="http://dev.alpinelinux.org/archive/gummiboot/gummiboot-$pkgver.tar.gz"
+source="http://dev.alpinelinux.org/archive/gummiboot/gummiboot-$pkgver.tar.gz
+ gummiboot-aarch64-support.patch
+ "
+
+builddir="$srcdir"/gummiboot-$pkgver
-_builddir="$srcdir"/gummiboot-$pkgver
prepare() {
- local i
- cd "$_builddir"
- for i in $source; do
- case $i in
- *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
- esac
- done
- if ! [ -f ./configure ]; then
- ./autogen.sh
- fi
+ cd "$builddir"
+ default_prepare || return 1
+ ./autogen.sh || return 1
}
build() {
- cd "$_builddir"
+ cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
|| return 1
- make EFI_CFLAGS="$CFLAGS -std=gnu89"
+ make -j1 EFI_CFLAGS="$CFLAGS -std=gnu89"
}
package() {
- cd "$_builddir"
+ cd "$builddir"
make install DESTDIR="$pkgdir" || return 1
}
-md5sums="0cc22c57505e243eb8115abe82d174a4 gummiboot-48.1.tar.gz"
-sha256sums="2b649a6eb22007cd34bb355ba4ca6c1a8058e115c13048985f09a0f11f3d5295 gummiboot-48.1.tar.gz"
-sha512sums="a536db10ee384fa2cd38d22bd43f87215501c38471612a1d30986748d645d970e67b3f3d38fc9d6b53fe8532ec18283690f88d77b056dd737db5efb50bf63293 gummiboot-48.1.tar.gz"
+md5sums="0cc22c57505e243eb8115abe82d174a4 gummiboot-48.1.tar.gz
+a2a839382a217fbb7806bd0ee2be9a0f gummiboot-aarch64-support.patch"
+sha256sums="2b649a6eb22007cd34bb355ba4ca6c1a8058e115c13048985f09a0f11f3d5295 gummiboot-48.1.tar.gz
+d2d8bb1f2b0572fca61c2fc881acfbdf370abc3dd330f5018a959a3253d7ead2 gummiboot-aarch64-support.patch"
+sha512sums="a536db10ee384fa2cd38d22bd43f87215501c38471612a1d30986748d645d970e67b3f3d38fc9d6b53fe8532ec18283690f88d77b056dd737db5efb50bf63293 gummiboot-48.1.tar.gz
+6acc971c59b917616d75f5935859d109efff14c55b8fb26075ee89b6e4141f1c91708c1fc77f0acb2239d9030f4b350eaf1dac59ebb37e7a9ae5682eb52687cf gummiboot-aarch64-support.patch"
diff --git a/main/gummiboot/gummiboot-aarch64-support.patch b/main/gummiboot/gummiboot-aarch64-support.patch
new file mode 100644
index 0000000000..4f14ce5b34
--- /dev/null
+++ b/main/gummiboot/gummiboot-aarch64-support.patch
@@ -0,0 +1,231 @@
+From koen.kooi at linaro.org Sat Apr 11 01:23:22 2015
+From: koen.kooi at linaro.org (Koen Kooi)
+Date: Sat, 11 Apr 2015 10:23:22 +0200
+Subject: [systemd-devel] [gummiboot][PATCH 1/5] Makefile: support non-x86
+ builds
+Message-ID: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
+
+Move the no-mmx/no-sse CFLAGS to X86-64 and IA32 defines in preparation
+for ARM32 and Aarch64 support.
+
+Signed-off-by: Koen Kooi <koen.kooi at linaro.org>
+---
+ Makefile.am | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 6568a35..2cca313 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -94,17 +94,23 @@ efi_cflags = \
+ -ffreestanding \
+ -fno-strict-aliasing \
+ -fno-stack-protector \
+- -Wsign-compare \
+- -mno-sse \
+- -mno-mmx
++ -Wsign-compare
+
+ if ARCH_X86_64
+ efi_cflags += \
+ -mno-red-zone \
++ -mno-sse \
++ -mno-mmx
+ -DEFI_FUNCTION_WRAPPER \
+ -DGNU_EFI_USE_MS_ABI
+ endif
+
++if ARCH_IA32
++efi_cflags += \
++ -mno-sse \
++ -mno-mmx
++endif
++
+ efi_ldflags = \
+ $(EFI_LDFLAGS) \
+ -T $(EFI_LDS_DIR)/elf_$(ARCH)_efi.lds \
+--
+2.0.1
+
+
+From koen.kooi at linaro.org Sat Apr 11 01:23:23 2015
+From: koen.kooi at linaro.org (Koen Kooi)
+Date: Sat, 11 Apr 2015 10:23:23 +0200
+Subject: [systemd-devel] [gummiboot][PATCH 2/5] util: use x86 ASM only on
+ x86(-64) platforms.
+In-Reply-To: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
+References: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
+Message-ID: <1428740606-30060-2-git-send-email-koen.kooi@linaro.org>
+
+Signed-off-by: Koen Kooi <koen.kooi at linaro.org>
+---
+ src/efi/util.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/efi/util.c b/src/efi/util.c
+index ba5ed7d..689bc7c 100644
+--- a/src/efi/util.c
++++ b/src/efi/util.c
+@@ -33,7 +33,9 @@ UINT64 ticks_read(VOID) {
+ __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));
+ return (d << 32) | a;
+ }
+-#else
++#endif
++
++#ifdef __i386__
+ UINT64 ticks_read(VOID) {
+ UINT64 val;
+ __asm__ volatile ("rdtsc" : "=A" (val));
+--
+2.0.1
+
+
+From koen.kooi at linaro.org Sat Apr 11 01:23:24 2015
+From: koen.kooi at linaro.org (Koen Kooi)
+Date: Sat, 11 Apr 2015 10:23:24 +0200
+Subject: [systemd-devel] [gummiboot][PATCH 3/5] configure: add AARCH64
+ support
+In-Reply-To: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
+References: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
+Message-ID: <1428740606-30060-3-git-send-email-koen.kooi@linaro.org>
+
+This is just plumbing to add ARCH_AARCH64 for makefile tests and
+defining the machine name.
+
+Signed-off-by: Koen Kooi <koen.kooi at linaro.org>
+---
+ configure.ac | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 27bbe1d..c2077b1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -51,6 +51,7 @@ dnl Define ARCH_<NAME> conditionals
+ SET_ARCH(IA32, i*86*)
+ SET_ARCH(X86_64, x86_64*)
+ SET_ARCH(IA64, ia64*)
++SET_ARCH(AARCH64, aarch64*)
+
+ ARCH=`echo $host | sed "s/\(-\).*$//"`
+
+@@ -61,6 +62,9 @@ AM_COND_IF(ARCH_IA32, [
+ AM_COND_IF(ARCH_X86_64, [
+ MACHINE_TYPE_NAME=x64])
+
++AM_COND_IF(ARCH_AARCH64, [
++ MACHINE_TYPE_NAME=aa64])
++
+ AC_SUBST([ARCH])
+ AC_SUBST([MACHINE_TYPE_NAME])
+
+--
+2.0.1
+
+
+From koen.kooi at linaro.org Sat Apr 11 01:23:25 2015
+From: koen.kooi at linaro.org (Koen Kooi)
+Date: Sat, 11 Apr 2015 10:23:25 +0200
+Subject: [systemd-devel] [gummiboot][PATCH 4/5] util: confine x86 asm to x86
+ architectures
+In-Reply-To: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
+References: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
+Message-ID: <1428740606-30060-4-git-send-email-koen.kooi@linaro.org>
+
+Also add a stub function that just returns '1' to avoid missing symbols.
+
+Signed-off-by: Koen Kooi <koen.kooi at linaro.org>
+---
+ src/efi/util.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/efi/util.c b/src/efi/util.c
+index 689bc7c..6ce1f18 100644
+--- a/src/efi/util.c
++++ b/src/efi/util.c
+@@ -33,14 +33,17 @@ UINT64 ticks_read(VOID) {
+ __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));
+ return (d << 32) | a;
+ }
+-#endif
+-
+-#ifdef __i386__
++#elif __i386__
+ UINT64 ticks_read(VOID) {
+ UINT64 val;
+ __asm__ volatile ("rdtsc" : "=A" (val));
+ return val;
+ }
++#else
++UINT64 ticks_read(VOID) {
++ UINT64 val = 1;
++ return val;
++}
+ #endif
+
+ /* count TSC ticks during a millisecond delay */
+--
+2.0.1
+
+
+From koen.kooi at linaro.org Sat Apr 11 01:23:26 2015
+From: koen.kooi at linaro.org (Koen Kooi)
+Date: Sat, 11 Apr 2015 10:23:26 +0200
+Subject: [systemd-devel] [gummiboot][PATCH 5/5] Makefile.am: Add support for
+ AARCH64
+In-Reply-To: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
+References: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
+Message-ID: <1428740606-30060-5-git-send-email-koen.kooi@linaro.org>
+
+Aarch64 and ARM32 lack an EFI capable objcopy, so use the ldflags + -O
+binary trick gnu-efi and the Red Hat shimloader are using.
+
+Signed-off-by: Koen Kooi <koen.kooi at linaro.org>
+---
+ Makefile.am | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 2cca313..eba5ec4 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -121,6 +121,17 @@ efi_ldflags = \
+ -L $(EFI_LIB_DIR) \
+ $(EFI_LDS_DIR)/crt0-efi-$(ARCH).o
+
++# Aarch64 and ARM32 don't have an EFI capable objcopy
++if ARCH_AARCH64
++efi_ldflags += \
++ --defsym=EFI_SUBSYSTEM=0xa
++
++FORMAT = -O binary
++else
++FORMAT = --target=efi-app-$(ARCH)
++endif
++
++
+ # ------------------------------------------------------------------------------
+ gummiboot_headers = \
+ src/efi/util.h \
+@@ -156,7 +167,7 @@ $(gummiboot_solib): $(gummiboot_objects)
+ $(gummiboot): $(gummiboot_solib)
+ $(AM_V_GEN) objcopy -j .text -j .sdata -j .data -j .dynamic \
+ -j .dynsym -j .rel -j .rela -j .reloc \
+- --target=efi-app-$(ARCH) $< $@
++ $(FORMAT) $< $@
+
+ # ------------------------------------------------------------------------------
+ stub_headers = \
+@@ -191,7 +202,7 @@ $(stub_solib): $(stub_objects)
+ $(stub): $(stub_solib)
+ $(AM_V_GEN) objcopy -j .text -j .sdata -j .data -j .dynamic \
+ -j .dynsym -j .rel -j .rela -j .reloc \
+- --target=efi-app-$(ARCH) $< $@
++ $(FORMAT) $< $@
+
+ # ------------------------------------------------------------------------------
+ CLEANFILES += test-disk.img
+--
+2.0.1
+