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
|
||||
}
|
||||
|
||||
probe_target_compilers() {
|
||||
for i; do
|
||||
probe_target_compiler $i
|
||||
test -n "$target_cc" && return 0
|
||||
done
|
||||
}
|
||||
|
||||
write_target_makefile() {
|
||||
if test -n "$target_cc"; then
|
||||
echo "CC=$target_cc"
|
||||
@ -2190,6 +2197,10 @@ if test "$QEMU_GA_VERSION" = ""; then
|
||||
QEMU_GA_VERSION=$(cat $source_path/VERSION)
|
||||
fi
|
||||
|
||||
|
||||
#######################################
|
||||
# cross-compiled firmware targets
|
||||
|
||||
# Set up build tree symlinks that point back into the source tree
|
||||
# (these can be both files and directories).
|
||||
# Caution: avoid adding files or directories here using wildcards. This
|
||||
@ -2216,19 +2227,27 @@ done
|
||||
|
||||
# Mac OS X ships with a broken assembler
|
||||
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" != "haiku" && test "$softmmu" = yes ; then
|
||||
# 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
|
||||
# variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
|
||||
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"
|
||||
roms="optionrom"
|
||||
break
|
||||
fi
|
||||
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
|
||||
|
||||
# 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_VERSION=$(pkg-config --modversion glib-2.0)" >> $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 "EXESUF=$EXESUF" >> $config_host_mak
|
||||
|
||||
@ -2571,10 +2589,6 @@ for target in $target_list; do
|
||||
done
|
||||
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
|
||||
cross="config-meson.cross.new"
|
||||
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
|
||||
@true
|
||||
|
||||
include ../../config-host.mak
|
||||
CFLAGS = -O2 -g
|
||||
|
||||
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 CFLAGS += $(call cc-option, $(Wa)-32)
|
||||
|
||||
LD_I386_EMULATION ?= elf_i386
|
||||
override LDFLAGS = -m $(LD_I386_EMULATION) -T $(SRC_DIR)/flat.lds
|
||||
|
||||
pvh.img: pvh.o pvh_main.o
|
||||
|
Loading…
Reference in New Issue
Block a user