From patchwork Tue Sep 5 14:07:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 810185 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3xmpWb3d07z9t2R for ; Wed, 6 Sep 2017 00:10:03 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 26C49C21FA6; Tue, 5 Sep 2017 14:08:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 18DF0C21D95; Tue, 5 Sep 2017 14:08:12 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 26AD4C21D64; Tue, 5 Sep 2017 14:07:50 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by lists.denx.de (Postfix) with ESMTPS id 06900C21E3E for ; Tue, 5 Sep 2017 14:07:46 +0000 (UTC) Received: from laptop1.fritz.box ([92.40.248.116]) by mail.gmx.com (mrgmx002 [212.227.17.184]) with ESMTPSA (Nemesis) id 0Lh7sF-1dA68H41eZ-00oaUX; Tue, 05 Sep 2017 16:07:43 +0200 From: Heinrich Schuchardt To: Alexander Graf Date: Tue, 5 Sep 2017 16:07:19 +0200 Message-Id: <20170905140719.20192-5-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170905140719.20192-1-xypron.glpk@gmx.de> References: <20170905140719.20192-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:lTtvjJu1vNBDB4iPZYxL5e5Zx4VpgHEYo74L/PTS7YW1SfOGNCD VM7pLmJTqZ3LM+ZqVmAe6e0zU5m5qhOwCJE/JG7zLLYxLzBRCiHnyzAqIcHbSYKJ2mIWuYG baTVCsjPCi05pAxHBKoeJ+ZPwYRjlNjsNlwxAT7foyUgk1IjU6ndgjAJVH1HjqVUgxQVGjy qUZyeh7Y8mIYMUNOAFE/A== X-UI-Out-Filterresults: notjunk:1; V01:K0:cIXNnRdhoBY=:APcn4hGjDUr48kIv1Kw0kC BcYKTKxvY3BqxKsvw/mvrHnz4rK9kXkkaeA9AevzeFWdkkZryRg4e9/Atxrjupwh/ZwE8E6jW SZ9Zye48MpyIXryAo2DOBvekBbhPv3FoaqG7e7ZJ6G0BPdRJiU1JzCxBHDQ7hf9oQNafUfSwX hmPiGU/XoLT2xeNMWEyZJFEWxslR/pI30KtapIc5/RfY5UF5Pqr0OECyQLO3NDMzijXqTZMR9 7r/V4GoFdqgOISzzpXL6jgijydVZfXagnKbyV4E9prDvxUxg74HPTFaWSKQkmT9lmFrE36wo5 q/5EzbVLJM82GGtYlsTB/zVOpjFOxy1FuD6uVg/tDE4+T68mecs5FEP5HyWyNFnjbLV+KCEUA WPTpkg/kKg8upzWbjaKtNqi6WypBhBXHfqqynvJOmWYdW/90slR9nNOfx6ocTlqkYXsTGKkRg cgsvTZJiA0NcSupOxZ5BFJndaxyE1phuX3dKpr7o9MhGqzrbeuKW11iCnYR2wi0nxy8pHbMDA 3VxOY/4XogJ2bGzDVKv/WL/K207S2B1tsb3CdsY3BxlH0Ni9Prbo5AMDRzh2/0gP2fnAlXeyv nxnNOzVMHn9KDsrop48w0AKRqNeyrcEozQGy+wC/sjPct3Pqeece74xvRR5uNkLh80iRhLn// dEFdvI3zR6S9Tn37ncwPTFH/8SgjzPF7i5lhkazZHqNCIZrfKKH37t4quC5Vk82iOBFkHqYnm uAtjxmjf7cp6EjDI7wIOs1vDS3TEax9KBVZjY9E8yDhOJuHzz/uAxePmgaUuJ697e5pDBHePQ ppLnghtuuDKTR0jBosbMt9f+HTjUw== Cc: Mark Kettenis , u-boot@lists.denx.de, Heinrich Schuchardt Subject: [U-Boot] [PATCH v2 4/4] efi_loader: allow multiple source files for EFI apps X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" With this patch an EFI application can be built out of multiple source files. All object files that are to be included into the EFI application %.efi must be added to variable %-objs. E.g. helloworld-objs = helloworld.o script/Makefile.lib automatically generates file %_efi.d containing the dependency definition. This file is included in the next run of make. From now on all objects in %-objs are built. The %_efi.d file should be included in the source distribution. After adding a new file to %-objs the first make run will fail due to the outdated %_efi.d file. Signed-off-by: Heinrich Schuchardt --- v2 new patch --- lib/efi_loader/Makefile | 3 +++ lib/efi_loader/helloworld_efi.d | 1 + scripts/Makefile.lib | 12 ++++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 lib/efi_loader/helloworld_efi.d diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile index 5200497230..d6a9635cc8 100644 --- a/lib/efi_loader/Makefile +++ b/lib/efi_loader/Makefile @@ -10,6 +10,9 @@ CFLAGS_helloworld.o := $(CFLAGS_EFI) CFLAGS_REMOVE_helloworld.o := $(CFLAGS_NON_EFI) +helloworld-objs = \ +helloworld.o + ifneq ($(CONFIG_CMD_BOOTEFI_HELLO_COMPILE),) always += helloworld.efi endif diff --git a/lib/efi_loader/helloworld_efi.d b/lib/efi_loader/helloworld_efi.d new file mode 100644 index 0000000000..892db64c8b --- /dev/null +++ b/lib/efi_loader/helloworld_efi.d @@ -0,0 +1 @@ +lib/efi_loader/helloworld_efi.d: lib/efi_loader/helloworld.o diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index ebc74f8987..1a9f32902d 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -373,14 +373,22 @@ $(obj)/%.efi: $(obj)/%_efi.so quiet_cmd_efi_ld = LD $@ cmd_efi_ld = $(LD) -nostdlib -znocombreloc -T $(EFI_LDS_PATH) -shared \ - -Bsymbolic $^ -o $@ + -Bsymbolic $(foreach _s, $($*-objs), $(obj)/$(_s)) -o $@ EFI_LDS_PATH = $(srctree)/arch/$(ARCH)/lib/$(EFI_LDS) -$(obj)/%_efi.so: $(obj)/%.o arch/$(ARCH)/lib/$(EFI_CRT0) \ +.PRECIOUS: $(obj)/%_efi.d + +$(obj)/%_efi.so: $(obj)/%.o $(obj)/%.d arch/$(ARCH)/lib/$(EFI_CRT0) \ arch/$(ARCH)/lib/$(EFI_RELOC) + @echo $(obj)/$*_efi.d: $(foreach _s, $($*-objs), $(obj)/$(_s)) \ + > $(obj)/$*_efi.d $(call cmd,efi_ld) +$(obj)/%.d:; + +include $(wildcard $(foreach _s, $(filter %_efi.o, $(obj-y)), $(_s:.o=.d))) + # ACPI # --------------------------------------------------------------------------- quiet_cmd_acpi_c_asl= ASL $<