[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] pc-bios: build OpenBIOS if possible
From: |
Blue Swirl |
Subject: |
[Qemu-devel] [PATCH] pc-bios: build OpenBIOS if possible |
Date: |
Sat, 9 Feb 2013 19:01:40 +0000 |
Check if xsltproc and Sparc32, Sparc64 and PPC compilers
are available. If found, rebuild OpenBIOS ROMs from submodule.
Signed-off-by: Blue Swirl <address@hidden>
---
A patch to OpenBIOS is also needed to support out of tree build,
just sent to the list.
---
configure | 25 ++++++++++++++++++++++++-
pc-bios/openbios/Makefile | 29 +++++++++++++++++++++++++++++
2 files changed, 53 insertions(+), 1 deletions(-)
create mode 100644 pc-bios/openbios/Makefile
diff --git a/configure b/configure
index 8789324..918c423 100755
--- a/configure
+++ b/configure
@@ -76,6 +76,20 @@ has() {
type "$1" >/dev/null 2>&1
}
+# check for cross compile or native tools for arch $1
+has_crossgcc() {
+ if test "$cpu" = "$1"; then
+ return 1
+ fi
+ for ccprefix in "${1}-linux-gnu-" "${1}-linux-" \
+ "${1}-elf-" "${1}-eabi-"; do
+ if has "${1}gcc"; then
+ return 1
+ fi
+ done
+ return 0
+}
+
# search for an executable in PATH
path_of() {
local_command="$1"
@@ -3241,6 +3255,14 @@ if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ;
then
roms="$roms spapr-rtas"
fi
+# OpenBIOS needs xsltproc, and Sparc32, Sparc64 and PPC cross compilers
+if has xsltproc; then
+ if has_crossgcc "sparc" -a has_crossgcc "sparc64" -a \
+ \( has_crossgcc "powerpc" -o has_crossgcc "ppc" \); then
+ roms="$roms openbios"
+ fi
+fi
+
# add pixman flags after all config tests are done
QEMU_CFLAGS="$QEMU_CFLAGS $pixman_cflags"
libs_softmmu="$libs_softmmu $pixman_libs"
@@ -4280,7 +4302,7 @@ fi
# build tree in object directory in case the source is not in the current
directory
DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32"
-DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas"
+DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/openbios"
DIRS="$DIRS roms/seabios roms/vgabios"
DIRS="$DIRS qapi-generated"
FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
@@ -4288,6 +4310,7 @@ FILES="$FILES tests/tcg/cris/Makefile
tests/tcg/cris/.gdbinit"
FILES="$FILES tests/tcg/lm32/Makefile"
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
FILES="$FILES pc-bios/spapr-rtas/Makefile"
+FILES="$FILES pc-bios/openbios/Makefile"
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
for bios_file in \
$source_path/pc-bios/*.bin \
diff --git a/pc-bios/openbios/Makefile b/pc-bios/openbios/Makefile
new file mode 100644
index 0000000..77d0815
--- /dev/null
+++ b/pc-bios/openbios/Makefile
@@ -0,0 +1,29 @@
+all: build-all
+# Dummy command so that make thinks it has done something
+ @true
+
+include ../../config-host.mak
+
+.PHONY : all clean build-all
+
+# Avoid polluting sub-make environment, especially MAKEFLAGS causes build to
fail
+unexport AS AS_FLAGS CC CFLAGS CPP INCLUDES LD LDFLAGS VERSION SRCDIR ODIR
+unexport HOSTCC HOSTCFLAGS HOSTARCH HOSTINCLUDES TARGET MAKE MAKEFLAGS MFLAGS
+
+build-all: config
+ make -C build build-verbose
+ cp build/obj-sparc32/openbios-builtin.elf ../openbios-sparc32
+ cp build/obj-sparc64/openbios-builtin.elf ../openbios-sparc64
+ cp build/obj-ppc/openbios-qemu.elf ../openbios-ppc
+
+config: config-timestamp
+ @cmp $< $@ >/dev/null 2>&1 || cp $< $@
+
+config-timestamp: $(SRC_PATH)/roms/openbios/config/scripts/switch-arch
+ mkdir build || true
+ cd build && sh $(SRC_PATH)/roms/openbios/config/scripts/switch-arch
sparc32 sparc64 ppc
+ touch $@
+
+clean:
+ make -C build $@
+ rm -f config config-timestamp
--
1.7.2.5
- [Qemu-devel] [PATCH] pc-bios: build OpenBIOS if possible,
Blue Swirl <=