* [Qemu-devel] [PATCH 0/7] roms: build improvements
@ 2013-09-23 9:50 Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 1/7] roms: add 'make clean' Gerd Hoffmann
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Gerd Hoffmann @ 2013-09-23 9:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Hi,
Here comes a patch series with a bunch of improvements for rom builds.
It enables parallel builds for some of the roms, and it starts adding
support for cross builds.
cheers,
Gerd
Gerd Hoffmann (7):
roms: add 'make clean'
roms: enable parallel builds for 'make lgplvgabios'
roms: build lgplvgabios isavga variant
roms: parallel ipxe builds
roms: rewrite scripts/refresh-pxe-roms.sh
roms: add rules to build slof
roms: enable ipxe cross builds
roms/Makefile | 63 ++++++++++++++++++++++++++++++-----
scripts/refresh-pxe-roms.sh | 80 ++++-----------------------------------------
2 files changed, 60 insertions(+), 83 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 1/7] roms: add 'make clean'
2013-09-23 9:50 [Qemu-devel] [PATCH 0/7] roms: build improvements Gerd Hoffmann
@ 2013-09-23 9:50 ` Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 2/7] roms: enable parallel builds for 'make lgplvgabios' Gerd Hoffmann
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Gerd Hoffmann @ 2013-09-23 9:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
roms/Makefile | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/roms/Makefile b/roms/Makefile
index 7a228ae..b646060 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -75,3 +75,10 @@ efi-rom-%: ipxe/src/config/local/general.h
ipxe/src/config/local/%: config.ipxe.%
cp $< $@
+
+
+clean:
+ rm -rf seabios/.config seabios/out
+ $(MAKE) $(MAKEFLAGS) -C vgabios clean
+ rm -f vgabios/VGABIOS-lgpl-latest*
+ $(MAKE) $(MAKEFLAGS) -C ipxe/src veryclean
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 2/7] roms: enable parallel builds for 'make lgplvgabios'
2013-09-23 9:50 [Qemu-devel] [PATCH 0/7] roms: build improvements Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 1/7] roms: add 'make clean' Gerd Hoffmann
@ 2013-09-23 9:50 ` Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 3/7] roms: build lgplvgabios isavga variant Gerd Hoffmann
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Gerd Hoffmann @ 2013-09-23 9:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Recurse into vgabios once, adjust dependencies, call make using
$(MAKE) $(MAKEFLAGS) so jobserver mode works.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
roms/Makefile | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/roms/Makefile b/roms/Makefile
index b646060..6d4330f 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -1,5 +1,6 @@
vgabios_variants := stdvga cirrus vmware qxl
+vgabios_targets := $(patsubst %,vgabios-%.bin,$(vgabios_variants))
pxerom_variants := e1000 eepro100 ne2k_pci pcnet rtl8139 virtio
pxe-rom-e1000 efi-rom-e1000 : VID := 8086
@@ -49,12 +50,16 @@ seavgabios-%: config.vga.%
make -C seabios out/vgabios.bin
cp seabios/out/vgabios.bin ../pc-bios/vgabios-$*.bin
+
lgplvgabios: $(patsubst %,lgplvgabios-%,$(vgabios_variants))
-lgplvgabios-%:
- make -C vgabios vgabios-$*.bin
+lgplvgabios-%: build-lgplvgabios
cp vgabios/VGABIOS-lgpl-latest.$*.bin ../pc-bios/vgabios-$*.bin
+build-lgplvgabios:
+ $(MAKE) $(MAKEFLAGS) -C vgabios $(vgabios_targets)
+
+
pxerom: $(patsubst %,pxe-rom-%,$(pxerom_variants))
pxe-rom-%: ipxe/src/config/local/general.h
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 3/7] roms: build lgplvgabios isavga variant
2013-09-23 9:50 [Qemu-devel] [PATCH 0/7] roms: build improvements Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 1/7] roms: add 'make clean' Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 2/7] roms: enable parallel builds for 'make lgplvgabios' Gerd Hoffmann
@ 2013-09-23 9:50 ` Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 4/7] roms: parallel ipxe builds Gerd Hoffmann
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Gerd Hoffmann @ 2013-09-23 9:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Add logic to also build+install the isavga vgabios variant.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
roms/Makefile | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/roms/Makefile b/roms/Makefile
index 6d4330f..11d7837 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -1,6 +1,6 @@
-vgabios_variants := stdvga cirrus vmware qxl
-vgabios_targets := $(patsubst %,vgabios-%.bin,$(vgabios_variants))
+vgabios_variants := stdvga cirrus vmware qxl isavga
+vgabios_targets := $(subst -isavga,,$(patsubst %,vgabios-%.bin,$(vgabios_variants)))
pxerom_variants := e1000 eepro100 ne2k_pci pcnet rtl8139 virtio
pxe-rom-e1000 efi-rom-e1000 : VID := 8086
@@ -53,6 +53,8 @@ seavgabios-%: config.vga.%
lgplvgabios: $(patsubst %,lgplvgabios-%,$(vgabios_variants))
+lgplvgabios-isavga: build-lgplvgabios
+ cp vgabios/VGABIOS-lgpl-latest.bin ../pc-bios/vgabios.bin
lgplvgabios-%: build-lgplvgabios
cp vgabios/VGABIOS-lgpl-latest.$*.bin ../pc-bios/vgabios-$*.bin
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 4/7] roms: parallel ipxe builds
2013-09-23 9:50 [Qemu-devel] [PATCH 0/7] roms: build improvements Gerd Hoffmann
` (2 preceding siblings ...)
2013-09-23 9:50 ` [Qemu-devel] [PATCH 3/7] roms: build lgplvgabios isavga variant Gerd Hoffmann
@ 2013-09-23 9:50 ` Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 5/7] roms: rewrite scripts/refresh-pxe-roms.sh Gerd Hoffmann
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Gerd Hoffmann @ 2013-09-23 9:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Enable parallel ipxe builds. Reduce the recursive make calls. Call
recursive make properly using $(MAKE) $(MAKEFLAGS).
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
roms/Makefile | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/roms/Makefile b/roms/Makefile
index 11d7837..9672625 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -2,6 +2,7 @@
vgabios_variants := stdvga cirrus vmware qxl isavga
vgabios_targets := $(subst -isavga,,$(patsubst %,vgabios-%.bin,$(vgabios_variants)))
pxerom_variants := e1000 eepro100 ne2k_pci pcnet rtl8139 virtio
+pxerom_targets := 8086100e 80861209 10500940 10222000 10ec8139 1af41000
pxe-rom-e1000 efi-rom-e1000 : VID := 8086
pxe-rom-e1000 efi-rom-e1000 : DID := 100e
@@ -64,22 +65,27 @@ build-lgplvgabios:
pxerom: $(patsubst %,pxe-rom-%,$(pxerom_variants))
-pxe-rom-%: ipxe/src/config/local/general.h
- make -C ipxe/src bin/$(VID)$(DID).rom
+pxe-rom-%: build-pxe-roms
cp ipxe/src/bin/$(VID)$(DID).rom ../pc-bios/pxe-$*.rom
efirom: $(patsubst %,efi-rom-%,$(pxerom_variants))
-efi-rom-%: ipxe/src/config/local/general.h
- make -C ipxe/src bin/$(VID)$(DID).rom
- make -C ipxe/src bin-i386-efi/$(VID)$(DID).efidrv
- make -C ipxe/src bin-x86_64-efi/$(VID)$(DID).efidrv
+efi-rom-%: build-pxe-roms build-efi-roms
$(EFIROM) -f "0x$(VID)" -i "0x$(DID)" -l 0x02 \
-b ipxe/src/bin/$(VID)$(DID).rom \
-ec ipxe/src/bin-i386-efi/$(VID)$(DID).efidrv \
-ec ipxe/src/bin-x86_64-efi/$(VID)$(DID).efidrv \
-o ../pc-bios/efi-$*.rom
+build-pxe-roms: ipxe/src/config/local/general.h
+ $(MAKE) $(MAKEFLAGS) -C ipxe/src GITVERSION="" \
+ $(patsubst %,bin/%.rom,$(pxerom_targets))
+
+build-efi-roms: build-pxe-roms ipxe/src/config/local/general.h
+ $(MAKE) $(MAKEFLAGS) -C ipxe/src GITVERSION="" \
+ $(patsubst %,bin-i386-efi/%.efidrv,$(pxerom_targets)) \
+ $(patsubst %,bin-x86_64-efi/%.efidrv,$(pxerom_targets))
+
ipxe/src/config/local/%: config.ipxe.%
cp $< $@
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 5/7] roms: rewrite scripts/refresh-pxe-roms.sh
2013-09-23 9:50 [Qemu-devel] [PATCH 0/7] roms: build improvements Gerd Hoffmann
` (3 preceding siblings ...)
2013-09-23 9:50 ` [Qemu-devel] [PATCH 4/7] roms: parallel ipxe builds Gerd Hoffmann
@ 2013-09-23 9:50 ` Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 6/7] roms: add rules to build slof Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 7/7] roms: enable ipxe cross builds Gerd Hoffmann
6 siblings, 0 replies; 8+ messages in thread
From: Gerd Hoffmann @ 2013-09-23 9:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Just use the Makefile in roms/
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
scripts/refresh-pxe-roms.sh | 80 ++++-----------------------------------------
1 file changed, 6 insertions(+), 74 deletions(-)
diff --git a/scripts/refresh-pxe-roms.sh b/scripts/refresh-pxe-roms.sh
index 14d5860..90fc0b3 100755
--- a/scripts/refresh-pxe-roms.sh
+++ b/scripts/refresh-pxe-roms.sh
@@ -21,79 +21,11 @@
# Usage: Run from root of qemu tree
# ./scripts/refresh-pxe-roms.sh
-QEMU_DIR=$PWD
-ROM_DIR="pc-bios"
-BUILD_DIR="roms/ipxe"
-LOCAL_CONFIG="src/config/local/general.h"
-
-function cleanup ()
-{
- if [ -n "$SAVED_CONFIG" ]; then
- cp "$SAVED_CONFIG" "$BUILD_DIR"/"$LOCAL_CONFIG"
- rm "$SAVED_CONFIG"
- fi
- cd "$QEMU_DIR"
-}
-
-function make_rom ()
-{
- cd "$BUILD_DIR"/src
-
- BUILD_LOG=$(mktemp)
-
- echo Building "$2"...
- make bin/"$1".rom > "$BUILD_LOG" 2>&1
- if [ $? -ne 0 ]; then
- echo Build failed
- tail --lines=100 "$BUILD_LOG"
- rm "$BUILD_LOG"
- cleanup
- exit 1
- fi
- rm "$BUILD_LOG"
-
- cp bin/"$1".rom "$QEMU_DIR"/"$ROM_DIR"/"$2"
-
- cd "$QEMU_DIR"
-}
-
-if [ ! -d "$QEMU_DIR"/"$ROM_DIR" ]; then
- echo "error: can't find $ROM_DIR directory," \
- "run me from the root of the qemu tree"
- exit 1
-fi
-
-if [ ! -d "$BUILD_DIR"/src ]; then
- echo "error: $BUILD_DIR not populated, try:"
- echo " git submodule init $BUILD_DIR"
- echo " git submodule update $BUILD_DIR"
- exit 1
-fi
-
-if [ -e "$BUILD_DIR"/"$LOCAL_CONFIG" ]; then
- SAVED_CONFIG=$(mktemp)
- cp "$BUILD_DIR"/"$LOCAL_CONFIG" "$SAVED_CONFIG"
-fi
-
-echo "#undef BANNER_TIMEOUT" > "$BUILD_DIR"/"$LOCAL_CONFIG"
-echo "#define BANNER_TIMEOUT 0" >> "$BUILD_DIR"/"$LOCAL_CONFIG"
-
-IPXE_VERSION=$(cd "$BUILD_DIR" && git describe --tags)
-if [ -z "$IPXE_VERSION" ]; then
- echo "error: unable to retrieve git version"
- cleanup
- exit 1
+targets="pxerom"
+if test -x "$(which EfiRom 2>/dev/null)"; then
+ targets="$targets efirom"
fi
-echo "#undef PRODUCT_NAME" >> "$BUILD_DIR"/"$LOCAL_CONFIG"
-echo "#define PRODUCT_NAME \"iPXE $IPXE_VERSION\"" >> "$BUILD_DIR"/"$LOCAL_CONFIG"
-
-make_rom 8086100e pxe-e1000.rom
-make_rom 80861209 pxe-eepro100.rom
-make_rom 10500940 pxe-ne2k_pci.rom
-make_rom 10222000 pxe-pcnet.rom
-make_rom 10ec8139 pxe-rtl8139.rom
-make_rom 1af41000 pxe-virtio.rom
-
-echo done
-cleanup
+cd roms
+make -j4 $targets || exit 1
+make clean
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 6/7] roms: add rules to build slof
2013-09-23 9:50 [Qemu-devel] [PATCH 0/7] roms: build improvements Gerd Hoffmann
` (4 preceding siblings ...)
2013-09-23 9:50 ` [Qemu-devel] [PATCH 5/7] roms: rewrite scripts/refresh-pxe-roms.sh Gerd Hoffmann
@ 2013-09-23 9:50 ` Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 7/7] roms: enable ipxe cross builds Gerd Hoffmann
6 siblings, 0 replies; 8+ messages in thread
From: Gerd Hoffmann @ 2013-09-23 9:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Add some logic to detect cross compilers. Add support for "make slof",
which should JustWork[tm] if you are on a ppx64 machine or have a ppc64
cross compiler installed somewhere in your path.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
roms/Makefile | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/roms/Makefile b/roms/Makefile
index 9672625..5fcc77d 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -18,6 +18,21 @@ pxe-rom-virtio efi-rom-virtio : VID := 1af4
pxe-rom-virtio efi-rom-virtio : DID := 1000
#
+# cross compiler auto detection
+#
+path := $(subst :, ,$(PATH))
+system := $(shell uname -s | tr "A-Z" "a-z")
+
+# first find cross binutils in path
+find-cross-ld = $(firstword $(wildcard $(patsubst %,%/$(1)-*$(system)*-ld,$(path))))
+# then check we have cross gcc too
+find-cross-gcc = $(firstword $(wildcard $(patsubst %ld,%gcc,$(call find-cross-ld,$(1)))))
+# finally strip off path + toolname so we get the prefix
+find-cross-prefix = $(subst gcc,,$(notdir $(call find-cross-gcc,$(1))))
+
+powerpc64_cross_prefix := $(call find-cross-prefix,powerpc64)
+
+#
# EfiRom utility is shipped with edk2 / tianocore, in BaseTools/
#
# We need that to combine multiple images (legacy bios,
@@ -37,6 +52,7 @@ default:
@echo " pxerom -- update nic roms (bios only)"
@echo " efirom -- update nic roms (bios+efi, this needs"
@echo " the EfiRom utility from edk2 / tianocore)"
+ @echo " slof -- update slof.bin"
bios: config.seabios
sh configure-seabios.sh $<
@@ -90,8 +106,14 @@ ipxe/src/config/local/%: config.ipxe.%
cp $< $@
+slof:
+ $(MAKE) $(MAKEFLAGS) -C SLOF CROSS=$(powerpc64_cross_prefix) qemu
+ cp SLOF/boot_rom.bin ../pc-bios/slof.bin
+
+
clean:
rm -rf seabios/.config seabios/out
$(MAKE) $(MAKEFLAGS) -C vgabios clean
rm -f vgabios/VGABIOS-lgpl-latest*
$(MAKE) $(MAKEFLAGS) -C ipxe/src veryclean
+ $(MAKE) $(MAKEFLAGS) -C SLOF clean
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 7/7] roms: enable ipxe cross builds
2013-09-23 9:50 [Qemu-devel] [PATCH 0/7] roms: build improvements Gerd Hoffmann
` (5 preceding siblings ...)
2013-09-23 9:50 ` [Qemu-devel] [PATCH 6/7] roms: add rules to build slof Gerd Hoffmann
@ 2013-09-23 9:50 ` Gerd Hoffmann
6 siblings, 0 replies; 8+ messages in thread
From: Gerd Hoffmann @ 2013-09-23 9:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
---
roms/Makefile | 3 +++
1 file changed, 3 insertions(+)
diff --git a/roms/Makefile b/roms/Makefile
index 5fcc77d..1966f04 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -31,6 +31,7 @@ find-cross-gcc = $(firstword $(wildcard $(patsubst %ld,%gcc,$(call find-cross-ld
find-cross-prefix = $(subst gcc,,$(notdir $(call find-cross-gcc,$(1))))
powerpc64_cross_prefix := $(call find-cross-prefix,powerpc64)
+x86_64_cross_prefix := $(call find-cross-prefix,x86_64)
#
# EfiRom utility is shipped with edk2 / tianocore, in BaseTools/
@@ -95,10 +96,12 @@ efi-rom-%: build-pxe-roms build-efi-roms
build-pxe-roms: ipxe/src/config/local/general.h
$(MAKE) $(MAKEFLAGS) -C ipxe/src GITVERSION="" \
+ CROSS_COMPILE=$(x86_64_cross_prefix) \
$(patsubst %,bin/%.rom,$(pxerom_targets))
build-efi-roms: build-pxe-roms ipxe/src/config/local/general.h
$(MAKE) $(MAKEFLAGS) -C ipxe/src GITVERSION="" \
+ CROSS_COMPILE=$(x86_64_cross_prefix) \
$(patsubst %,bin-i386-efi/%.efidrv,$(pxerom_targets)) \
$(patsubst %,bin-x86_64-efi/%.efidrv,$(pxerom_targets))
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-09-23 9:51 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-23 9:50 [Qemu-devel] [PATCH 0/7] roms: build improvements Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 1/7] roms: add 'make clean' Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 2/7] roms: enable parallel builds for 'make lgplvgabios' Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 3/7] roms: build lgplvgabios isavga variant Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 4/7] roms: parallel ipxe builds Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 5/7] roms: rewrite scripts/refresh-pxe-roms.sh Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 6/7] roms: add rules to build slof Gerd Hoffmann
2013-09-23 9:50 ` [Qemu-devel] [PATCH 7/7] roms: enable ipxe cross builds Gerd Hoffmann
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.