From: Laszlo Ersek <ler...@redhat.com>

Decompress and install the edk2 firmware blobs as part of "make install",
unless blob installation was disabled with configure's "--disable-blobs"
option.

Additionally, decompress the blobs as a pre-requisite for building softmmu
binaries -- this is helpful for both "make check" and other ad-hoc tests
one might want to run in the build directory.

Signed-off-by: Laszlo Ersek <ler...@redhat.com>
Reviewed-by: Michal Privoznik <mpriv...@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com>
Tested-by: Philippe Mathieu-Daudé <phi...@redhat.com>
Reviewed-by: Michael S. Tsirkin <m...@redhat.com>
Tested-by: Igor Mammedov <imamm...@redhat.com>
Message-Id: <20190313210057.32584-12-ler...@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com>
---
 .gitignore |  1 +
 Makefile   | 29 ++++++++++++++++++++++++++++-
 configure  |  1 +
 3 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore
index 8f78221804..fd6e6c38c7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -97,6 +97,7 @@
 *.gcno
 *.gcov
 /pc-bios/bios-pq/status
+/pc-bios/edk2-*.fd
 /pc-bios/vgabios-pq/status
 /pc-bios/optionrom/linuxboot.asm
 /pc-bios/optionrom/linuxboot.bin
diff --git a/Makefile b/Makefile
index d8dad39c5d..6c5c1a1cad 100644
--- a/Makefile
+++ b/Makefile
@@ -296,6 +296,10 @@ ui/input-keymap-%.c: $(KEYCODEMAP_GEN) $(KEYCODEMAP_CSV) 
$(SRC_PATH)/ui/Makefile
 $(KEYCODEMAP_GEN): .git-submodule-status
 $(KEYCODEMAP_CSV): .git-submodule-status
 
+edk2-decompressed = $(basename $(wildcard pc-bios/edk2-*.fd.xz))
+pc-bios/edk2-%.fd: pc-bios/edk2-%.fd.xz
+       $(call quiet-command,xz -d -c $< > $@,"UNXZ",$<)
+
 # Don't try to regenerate Makefile or configure
 # We don't generate any of them
 Makefile: ;
@@ -444,6 +448,7 @@ $(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
 $(SOFTMMU_SUBDIR_RULES): $(crypto-obj-y)
 $(SOFTMMU_SUBDIR_RULES): $(io-obj-y)
 $(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
+$(SOFTMMU_SUBDIR_RULES): $(edk2-decompressed)
 
 subdir-%:
        $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" 
TARGET_DIR="$*/" all,)
@@ -632,6 +637,7 @@ clean:
                ! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-arm.a \
                ! -path ./roms/edk2/BaseTools/Source/Python/UPT/Dll/sqlite3.dll 
\
                -exec rm {} +
+       rm -f $(edk2-decompressed)
        rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* 
*.pod *~ */*~
        rm -f fsdev/*.pod scsi/*.pod
        rm -f qemu-img-cmds.h
@@ -722,9 +728,14 @@ spapr-rtas.bin slof.bin skiboot.lid \
 palcode-clipper \
 u-boot.e500 u-boot-sam460-20100605.bin \
 qemu_vga.ndrv \
+edk2-licenses.txt \
 hppa-firmware.img
+
+DESCS=50-edk2-i386-secure.json 50-edk2-x86_64-secure.json \
+60-edk2-aarch64.json 60-edk2-arm.json 60-edk2-i386.json 60-edk2-x86_64.json
 else
 BLOBS=
+DESCS=
 endif
 
 # Note that we manually filter-out the non-Sphinx documentation which
@@ -785,7 +796,8 @@ endif
 
 ICON_SIZES=16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512
 
-install: all $(if $(BUILD_DOCS),install-doc) install-datadir 
install-localstatedir
+install: all $(if $(BUILD_DOCS),install-doc) install-datadir 
install-localstatedir \
+       $(if $(INSTALL_BLOBS),$(edk2-decompressed))
 ifneq ($(TOOLS),)
        $(call install-prog,$(subst 
qemu-ga,qemu-ga$(EXESUF),$(TOOLS)),$(DESTDIR)$(bindir))
 endif
@@ -807,6 +819,21 @@ ifneq ($(BLOBS),)
        set -e; for x in $(BLOBS); do \
                $(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x 
"$(DESTDIR)$(qemu_datadir)"; \
        done
+endif
+ifdef INSTALL_BLOBS
+       set -e; for x in $(edk2-decompressed); do \
+               $(INSTALL_DATA) $$x "$(DESTDIR)$(qemu_datadir)"; \
+       done
+endif
+ifneq ($(DESCS),)
+       $(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/firmware"
+       set -e; tmpf=$$(mktemp); trap 'rm -f -- "$$tmpf"' EXIT; \
+       for x in $(DESCS); do \
+               sed -e 's,@DATADIR@,$(DESTDIR)$(qemu_datadir),' \
+                       "$(SRC_PATH)/pc-bios/descriptors/$$x" > "$$tmpf"; \
+               $(INSTALL_DATA) "$$tmpf" \
+                       "$(DESTDIR)$(qemu_datadir)/firmware/$$x"; \
+       done
 endif
        for s in $(ICON_SIZES); do \
                mkdir -p "$(DESTDIR)/$(qemu_icondir)/hicolor/$${s}/apps"; \
diff --git a/configure b/configure
index 7071f52584..dc5876d09a 100755
--- a/configure
+++ b/configure
@@ -7863,6 +7863,7 @@ for bios_file in \
     $source_path/pc-bios/*.img \
     $source_path/pc-bios/openbios-* \
     $source_path/pc-bios/u-boot.* \
+    $source_path/pc-bios/edk2-*.fd.xz \
     $source_path/pc-bios/palcode-*
 do
     LINKS="$LINKS pc-bios/$(basename $bios_file)"
-- 
2.20.1


Reply via email to