Current code configure devices even for targets that we are not
compiling, just in case that we have configured the target
architecture.
Example that showed on my build is that I am compiling only for
x86_64-softmmu, but it insists in building roms/SLOF, that I am not
using at all.
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
configure | 120 +++++++++++++++++++++++++++++-------------------------
1 file changed, 64 insertions(+), 56 deletions(-)
diff --git a/configure b/configure
index 72ab03f11a..a2741df05d 100755
--- a/configure
+++ b/configure
@@ -2326,62 +2326,70 @@ for f in $LINKS ; do
fi
done
-# Mac OS X ships with a broken assembler
-roms=
-probe_target_compiler i386-softmmu
-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 "$target_ld" -verbose 2>&1 | grep -q "^[[:space:]]*${emu}[[:space:]]*$"; then
- ld_i386_emulation="$emu"
- break
- fi
- done
- if test -n "$ld_i386_emulation"; then
- roms="pc-bios/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
-
-probe_target_compiler ppc-softmmu
-if test -n "$target_cc" && test "$softmmu" = yes; then
- roms="$roms pc-bios/vof"
- config_mak=pc-bios/vof/config.mak
- echo "# Automatically generated by configure - do not modify" > $config_mak
- echo "SRC_DIR=$source_path/pc-bios/vof" >> $config_mak
- write_target_makefile >> $config_mak
-fi
-
-# Only build s390-ccw bios if the compiler has -march=z900 or -march=z10
-# (which is the lowest architecture level that Clang supports)
-probe_target_compiler s390x-softmmu
-if test -n "$target_cc" && test "$softmmu" = yes; then
- write_c_skeleton
- do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC
- has_z900=$?
- if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then
- if [ $has_z900 != 0 ]; then
- echo "WARNING: Your compiler does not support the z900!"
- echo " The s390-ccw bios will only work with guest CPUs >= z10."
- fi
- roms="$roms pc-bios/s390-ccw"
- config_mak=pc-bios/s390-ccw/config-host.mak
- echo "# Automatically generated by configure - do not modify" > $config_mak
- echo "SRC_PATH=$source_path/pc-bios/s390-ccw" >> $config_mak
- write_target_makefile >> $config_mak
- # SLOF is required for building the s390-ccw firmware on s390x,
- # since it is using the libnet code from SLOF for network booting.
- git_submodules="${git_submodules} roms/SLOF"
- fi
-fi
+for target in $target_list; do
+ case $target in
+ i386-softmmu)
+ # Mac OS X ships with a broken assembler
+ roms=
+ probe_target_compiler i386-softmmu
+ 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 "$target_ld" -verbose 2>&1 | grep -q "^[[:space:]]*${emu}[[:space:]]*$"; then
+ ld_i386_emulation="$emu"
+ break
+ fi
+ done
+ if test -n "$ld_i386_emulation"; then
+ roms="pc-bios/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
+ ;;
+ ppc-softmmu)
+ probe_target_compiler ppc-softmmu
+ if test -n "$target_cc" && test "$softmmu" = yes; then
+ roms="$roms pc-bios/vof"
+ config_mak=pc-bios/vof/config.mak
+ echo "# Automatically generated by configure - do not modify" > $config_mak
+ echo "SRC_DIR=$source_path/pc-bios/vof" >> $config_mak
+ write_target_makefile >> $config_mak
+ fi
+ ;;
+ s390-softmmu)
+ # Only build s390-ccw bios if the compiler has -march=z900 or -march=z10
+ # (which is the lowest architecture level that Clang supports)
+ probe_target_compiler s390x-softmmu
+ if test -n "$target_cc" && test "$softmmu" = yes; then
+ write_c_skeleton
+ do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC
+ has_z900=$?
+ if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then
+ if [ $has_z900 != 0 ]; then
+ echo "WARNING: Your compiler does not support the z900!"
+ echo " The s390-ccw bios will only work with guest CPUs >= z10."
+ fi
+ roms="$roms pc-bios/s390-ccw"
+ config_mak=pc-bios/s390-ccw/config-host.mak
+ echo "# Automatically generated by configure - do not modify" > $config_mak
+ echo "SRC_PATH=$source_path/pc-bios/s390-ccw" >> $config_mak
+ write_target_makefile >> $config_mak
+ # SLOF is required for building the s390-ccw firmware on s390x,
+ # since it is using the libnet code from SLOF for network booting.
+ git_submodules="${git_submodules} roms/SLOF"
+ fi
+ fi
+ ;;
+ esac
+done
#######################################
# generate config-host.mak
--
2.37.2
On 2/9/22 18:33, Juan Quintela wrote:
> Current code configure devices even for targets that we are not
> compiling, just in case that we have configured the target
> architecture.
>
> Example that showed on my build is that I am compiling only for
> x86_64-softmmu, but it insists in building roms/SLOF, that I am not
> using at all.
>
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> ---
> configure | 120 +++++++++++++++++++++++++++++-------------------------
> 1 file changed, 64 insertions(+), 56 deletions(-)
>
> diff --git a/configure b/configure
> index 72ab03f11a..a2741df05d 100755
> --- a/configure
> +++ b/configure
> @@ -2326,62 +2326,70 @@ for f in $LINKS ; do
> fi
> done
>
> -# Mac OS X ships with a broken assembler
> -roms=
> -probe_target_compiler i386-softmmu
> -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 "$target_ld" -verbose 2>&1 | grep -q "^[[:space:]]*${emu}[[:space:]]*$"; then
> - ld_i386_emulation="$emu"
> - break
> - fi
> - done
> - if test -n "$ld_i386_emulation"; then
> - roms="pc-bios/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
> -
> -probe_target_compiler ppc-softmmu
> -if test -n "$target_cc" && test "$softmmu" = yes; then
> - roms="$roms pc-bios/vof"
> - config_mak=pc-bios/vof/config.mak
> - echo "# Automatically generated by configure - do not modify" > $config_mak
> - echo "SRC_DIR=$source_path/pc-bios/vof" >> $config_mak
> - write_target_makefile >> $config_mak
> -fi
> -
> -# Only build s390-ccw bios if the compiler has -march=z900 or -march=z10
> -# (which is the lowest architecture level that Clang supports)
> -probe_target_compiler s390x-softmmu
> -if test -n "$target_cc" && test "$softmmu" = yes; then
> - write_c_skeleton
> - do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC
> - has_z900=$?
> - if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then
> - if [ $has_z900 != 0 ]; then
> - echo "WARNING: Your compiler does not support the z900!"
> - echo " The s390-ccw bios will only work with guest CPUs >= z10."
> - fi
> - roms="$roms pc-bios/s390-ccw"
> - config_mak=pc-bios/s390-ccw/config-host.mak
> - echo "# Automatically generated by configure - do not modify" > $config_mak
> - echo "SRC_PATH=$source_path/pc-bios/s390-ccw" >> $config_mak
> - write_target_makefile >> $config_mak
> - # SLOF is required for building the s390-ccw firmware on s390x,
> - # since it is using the libnet code from SLOF for network booting.
> - git_submodules="${git_submodules} roms/SLOF"
> - fi
> -fi
> +for target in $target_list; do
> + case $target in
> + i386-softmmu)
> + # Mac OS X ships with a broken assembler
> + roms=
> + probe_target_compiler i386-softmmu
> + 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 "$target_ld" -verbose 2>&1 | grep -q "^[[:space:]]*${emu}[[:space:]]*$"; then
> + ld_i386_emulation="$emu"
> + break
> + fi
> + done
> + if test -n "$ld_i386_emulation"; then
> + roms="pc-bios/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
> + ;;
> + ppc-softmmu)
> + probe_target_compiler ppc-softmmu
> + if test -n "$target_cc" && test "$softmmu" = yes; then
> + roms="$roms pc-bios/vof"
> + config_mak=pc-bios/vof/config.mak
> + echo "# Automatically generated by configure - do not modify" > $config_mak
> + echo "SRC_DIR=$source_path/pc-bios/vof" >> $config_mak
> + write_target_makefile >> $config_mak
> + fi
> + ;;
> + s390-softmmu)
> + # Only build s390-ccw bios if the compiler has -march=z900 or -march=z10
> + # (which is the lowest architecture level that Clang supports)
> + probe_target_compiler s390x-softmmu
> + if test -n "$target_cc" && test "$softmmu" = yes; then
> + write_c_skeleton
> + do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC
> + has_z900=$?
> + if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then
> + if [ $has_z900 != 0 ]; then
> + echo "WARNING: Your compiler does not support the z900!"
> + echo " The s390-ccw bios will only work with guest CPUs >= z10."
> + fi
> + roms="$roms pc-bios/s390-ccw"
> + config_mak=pc-bios/s390-ccw/config-host.mak
> + echo "# Automatically generated by configure - do not modify" > $config_mak
> + echo "SRC_PATH=$source_path/pc-bios/s390-ccw" >> $config_mak
> + write_target_makefile >> $config_mak
> + # SLOF is required for building the s390-ccw firmware on s390x,
> + # since it is using the libnet code from SLOF for network booting.
> + git_submodules="${git_submodules} roms/SLOF"
> + fi
> + fi
> + ;;
> + esac
> +done
Could it be simpler to check $target_list in probe_target_compiler()?
© 2016 - 2026 Red Hat, Inc.