qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]