configure: enable cross-compilation of optionrom
While container-based cross compilers are not supported, this already makes it possible to build x86 optionroms on any machine that has an installation of GCC and binutils for 32- or 64-bit x86. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20220517092616.1272238-15-pbonzini@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20220527153603.887929-26-alex.bennee@linaro.org>
This commit is contained in:
parent
9ffed42614
commit
33ab478742
30
configure
vendored
30
configure
vendored
@ -2082,6 +2082,13 @@ probe_target_compiler() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
probe_target_compilers() {
|
||||||
|
for i; do
|
||||||
|
probe_target_compiler $i
|
||||||
|
test -n "$target_cc" && return 0
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
write_target_makefile() {
|
write_target_makefile() {
|
||||||
if test -n "$target_cc"; then
|
if test -n "$target_cc"; then
|
||||||
echo "CC=$target_cc"
|
echo "CC=$target_cc"
|
||||||
@ -2190,6 +2197,10 @@ if test "$QEMU_GA_VERSION" = ""; then
|
|||||||
QEMU_GA_VERSION=$(cat $source_path/VERSION)
|
QEMU_GA_VERSION=$(cat $source_path/VERSION)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# cross-compiled firmware targets
|
||||||
|
|
||||||
# Set up build tree symlinks that point back into the source tree
|
# Set up build tree symlinks that point back into the source tree
|
||||||
# (these can be both files and directories).
|
# (these can be both files and directories).
|
||||||
# Caution: avoid adding files or directories here using wildcards. This
|
# Caution: avoid adding files or directories here using wildcards. This
|
||||||
@ -2216,19 +2227,27 @@ done
|
|||||||
|
|
||||||
# Mac OS X ships with a broken assembler
|
# Mac OS X ships with a broken assembler
|
||||||
roms=
|
roms=
|
||||||
if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
|
probe_target_compilers i386 x86_64
|
||||||
|
if test -n "$target_cc" &&
|
||||||
test "$targetos" != "darwin" && test "$targetos" != "sunos" && \
|
test "$targetos" != "darwin" && test "$targetos" != "sunos" && \
|
||||||
test "$targetos" != "haiku" && test "$softmmu" = yes ; then
|
test "$targetos" != "haiku" && test "$softmmu" = yes ; then
|
||||||
# Different host OS linkers have different ideas about the name of the ELF
|
# Different host OS linkers have different ideas about the name of the ELF
|
||||||
# emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
|
# emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
|
||||||
# variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
|
# variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
|
||||||
for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do
|
for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do
|
||||||
if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
|
if "$target_ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
|
||||||
ld_i386_emulation="$emu"
|
ld_i386_emulation="$emu"
|
||||||
roms="optionrom"
|
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
if test -n "$ld_i386_emulation"; then
|
||||||
|
roms="optionrom"
|
||||||
|
config_mak=pc-bios/optionrom/config.mak
|
||||||
|
echo "# Automatically generated by configure - do not modify" > $config_mak
|
||||||
|
echo "TOPSRC_DIR=$source_path" >> $config_mak
|
||||||
|
echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_mak
|
||||||
|
write_target_makefile >> $config_mak
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Only build s390-ccw bios if the compiler has -march=z900 or -march=z10
|
# Only build s390-ccw bios if the compiler has -march=z900 or -march=z10
|
||||||
@ -2381,7 +2400,6 @@ echo "GLIB_LIBS=$glib_libs" >> $config_host_mak
|
|||||||
echo "GLIB_BINDIR=$glib_bindir" >> $config_host_mak
|
echo "GLIB_BINDIR=$glib_bindir" >> $config_host_mak
|
||||||
echo "GLIB_VERSION=$(pkg-config --modversion glib-2.0)" >> $config_host_mak
|
echo "GLIB_VERSION=$(pkg-config --modversion glib-2.0)" >> $config_host_mak
|
||||||
echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
|
echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
|
||||||
echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
|
|
||||||
echo "STRIP=$strip" >> $config_host_mak
|
echo "STRIP=$strip" >> $config_host_mak
|
||||||
echo "EXESUF=$EXESUF" >> $config_host_mak
|
echo "EXESUF=$EXESUF" >> $config_host_mak
|
||||||
|
|
||||||
@ -2571,10 +2589,6 @@ for target in $target_list; do
|
|||||||
done
|
done
|
||||||
echo "TCG_TESTS_TARGETS=$tcg_tests_targets" >> $makefile)
|
echo "TCG_TESTS_TARGETS=$tcg_tests_targets" >> $makefile)
|
||||||
|
|
||||||
config_mak=pc-bios/optionrom/config.mak
|
|
||||||
echo "# Automatically generated by configure - do not modify" > $config_mak
|
|
||||||
echo "TOPSRC_DIR=$source_path" >> $config_mak
|
|
||||||
|
|
||||||
if test "$skip_meson" = no; then
|
if test "$skip_meson" = no; then
|
||||||
cross="config-meson.cross.new"
|
cross="config-meson.cross.new"
|
||||||
meson_quote() {
|
meson_quote() {
|
||||||
|
@ -6,7 +6,6 @@ all: multiboot.bin multiboot_dma.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bi
|
|||||||
# Dummy command so that make thinks it has done something
|
# Dummy command so that make thinks it has done something
|
||||||
@true
|
@true
|
||||||
|
|
||||||
include ../../config-host.mak
|
|
||||||
CFLAGS = -O2 -g
|
CFLAGS = -O2 -g
|
||||||
|
|
||||||
quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1))
|
quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1))
|
||||||
@ -44,7 +43,6 @@ Wa = -Wa,
|
|||||||
override ASFLAGS += -32
|
override ASFLAGS += -32
|
||||||
override CFLAGS += $(call cc-option, $(Wa)-32)
|
override CFLAGS += $(call cc-option, $(Wa)-32)
|
||||||
|
|
||||||
LD_I386_EMULATION ?= elf_i386
|
|
||||||
override LDFLAGS = -m $(LD_I386_EMULATION) -T $(SRC_DIR)/flat.lds
|
override LDFLAGS = -m $(LD_I386_EMULATION) -T $(SRC_DIR)/flat.lds
|
||||||
|
|
||||||
pvh.img: pvh.o pvh_main.o
|
pvh.img: pvh.o pvh_main.o
|
||||||
|
Loading…
Reference in New Issue
Block a user