|
@@ -469,59 +469,119 @@ else
|
|
|
echo "WARNING: unrecognized host CPU, proceeding with 'uname -m' output '$cpu'"
|
|
|
fi
|
|
|
|
|
|
-case "$cpu" in
|
|
|
- riscv*)
|
|
|
- host_arch=riscv ;;
|
|
|
- x32)
|
|
|
- host_arch=x86_64 ;;
|
|
|
- *)
|
|
|
- host_arch="$cpu" ;;
|
|
|
-esac
|
|
|
-
|
|
|
-# Normalise host CPU name and set multilib cflags. The canonicalization
|
|
|
-# isn't really necessary, because the architectures that we check for
|
|
|
-# should not hit the 'uname -m' case, but better safe than sorry.
|
|
|
+# Normalise host CPU name to the values used by Meson cross files and in source
|
|
|
+# directories, and set multilib cflags. The canonicalization isn't really
|
|
|
+# necessary, because the architectures that we check for should not hit the
|
|
|
+# 'uname -m' case, but better safe than sorry in case --cpu= is used.
|
|
|
+#
|
|
|
# Note that this case should only have supported host CPUs, not guests.
|
|
|
+# Please keep it sorted and synchronized with meson.build's host_arch.
|
|
|
+host_arch=
|
|
|
+linux_arch=
|
|
|
case "$cpu" in
|
|
|
+ aarch64)
|
|
|
+ host_arch=aarch64
|
|
|
+ linux_arch=arm64
|
|
|
+ ;;
|
|
|
+
|
|
|
armv*b|armv*l|arm)
|
|
|
- cpu="arm" ;;
|
|
|
+ cpu=arm
|
|
|
+ host_arch=arm
|
|
|
+ linux_arch=arm
|
|
|
+ ;;
|
|
|
|
|
|
i386|i486|i586|i686)
|
|
|
cpu="i386"
|
|
|
- CPU_CFLAGS="-m32" ;;
|
|
|
- x32)
|
|
|
- cpu="x86_64"
|
|
|
- CPU_CFLAGS="-mx32" ;;
|
|
|
- x86_64|amd64)
|
|
|
- cpu="x86_64"
|
|
|
- # ??? Only extremely old AMD cpus do not have cmpxchg16b.
|
|
|
- # If we truly care, we should simply detect this case at
|
|
|
- # runtime and generate the fallback to serial emulation.
|
|
|
- CPU_CFLAGS="-m64 -mcx16" ;;
|
|
|
+ host_arch=i386
|
|
|
+ linux_arch=x86
|
|
|
+ CPU_CFLAGS="-m32"
|
|
|
+ ;;
|
|
|
|
|
|
+ loongarch*)
|
|
|
+ cpu=loongarch64
|
|
|
+ host_arch=loongarch64
|
|
|
+ ;;
|
|
|
+
|
|
|
+ mips64*)
|
|
|
+ cpu=mips64
|
|
|
+ host_arch=mips
|
|
|
+ linux_arch=mips
|
|
|
+ ;;
|
|
|
mips*)
|
|
|
- cpu="mips" ;;
|
|
|
+ cpu=mips
|
|
|
+ host_arch=mips
|
|
|
+ linux_arch=mips
|
|
|
+ ;;
|
|
|
|
|
|
ppc)
|
|
|
- CPU_CFLAGS="-m32" ;;
|
|
|
+ host_arch=ppc
|
|
|
+ linux_arch=powerpc
|
|
|
+ CPU_CFLAGS="-m32"
|
|
|
+ ;;
|
|
|
ppc64)
|
|
|
- CPU_CFLAGS="-m64 -mbig-endian" ;;
|
|
|
+ host_arch=ppc64
|
|
|
+ linux_arch=powerpc
|
|
|
+ CPU_CFLAGS="-m64 -mbig-endian"
|
|
|
+ ;;
|
|
|
ppc64le)
|
|
|
- cpu="ppc64"
|
|
|
- CPU_CFLAGS="-m64 -mlittle-endian" ;;
|
|
|
+ cpu=ppc64
|
|
|
+ host_arch=ppc64
|
|
|
+ linux_arch=powerpc
|
|
|
+ CPU_CFLAGS="-m64 -mlittle-endian"
|
|
|
+ ;;
|
|
|
+
|
|
|
+ riscv32 | riscv64)
|
|
|
+ host_arch=riscv
|
|
|
+ linux_arch=riscv
|
|
|
+ ;;
|
|
|
|
|
|
s390)
|
|
|
- CPU_CFLAGS="-m31" ;;
|
|
|
+ linux_arch=s390
|
|
|
+ CPU_CFLAGS="-m31"
|
|
|
+ ;;
|
|
|
s390x)
|
|
|
- CPU_CFLAGS="-m64" ;;
|
|
|
+ host_arch=s390x
|
|
|
+ linux_arch=s390
|
|
|
+ CPU_CFLAGS="-m64"
|
|
|
+ ;;
|
|
|
|
|
|
sparc|sun4[cdmuv])
|
|
|
- cpu="sparc"
|
|
|
- CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc" ;;
|
|
|
+ cpu=sparc
|
|
|
+ CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc"
|
|
|
+ ;;
|
|
|
sparc64)
|
|
|
- CPU_CFLAGS="-m64 -mcpu=ultrasparc" ;;
|
|
|
+ host_arch=sparc64
|
|
|
+ CPU_CFLAGS="-m64 -mcpu=ultrasparc"
|
|
|
+ ;;
|
|
|
+
|
|
|
+ x32)
|
|
|
+ cpu="x86_64"
|
|
|
+ host_arch=x86_64
|
|
|
+ linux_arch=x86
|
|
|
+ CPU_CFLAGS="-mx32"
|
|
|
+ ;;
|
|
|
+ x86_64|amd64)
|
|
|
+ cpu="x86_64"
|
|
|
+ host_arch=x86_64
|
|
|
+ linux_arch=x86
|
|
|
+ # ??? Only extremely old AMD cpus do not have cmpxchg16b.
|
|
|
+ # If we truly care, we should simply detect this case at
|
|
|
+ # runtime and generate the fallback to serial emulation.
|
|
|
+ CPU_CFLAGS="-m64 -mcx16"
|
|
|
+ ;;
|
|
|
esac
|
|
|
|
|
|
+if test -n "$host_arch" && {
|
|
|
+ ! test -d "$source_path/linux-user/include/host/$host_arch" ||
|
|
|
+ ! test -d "$source_path/common-user/host/$host_arch"; }; then
|
|
|
+ error_exit "linux-user/include/host/$host_arch does not exist." \
|
|
|
+ "This is a bug in the configure script, please report it."
|
|
|
+fi
|
|
|
+if test -n "$linux_arch" && ! test -d "$source_path/linux-headers/asm-$linux_arch"; then
|
|
|
+ error_exit "linux-headers/asm-$linux_arch does not exist." \
|
|
|
+ "This is a bug in the configure script, please report it."
|
|
|
+fi
|
|
|
+
|
|
|
check_py_version() {
|
|
|
# We require python >= 3.7.
|
|
|
# NB: a True python conditional creates a non-zero return code (Failure)
|
|
@@ -812,7 +872,7 @@ default_target_list=""
|
|
|
mak_wilds=""
|
|
|
|
|
|
if [ "$linux_user" != no ]; then
|
|
|
- if [ "$targetos" = linux ] && [ -d "$source_path/linux-user/include/host/$host_arch" ]; then
|
|
|
+ if [ "$targetos" = linux ] && [ -n "$host_arch" ]; then
|
|
|
linux_user=yes
|
|
|
elif [ "$linux_user" = yes ]; then
|
|
|
error_exit "linux-user not supported on this architecture"
|
|
@@ -1717,40 +1777,9 @@ echo "PKG_CONFIG=${pkg_config}" >> $config_host_mak
|
|
|
echo "CC=$cc" >> $config_host_mak
|
|
|
echo "EXESUF=$EXESUF" >> $config_host_mak
|
|
|
|
|
|
-# use included Linux headers
|
|
|
-if test "$linux" = "yes" ; then
|
|
|
- mkdir -p linux-headers
|
|
|
- case "$cpu" in
|
|
|
- i386|x86_64)
|
|
|
- linux_arch=x86
|
|
|
- ;;
|
|
|
- ppc|ppc64)
|
|
|
- linux_arch=powerpc
|
|
|
- ;;
|
|
|
- s390x)
|
|
|
- linux_arch=s390
|
|
|
- ;;
|
|
|
- aarch64)
|
|
|
- linux_arch=arm64
|
|
|
- ;;
|
|
|
- loongarch*)
|
|
|
- linux_arch=loongarch
|
|
|
- ;;
|
|
|
- mips64)
|
|
|
- linux_arch=mips
|
|
|
- ;;
|
|
|
- riscv32|riscv64)
|
|
|
- linux_arch=riscv
|
|
|
- ;;
|
|
|
- *)
|
|
|
- # For most CPUs the kernel architecture name and QEMU CPU name match.
|
|
|
- linux_arch="$cpu"
|
|
|
- ;;
|
|
|
- esac
|
|
|
- # For non-KVM architectures we will not have asm headers
|
|
|
- if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
|
|
|
- symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
|
|
|
- fi
|
|
|
+# use included Linux headers for KVM architectures
|
|
|
+if test "$linux" = "yes" && test -n "$linux_arch"; then
|
|
|
+ symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
|
|
|
fi
|
|
|
|
|
|
for target in $target_list; do
|