From patchwork Tue Feb 18 23:33:58 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Petazzoni X-Patchwork-Id: 321704 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from fraxinus.osuosl.org (fraxinus.osuosl.org [140.211.166.137]) by ozlabs.org (Postfix) with ESMTP id BAA862C00E5 for ; Wed, 19 Feb 2014 10:34:16 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 6BDC289363; Tue, 18 Feb 2014 23:34:15 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zFOwmWN5ti85; Tue, 18 Feb 2014 23:34:13 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id 081FA81E29; Tue, 18 Feb 2014 23:34:13 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (silver.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 369251CE9C6 for ; Tue, 18 Feb 2014 23:34:07 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 8232732A9B for ; Tue, 18 Feb 2014 23:34:07 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CJ5bL-d41uWd for ; Tue, 18 Feb 2014 23:34:06 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail.free-electrons.com (top.free-electrons.com [176.31.233.9]) by silver.osuosl.org (Postfix) with ESMTP id 10B5D24F54 for ; Tue, 18 Feb 2014 23:34:06 +0000 (UTC) Received: by mail.free-electrons.com (Postfix, from userid 106) id D46507BE; Wed, 19 Feb 2014 00:34:20 +0100 (CET) Received: from localhost (AToulouse-651-1-98-40.w109-222.abo.wanadoo.fr [109.222.65.40]) by mail.free-electrons.com (Postfix) with ESMTPSA id 7F1C96E5; Wed, 19 Feb 2014 00:34:20 +0100 (CET) From: Thomas Petazzoni To: Buildroot List Date: Wed, 19 Feb 2014 00:33:58 +0100 Message-Id: <1392766441-2160-3-git-send-email-thomas.petazzoni@free-electrons.com> X-Mailer: git-send-email 1.8.3.2 In-Reply-To: <1392766441-2160-1-git-send-email-thomas.petazzoni@free-electrons.com> References: <1392766441-2160-1-git-send-email-thomas.petazzoni@free-electrons.com> Subject: [Buildroot] [PATCH v2 2/5] gnu-efi: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net Signed-off-by: Thomas Petazzoni Signed-off-by: Christophe Vu-Brugier --- package/Config.in | 1 + package/gnu-efi/Config.in | 9 ++++ .../gnu-efi/gnu-efi-01-use-override-cflags.patch | 53 ++++++++++++++++++++++ .../gnu-efi-02-parallel-make-archives.patch | 48 ++++++++++++++++++++ package/gnu-efi/gnu-efi-03-parallel-make.patch | 22 +++++++++ package/gnu-efi/gnu-efi.mk | 40 ++++++++++++++++ 6 files changed, 173 insertions(+) create mode 100644 package/gnu-efi/Config.in create mode 100644 package/gnu-efi/gnu-efi-01-use-override-cflags.patch create mode 100644 package/gnu-efi/gnu-efi-02-parallel-make-archives.patch create mode 100644 package/gnu-efi/gnu-efi-03-parallel-make.patch create mode 100644 package/gnu-efi/gnu-efi.mk diff --git a/package/Config.in b/package/Config.in index cb2d31b..a7a93f0 100644 --- a/package/Config.in +++ b/package/Config.in @@ -584,6 +584,7 @@ endmenu menu "Hardware handling" source "package/ccid/Config.in" source "package/dtc/Config.in" +source "package/gnu-efi/Config.in" source "package/lcdapi/Config.in" source "package/libaio/Config.in" source "package/libatasmart/Config.in" diff --git a/package/gnu-efi/Config.in b/package/gnu-efi/Config.in new file mode 100644 index 0000000..982102f --- /dev/null +++ b/package/gnu-efi/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_GNU_EFI + bool "gnu-efi" + depends on BR2_i386 || BR2_x86_64 + help + Develop EFI applications for IA-64 (IPF), IA-32 (x86), and + x86_64 platforms using the GNU toolchain and the EFI + development environment. + + http://gnu-efi.sourceforge.net/ diff --git a/package/gnu-efi/gnu-efi-01-use-override-cflags.patch b/package/gnu-efi/gnu-efi-01-use-override-cflags.patch new file mode 100644 index 0000000..07c3a9f --- /dev/null +++ b/package/gnu-efi/gnu-efi-01-use-override-cflags.patch @@ -0,0 +1,53 @@ +Allow CFLAGS/CPPFLAGS to be completed from the environment + +Buildroot passes its own CPPFLAGS and CFLAGS in the environment, so +the CFLAGS += and CPPFLAGS += statements in gnu-efi Makefile have no +effect. Change these to override += so that they extend the +flags passed by Buildroot. + +Signed-off-by: Thomas Petazzoni + +Index: b/Make.defaults +=================================================================== +--- a/Make.defaults ++++ b/Make.defaults +@@ -83,25 +83,25 @@ + && [ $(GCCMINOR) -ge "7" ] ) ) \ + && echo 1) + ifeq ($(GCCNEWENOUGH),1) +- CPPFLAGS += -DGNU_EFI_USE_MS_ABI -maccumulate-outgoing-args --std=c11 ++ override CPPFLAGS += -DGNU_EFI_USE_MS_ABI -maccumulate-outgoing-args --std=c11 + endif + + # Arch-specific compilation flags +-CPPFLAGS += -DCONFIG_$(ARCH) ++override CPPFLAGS += -DCONFIG_$(ARCH) + + ifeq ($(ARCH),ia64) +- CFLAGS += -mfixed-range=f32-f127 ++ override CFLAGS += -mfixed-range=f32-f127 + endif + + ifeq ($(ARCH),ia32) +- CFLAGS += -mno-mmx -mno-sse ++ override CFLAGS += -mno-mmx -mno-sse + ifeq ($(HOSTARCH),x86_64) + ARCH3264 = -m32 + endif + endif + + ifeq ($(ARCH),x86_64) +- CFLAGS += -mno-red-zone -mno-mmx -mno-sse ++ override CFLAGS += -mno-red-zone -mno-mmx -mno-sse + ifeq ($(HOSTARCH),ia32) + ARCH3264 = -m64 + endif +@@ -110,7 +110,7 @@ + # Generic compilation flags + INCDIR += -I$(SRCDIR) -I$(TOPDIR)/inc -I$(TOPDIR)/inc/$(ARCH) \ + -I$(TOPDIR)/inc/protocol +-CFLAGS += $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing \ ++override CFLAGS += $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing \ + -fno-merge-constants -ffreestanding -fno-stack-protector \ + -fno-stack-check + ASFLAGS += $(ARCH3264) diff --git a/package/gnu-efi/gnu-efi-02-parallel-make-archives.patch b/package/gnu-efi/gnu-efi-02-parallel-make-archives.patch new file mode 100644 index 0000000..e5b47c1 --- /dev/null +++ b/package/gnu-efi/gnu-efi-02-parallel-make-archives.patch @@ -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 +Signed-off-by: Darren Hart +--- +--- + 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) diff --git a/package/gnu-efi/gnu-efi-03-parallel-make.patch b/package/gnu-efi/gnu-efi-03-parallel-make.patch new file mode 100644 index 0000000..27c94e8 --- /dev/null +++ b/package/gnu-efi/gnu-efi-03-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/package/gnu-efi/gnu-efi.mk b/package/gnu-efi/gnu-efi.mk new file mode 100644 index 0000000..28eb17e --- /dev/null +++ b/package/gnu-efi/gnu-efi.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# gnu-efi +# +################################################################################ + +GNU_EFI_VERSION = 3.0u +GNU_EFI_SOURCE = gnu-efi_$(GNU_EFI_VERSION).orig.tar.gz +GNU_EFI_SITE = http://downloads.sourceforge.net/project/gnu-efi/ +GNU_EFI_INSTALL_STAGING = YES +GNU_EFI_LICENSE = GPLv2+ (gnuefi), BSD (efilib) +GNU_EFI_LICENSE_FILES = debian/copyright + +ifeq ($(BR2_i386),y) +GNU_EFI_PLATFORM=ia32 +else ifeq ($(BR2_x86_64),y) +GNU_EFI_PLATFORM=x86_64 +endif + +define GNU_EFI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(TARGET_CONFIGURE_OPTS) \ + ARCH=$(GNU_EFI_PLATFORM) +endef + +define GNU_EFI_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(TARGET_CONFIGURE_OPTS) \ + INSTALLROOT=$(TARGET_DIR) \ + PREFIX=/usr ARCH=$(GNU_EFI_PLATFORM) install +endef + +define GNU_EFI_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(TARGET_CONFIGURE_OPTS) \ + INSTALLROOT=$(STAGING_DIR) \ + PREFIX=/usr ARCH=$(GNU_EFI_PLATFORM) install +endef + +$(eval $(generic-package))