aboutsummaryrefslogtreecommitdiff
path: root/configure
diff options
context:
space:
mode:
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure159
1 files changed, 63 insertions, 96 deletions
diff --git a/configure b/configure
index bdda912..21ab9a6 100755
--- a/configure
+++ b/configure
@@ -334,30 +334,30 @@ EOF
}
if check_define __linux__ ; then
- targetos=linux
+ host_os=linux
elif check_define _WIN32 ; then
- targetos=windows
+ host_os=windows
elif check_define __OpenBSD__ ; then
- targetos=openbsd
+ host_os=openbsd
elif check_define __sun__ ; then
- targetos=sunos
+ host_os=sunos
elif check_define __HAIKU__ ; then
- targetos=haiku
+ host_os=haiku
elif check_define __FreeBSD__ ; then
- targetos=freebsd
+ host_os=freebsd
elif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then
- targetos=gnu/kfreebsd
+ host_os=gnu/kfreebsd
elif check_define __DragonFly__ ; then
- targetos=dragonfly
+ host_os=dragonfly
elif check_define __NetBSD__; then
- targetos=netbsd
+ host_os=netbsd
elif check_define __APPLE__; then
- targetos=darwin
+ host_os=darwin
else
# This is a fatal error, but don't report it yet, because we
# might be going to just print the --help text, or it might
# be the result of a missing compiler.
- targetos=bogus
+ host_os=bogus
fi
if test ! -z "$cpu" ; then
@@ -573,13 +573,13 @@ do
fi
done
-if test "$targetos" = "windows" ; then
+if test "$host_os" = "windows" ; then
EXESUF=".exe"
fi
meson_option_build_array() {
printf '['
- (if test "$targetos" = windows; then
+ (if test "$host_os" = windows; then
IFS=\;
else
IFS=:
@@ -802,7 +802,7 @@ mak_wilds=""
if [ -n "$host_arch" ] && [ -d "$source_path/common-user/host/$host_arch" ]; then
if [ "$linux_user" != no ]; then
- if [ "$targetos" = linux ]; then
+ if [ "$host_os" = linux ]; then
linux_user=yes
elif [ "$linux_user" = yes ]; then
error_exit "linux-user not supported on this architecture"
@@ -813,9 +813,9 @@ if [ -n "$host_arch" ] && [ -d "$source_path/common-user/host/$host_arch" ]; the
fi
if [ "$bsd_user" != no ]; then
if [ "$bsd_user" = "" ]; then
- test $targetos = freebsd && bsd_user=yes
+ test $host_os = freebsd && bsd_user=yes
fi
- if [ "$bsd_user" = yes ] && ! [ -d "$source_path/bsd-user/$targetos" ]; then
+ if [ "$bsd_user" = yes ] && ! [ -d "$source_path/bsd-user/$host_os" ]; then
error_exit "bsd-user not supported on this host OS"
fi
if [ "$bsd_user" = "yes" ]; then
@@ -998,7 +998,7 @@ if test -z "$ninja"; then
fi
fi
-if test "$targetos" = "bogus"; then
+if test "$host_os" = "bogus"; then
# Now that we know that we're not printing the help and that
# the compiler works (so the results of the check_defines we used
# to identify the OS are reliable), if we didn't recognize the
@@ -1007,7 +1007,7 @@ if test "$targetos" = "bogus"; then
fi
# test for any invalid configuration combinations
-if test "$targetos" = "windows" && ! has "$dlltool"; then
+if test "$host_os" = "windows" && ! has "$dlltool"; then
if test "$plugins" = "yes"; then
error_exit "TCG plugins requires dlltool to build on Windows platforms"
fi
@@ -1041,7 +1041,7 @@ static THREAD int tls_var;
int main(void) { return tls_var; }
EOF
-if test "$targetos" = windows || test "$targetos" = haiku; then
+if test "$host_os" = windows || test "$host_os" = haiku; then
if test "$pie" = "yes"; then
error_exit "PIE not available due to missing OS support"
fi
@@ -1231,6 +1231,7 @@ probe_target_compiler() {
got_cross_cc=no
container_image=
container_hosts=
+ container_cross_prefix=
container_cross_cc=
container_cross_ar=
container_cross_as=
@@ -1272,16 +1273,33 @@ probe_target_compiler() {
test "$container" != no || continue
test "$host" = "$cpu" || continue
case $target_arch in
+ # debian-all-test-cross architectures
+
+ hppa|m68k|mips|riscv64|sparc64)
+ container_image=debian-all-test-cross
+ ;;
+ mips64)
+ container_image=debian-all-test-cross
+ container_cross_prefix=mips64-linux-gnuabi64-
+ ;;
+ ppc|ppc64|ppc64le)
+ container_image=debian-all-test-cross
+ container_cross_prefix=powerpc${target_arch#ppc}-linux-gnu-
+ ;;
+
+ # debian-legacy-test-cross architectures (need Debian 11)
+ # - libc6.1-dev-alpha-cross: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1054412
+ # - sh4-linux-user: binaries don't run with bookworm compiler
+
+ alpha|sh4)
+ container_image=debian-legacy-test-cross
+ ;;
+
+ # architectures with individual containers
+
aarch64)
# We don't have any bigendian build tools so we only use this for AArch64
container_image=debian-arm64-cross
- container_cross_prefix=aarch64-linux-gnu-
- container_cross_cc=${container_cross_prefix}gcc
- ;;
- alpha)
- container_image=debian-legacy-test-cross
- container_cross_prefix=alpha-linux-gnu-
- container_cross_cc=${container_cross_prefix}gcc
;;
arm)
# We don't have any bigendian build tools so we only use this for ARM
@@ -1290,18 +1308,11 @@ probe_target_compiler() {
;;
cris)
container_image=fedora-cris-cross
- container_cross_prefix=cris-linux-gnu-
;;
hexagon)
- container_image=debian-hexagon-cross
container_cross_prefix=hexagon-unknown-linux-musl-
container_cross_cc=${container_cross_prefix}clang
;;
- hppa)
- container_image=debian-all-test-cross
- container_cross_prefix=hppa-linux-gnu-
- container_cross_cc=${container_cross_prefix}gcc
- ;;
i386)
container_image=debian-i686-cross
container_cross_prefix=i686-linux-gnu-
@@ -1310,59 +1321,19 @@ probe_target_compiler() {
container_image=debian-loongarch-cross
container_cross_prefix=loongarch64-unknown-linux-gnu-
;;
- m68k)
- container_image=debian-all-test-cross
- container_cross_prefix=m68k-linux-gnu-
- container_cross_cc=${container_cross_prefix}gcc
- ;;
microblaze)
- container_image=debian-microblaze-cross
container_cross_prefix=microblaze-linux-musl-
;;
mips64el)
container_image=debian-mips64el-cross
container_cross_prefix=mips64el-linux-gnuabi64-
;;
- mips64)
- container_image=debian-all-test-cross
- container_cross_prefix=mips64-linux-gnuabi64-
- ;;
- mips)
- container_image=debian-all-test-cross
- container_cross_prefix=mips-linux-gnu-
- ;;
- nios2)
- container_image=debian-nios2-cross
- container_cross_prefix=nios2-linux-gnu-
- ;;
- ppc)
- container_image=debian-all-test-cross
- container_cross_prefix=powerpc-linux-gnu-
- container_cross_cc=${container_cross_prefix}gcc
- ;;
- ppc64|ppc64le)
- container_image=debian-all-test-cross
- container_cross_prefix=powerpc${target_arch#ppc}-linux-gnu-
- ;;
- riscv64)
- container_image=debian-all-test-cross
- container_cross_prefix=riscv64-linux-gnu-
- ;;
- sh4)
- container_image=debian-legacy-test-cross
- container_cross_prefix=sh4-linux-gnu-
- ;;
- sparc64)
- container_image=debian-all-test-cross
- container_cross_prefix=sparc64-linux-gnu-
- ;;
tricore)
container_image=debian-tricore-cross
container_cross_prefix=tricore-
;;
x86_64)
container_image=debian-amd64-cross
- container_cross_prefix=x86_64-linux-gnu-
;;
xtensa*)
container_image=debian-xtensa-cross
@@ -1370,12 +1341,10 @@ probe_target_compiler() {
# default to the dc232b cpu
container_cross_prefix=/opt/2020.07/xtensa-dc232b-elf/bin/xtensa-dc232b-elf-
;;
- *)
- # Debian and GNU architecture names usually match
- container_image=debian-$target_arch-cross
- container_cross_prefix=$target_arch-linux-gnu-
- ;;
esac
+ # Debian and GNU architecture names usually match
+ : ${container_image:=debian-$target_arch-cross}
+ : ${container_cross_prefix:=$target_arch-linux-gnu-}
: ${container_cross_cc:=${container_cross_prefix}gcc}
: ${container_cross_ar:=${container_cross_prefix}ar}
: ${container_cross_as:=${container_cross_prefix}as}
@@ -1387,8 +1356,8 @@ probe_target_compiler() {
done
try=cross
- # For softmmu/roms we might be able to use the host compiler
- if [ "${1%softmmu}" != "$1" ]; then
+ # For softmmu/roms also look for a bi-endian or multilib-enabled host compiler
+ if [ "${1%softmmu}" != "$1" ] || test "$target_arch" = "$cpu"; then
case "$target_arch:$cpu" in
aarch64_be:aarch64 | \
armeb:arm | \
@@ -1559,7 +1528,7 @@ LINKS="$LINKS pc-bios/s390-ccw/Makefile"
LINKS="$LINKS pc-bios/vof/Makefile"
LINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
LINKS="$LINKS tests/avocado tests/data"
-LINKS="$LINKS tests/qemu-iotests/check"
+LINKS="$LINKS tests/qemu-iotests/check tests/qemu-iotests/Makefile"
LINKS="$LINKS python"
LINKS="$LINKS contrib/plugins/Makefile "
for f in $LINKS ; do
@@ -1572,8 +1541,8 @@ echo "# Automatically generated by configure - do not modify" > Makefile.prereqs
# Mac OS X ships with a broken assembler
if have_target i386-softmmu x86_64-softmmu && \
- test "$targetos" != "darwin" && test "$targetos" != "sunos" && \
- test "$targetos" != "haiku" && \
+ test "$host_os" != "darwin" && test "$host_os" != "sunos" && \
+ test "$host_os" != "haiku" && \
probe_target_compiler i386-softmmu; then
subdirs="$subdirs pc-bios/optionrom"
config_mak=pc-bios/optionrom/config.mak
@@ -1637,7 +1606,7 @@ echo "NINJA=$ninja" >> $config_host_mak
echo "EXESUF=$EXESUF" >> $config_host_mak
# use included Linux headers for KVM architectures
-if test "$targetos" = "linux" && test -n "$linux_arch"; then
+if test "$host_os" = "linux" && test -n "$linux_arch"; then
symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
fi
@@ -1660,21 +1629,20 @@ echo "SRC_PATH=$source_path/contrib/plugins" >> contrib/plugins/$config_host_mak
echo "PKG_CONFIG=${pkg_config}" >> contrib/plugins/$config_host_mak
echo "CC=$cc $CPU_CFLAGS" >> contrib/plugins/$config_host_mak
echo "CFLAGS=${CFLAGS-$default_cflags} $EXTRA_CFLAGS" >> contrib/plugins/$config_host_mak
-if test "$targetos" = windows; then
+if test "$host_os" = windows; then
echo "DLLTOOL=$dlltool" >> contrib/plugins/$config_host_mak
fi
-if test "$targetos" = darwin; then
+if test "$host_os" = darwin; then
echo "CONFIG_DARWIN=y" >> contrib/plugins/$config_host_mak
fi
-if test "$targetos" = windows; then
+if test "$host_os" = windows; then
echo "CONFIG_WIN32=y" >> contrib/plugins/$config_host_mak
fi
# tests/tcg configuration
-(config_host_mak=tests/tcg/config-host.mak
mkdir -p tests/tcg
-echo "# Automatically generated by configure - do not modify" > $config_host_mak
-echo "SRC_PATH=$source_path" >> $config_host_mak
+echo "# Automatically generated by configure - do not modify" > tests/tcg/$config_host_mak
+echo "SRC_PATH=$source_path" >> tests/tcg/$config_host_mak
tcg_tests_targets=
for target in $target_list; do
@@ -1717,9 +1685,8 @@ for target in $target_list; do
done
if test "$tcg" = "enabled"; then
- echo "TCG_TESTS_TARGETS=$tcg_tests_targets" >> config-host.mak
+ echo "TCG_TESTS_TARGETS=$tcg_tests_targets" >> $config_host_mak
fi
-)
if test "$skip_meson" = no; then
cross="config-meson.cross.new"
@@ -1748,7 +1715,7 @@ if test "$skip_meson" = no; then
echo "# environment defaults, can still be overridden on " >> $cross
echo "# the command line" >> $cross
if test -e "$source_path/.git" && \
- { test "$targetos" = linux || test "$targetos" = "windows"; }; then
+ { test "$host_os" = linux || test "$host_os" = "windows"; }; then
echo 'werror = true' >> $cross
fi
echo "[project options]" >> $cross
@@ -1785,7 +1752,7 @@ if test "$skip_meson" = no; then
echo "windmc = [$(meson_quote $windmc)]" >> $cross
if test "$cross_compile" = "yes"; then
echo "[host_machine]" >> $cross
- echo "system = '$targetos'" >> $cross
+ echo "system = '$host_os'" >> $cross
case "$cpu" in
i386)
echo "cpu_family = 'x86'" >> $cross
@@ -1811,8 +1778,8 @@ if test "$skip_meson" = no; then
fi
mv $cross config-meson.cross
meson_add_machine_file config-meson.cross
- if test -f "$source_path/configs/meson/$targetos.txt"; then
- meson_add_machine_file $source_path/configs/meson/$targetos.txt
+ if test -f "$source_path/configs/meson/$host_os.txt"; then
+ meson_add_machine_file $source_path/configs/meson/$host_os.txt
fi
rm -rf meson-private meson-info meson-logs