# This file is auto-generated by configure to support in-source tree
# 'make' command invocation
-ifeq ($(MAKECMDGOALS),)
-recurse: all
-endif
-
-.NOTPARALLEL: %
-%: force
+build:
@echo 'changing dir to build for $(MAKE) "$(MAKECMDGOALS)"...'
@$(MAKE) -C build -f Makefile $(MAKECMDGOALS)
@if test "$(MAKECMDGOALS)" = "distclean" && \
then \
rm -rf build GNUmakefile ; \
fi
-force: ;
-.PHONY: force
+%: build
+ @
+.PHONY: build
GNUmakefile: ;
EOF
printf "%s" "$1" | sed "s,','\\\\'',g; s,.*,'&',"
}
-print_error() {
+error_exit() {
(echo
echo "ERROR: $1"
while test -n "$2"; do
shift
done
echo) >&2
-}
-
-error_exit() {
- print_error "$@"
exit 1
}
# some defaults, based on the host environment
# default parameters
+container_engine="auto"
cpu=""
cross_compile="no"
cross_prefix=""
default_cflags='-O2 -g'
git_submodules_action="update"
-git="git"
docs="auto"
EXESUF=""
-prefix="/usr/local"
-qemu_suffix="qemu"
-softmmu="yes"
+system="yes"
linux_user=""
bsd_user=""
plugins="$default_feature"
ninja=""
python=
download="enabled"
-bindir="bin"
skip_meson=no
use_containers="yes"
gdb_bin=$(command -v "gdb-multiarch" || command -v "gdb")
gdb_arches=""
-werror=""
# Don't accept a target_list environment variable.
unset target_list
ar="${AR-${cross_prefix}ar}"
as="${AS-${cross_prefix}as}"
ccas="${CCAS-$cc}"
+dlltool="${DLLTOOL-${cross_prefix}dlltool}"
objcopy="${OBJCOPY-${cross_prefix}objcopy}"
ld="${LD-${cross_prefix}ld}"
ranlib="${RANLIB-${cross_prefix}ranlib}"
nm="${NM-${cross_prefix}nm}"
-smbd="$SMBD"
strip="${STRIP-${cross_prefix}strip}"
widl="${WIDL-${cross_prefix}widl}"
windres="${WINDRES-${cross_prefix}windres}"
}
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
-# OS specific
-
-case $targetos in
-windows)
- plugins="no"
- pie="no"
-;;
-haiku)
- pie="no"
-;;
-esac
-
if test ! -z "$cpu" ; then
# command line argument
:
fi
check_py_version() {
- # We require python >= 3.7.
+ # We require python >= 3.8.
# NB: a True python conditional creates a non-zero return code (Failure)
- "$1" -c 'import sys; sys.exit(sys.version_info < (3,7))'
+ "$1" -c 'import sys; sys.exit(sys.version_info < (3,8))'
}
first_python=
if test -z "${PYTHON}"; then
# A bare 'python' is traditionally python 2.x, but some distros
# have it as python 3.x, so check in both places.
- for binary in python3 python python3.11 python3.10 python3.9 python3.8 python3.7; do
+ for binary in python3 python python3.12 python3.11 \
+ python3.10 python3.9 python3.8; do
if has "$binary"; then
python=$(command -v "$binary")
if check_py_version "$python"; then
fi
done
-if test "$targetos" = "windows" ; then
+if test "$host_os" = "windows" ; then
EXESUF=".exe"
- prefix="/qemu"
- bindir=""
- qemu_suffix=""
fi
meson_option_build_array() {
printf '['
- (if test "$targetos" = windows; then
+ (if test "$host_os" = windows; then
IFS=\;
else
IFS=:
meson_options=
meson_option_add() {
- meson_options="$meson_options $(quote_sh "$1")"
+ local arg
+ for arg; do
+ meson_options="$meson_options $(quote_sh "$arg")"
+ done
}
meson_option_parse() {
meson_options="$meson_options $(_meson_option_parse "$@")"
fi
}
+meson_add_machine_file() {
+ if test "$cross_compile" = "yes"; then
+ meson_option_add --cross-file "$1"
+ else
+ meson_option_add --native-file "$1"
+ fi
+}
+
for opt do
optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
case "$opt" in
;;
--version|-V) exec cat "$source_path/VERSION"
;;
- --prefix=*) prefix="$optarg"
- ;;
--cross-prefix=*)
;;
--cc=*)
;;
--ninja=*) ninja="$optarg"
;;
- --smbd=*) smbd="$optarg"
- ;;
--extra-cflags=*)
;;
--extra-cxxflags=*)
;;
--static) static="yes"
;;
- --bindir=*) bindir="$optarg"
- ;;
- --with-suffix=*) qemu_suffix="$optarg"
- ;;
--host=*|--build=*|\
--disable-dependency-tracking|\
--sbindir=*|--sharedstatedir=*|\
default_cflags='-O0 -g'
;;
--disable-tcg) tcg="disabled"
- plugins="no"
;;
--enable-tcg) tcg="enabled"
;;
- --disable-system) softmmu="no"
+ --disable-system) system="no"
;;
- --enable-system) softmmu="yes"
+ --enable-system) system="yes"
;;
--disable-user)
linux_user="no" ;
;;
--disable-pie) pie="no"
;;
- --enable-werror) werror="yes"
- ;;
- --disable-werror) werror="no"
- ;;
- --enable-cfi)
- cfi="true";
- meson_option_add -Db_lto=true
+ --enable-cfi) cfi=true
;;
- --disable-cfi) cfi="false"
+ --disable-cfi) cfi=false
;;
--disable-download) download="disabled"; git_submodules_action=validate;
;;
--enable-download) download="enabled"; git_submodules_action=update;
;;
- --enable-plugins) if test "$targetos" = "windows"; then
- error_exit "TCG plugins not currently supported on Windows platforms"
- else
- plugins="yes"
- fi
+ --enable-plugins) plugins="yes"
;;
--disable-plugins) plugins="no"
;;
;;
--disable-containers) use_containers="no"
;;
+ --container-engine=*) container_engine="$optarg"
+ ;;
--gdb=*) gdb_bin="$optarg"
;;
# everything else has the same name in configure and meson
git_submodules_action="validate"
fi
-# test for any invalid configuration combinations
-if test "$plugins" = "yes" -a "$tcg" = "disabled"; then
- error_exit "Can't enable plugins on non-TCG builds"
-fi
-
if ! test -f "$source_path/subprojects/keycodemapdb/README" \
&& test "$download" = disabled
then
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"
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
error_exit "user mode emulation not supported on this architecture"
fi
fi
-if [ "$softmmu" = "yes" ]; then
+if [ "$system" = "yes" ]; then
mak_wilds="${mak_wilds} $source_path/configs/targets/*-softmmu.mak"
fi
Standard options:
--help print this message
- --prefix=PREFIX install in PREFIX [$prefix]
--target-list=LIST set target list (default: build all)
$(echo Available targets: $default_target_list | \
fold -s -w 53 | sed -e 's/^/ /')
--cross-prefix-ARCH=PREFIX cross compiler prefix when building ARCH guest test cases
--python=PYTHON use specified python [$python]
--ninja=NINJA use specified ninja [$ninja]
- --smbd=SMBD use specified smbd [$smbd]
--static enable static build [$static]
- --bindir=PATH install binaries in PATH
- --with-suffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir/docdir [$qemu_suffix]
--without-default-features default all --enable-* options to "disabled"
--without-default-devices do not include any device that is not needed to
start the emulator (only use if you are including
desired devices in configs/devices/)
--with-devices-ARCH=NAME override default configs/devices
--enable-debug enable common debug build options
- --disable-werror disable compilation abort on warning
--cpu=CPU Build for host CPU [$cpu]
- --enable-plugins
- enable plugins via shared library loading
--disable-containers don't use containers for cross-building
+ --container-engine=TYPE which container engine to use [$container_engine]
--gdb=GDB-path gdb to use for gdbstub tests [$gdb_bin]
EOF
meson_options_help
# If first_python is set, there was a binary somewhere even though
# it was not suitable. Use it for the error message.
if test -n "$first_python"; then
- error_exit "Cannot use '$first_python', Python >= 3.7 is required." \
+ error_exit "Cannot use '$first_python', Python >= 3.8 is required." \
"Use --python=/path/to/python to specify a supported Python."
else
error_exit "Python not found. Use --python=/path/to/python"
fi
if ! check_py_version "$python"; then
- error_exit "Cannot use '$python', Python >= 3.7 is required." \
+ error_exit "Cannot use '$python', Python >= 3.8 is required." \
"Use --python=/path/to/python to specify a supported Python." \
"Maybe try:" \
" openSUSE Leap 15.3+: zypper install python39" \
# Conditionally ensure Sphinx is installed.
-mkvenv_flags=""
-if test "$download" = "enabled" -a "$docs" = "enabled" ; then
- mkvenv_flags="--online"
+mkvenv_online_flag=""
+if test "$download" = "enabled" ; then
+ mkvenv_online_flag=" --online"
fi
if test "$docs" != "disabled" ; then
if ! $mkvenv ensuregroup \
- $mkvenv_flags \
+ $(test "$docs" = "enabled" && echo "$mkvenv_online_flag") \
${source_path}/pythondeps.toml docs;
then
if test "$docs" = "enabled" ; then
fi
fi
-# Consult white-list to determine whether to enable werror
-# by default. Only enable by default for git builds
-if test -z "$werror" ; then
- if test -e "$source_path/.git" && \
- { test "$targetos" = linux || test "$targetos" = "windows"; }; then
- werror="yes"
- else
- werror="no"
- 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
error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')"
fi
+# test for any invalid configuration combinations
+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
+ plugins="no"
+fi
+if test "$tcg" = "disabled" ; then
+ if test "$plugins" = "yes"; then
+ error_exit "Can't enable plugins on non-TCG builds"
+ fi
+ plugins="no"
+fi
if test "$static" = "yes" ; then
if test "$plugins" = "yes"; then
error_exit "static and plugins are mutually incompatible"
- else
- plugins="no"
fi
+ plugins="no"
fi
-test "$plugins" = "" && plugins=yes
-if test "$plugins" = "yes"; then
+if test "$plugins" != "no"; then
+ plugins=yes
subdirs="$subdirs contrib/plugins"
fi
int main(void) { return tls_var; }
EOF
-if test "$static" = "yes"; then
- if test "$pie" != "no" && compile_prog "-Werror -fPIE -DPIE" "-static-pie"; then
- pie="yes"
- elif test "$pie" = "yes"; then
- error_exit "-static-pie not available due to missing toolchain support"
+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
+ pie=no
+fi
+
+if test "$pie" != "no"; then
+ if test "$static" = "yes"; then
+ pie_ldflags=-static-pie
else
- pie="no"
+ pie_ldflags=-pie
fi
-elif test "$pie" != "no"; then
- if compile_prog "-Werror -fPIE -DPIE" "-pie"; then
+ if compile_prog "-Werror -fPIE -DPIE" "$pie_ldflags"; then
pie="yes"
elif test "$pie" = "yes"; then
- error_exit "PIE not available due to missing toolchain support"
+ error_exit "-static-pie not available due to missing toolchain support"
else
echo "Disabling PIE due to missing toolchain support"
pie="no"
fi
fi
+#########################################
+# gdb test
+
+if test -n "$gdb_bin"; then
+ gdb_version=$($gdb_bin --version | head -n 1)
+ if version_ge ${gdb_version##* } 9.1; then
+ gdb_arches=$($python "$source_path/scripts/probe-gdb-support.py" $gdb_bin)
+ else
+ gdb_bin=""
+ fi
+fi
+
##########################################
# big/little endian test
cat > $TMPC << EOF
fi
fi
-########################################
-# check if ccache is interfering with
-# semantic analysis of macros
-
-unset CCACHE_CPP2
-ccache_cpp2=no
-cat > $TMPC << EOF
-static const int Z = 1;
-#define fn() ({ Z; })
-#define TAUT(X) ((X) == Z)
-#define PAREN(X, Y) (X == Y)
-#define ID(X) (X)
-int main(void)
-{
- int x = 0, y = 0;
- x = ID(x);
- x = fn();
- fn();
- if (PAREN(x, y)) return 0;
- if (TAUT(Z)) return 0;
- return 0;
-}
-EOF
-
-if ! compile_object "-Werror"; then
- ccache_cpp2=yes
-fi
-
##########################################
# functions to probe cross compilers
container="no"
runc=""
if test $use_containers = "yes" && (has "docker" || has "podman"); then
- case $($python "$source_path"/tests/docker/docker.py probe) in
+ case $($python "$source_path"/tests/docker/docker.py --engine "$container_engine" probe) in
*docker) container=docker ;;
podman) container=podman ;;
no) container=no ;;
esac
if test "$container" != "no"; then
docker_py="$python $source_path/tests/docker/docker.py --engine $container"
- runc=$($python "$source_path"/tests/docker/docker.py probe)
+ runc=$container
fi
fi
got_cross_cc=no
container_image=
container_hosts=
+ container_cross_prefix=
container_cross_cc=
container_cross_ar=
container_cross_as=
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-10
- ;;
- alpha)
- container_image=debian-alpha-cross
- container_cross_prefix=alpha-linux-gnu-
;;
arm)
# We don't have any bigendian build tools so we only use this for ARM
;;
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-hppa-cross
- container_cross_prefix=hppa-linux-gnu-
- ;;
i386)
- container_image=fedora-i386-cross
- container_cross_prefix=
+ container_image=debian-i686-cross
+ container_cross_prefix=i686-linux-gnu-
;;
loongarch64)
container_image=debian-loongarch-cross
container_cross_prefix=loongarch64-unknown-linux-gnu-
;;
- m68k)
- container_image=debian-m68k-cross
- container_cross_prefix=m68k-linux-gnu-
- ;;
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-mips64-cross
- container_cross_prefix=mips64-linux-gnuabi64-
- ;;
- mipsel)
- container_image=debian-mipsel-cross
- container_cross_prefix=mipsel-linux-gnu-
- ;;
- mips)
- container_image=debian-mips-cross
- container_cross_prefix=mips-linux-gnu-
- ;;
- nios2)
- container_image=debian-nios2-cross
- container_cross_prefix=nios2-linux-gnu-
- ;;
- ppc)
- container_image=debian-powerpc-test-cross
- container_cross_prefix=powerpc-linux-gnu-
- container_cross_cc=${container_cross_prefix}gcc-10
- ;;
- ppc64|ppc64le)
- container_image=debian-powerpc-test-cross
- container_cross_prefix=powerpc${target_arch#ppc}-linux-gnu-
- container_cross_cc=${container_cross_prefix}gcc-10
- ;;
- riscv64)
- container_image=debian-riscv64-test-cross
- container_cross_prefix=riscv64-linux-gnu-
- ;;
- s390x)
- container_image=debian-s390x-cross
- container_cross_prefix=s390x-linux-gnu-
- ;;
- sh4)
- container_image=debian-sh4-cross
- container_cross_prefix=sh4-linux-gnu-
- ;;
- sparc64)
- container_image=debian-sparc64-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
container_cross_prefix=/opt/2020.07/xtensa-dc232b-elf/bin/xtensa-dc232b-elf-
;;
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}
done
try=cross
- case "$target_arch:$cpu" in
- aarch64_be:aarch64 | \
- armeb:arm | \
- i386:x86_64 | \
- mips*:mips64 | \
- ppc*:ppc64 | \
- sparc:sparc64 | \
- "$cpu:$cpu")
- try='native cross' ;;
- esac
+ # 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 | \
+ i386:x86_64 | \
+ mips*:mips64 | \
+ ppc*:ppc64 | \
+ sparc:sparc64 | \
+ "$cpu:$cpu")
+ try='native cross' ;;
+ esac
+ fi
eval "target_cflags=\${cross_cc_cflags_$target_arch}"
for thistry in $try; do
case $thistry in
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
# 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
echo all: >> $config_host_mak
-if test "$targetos" = "windows"; then
- echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER-QEMU}" >> $config_host_mak
- echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO-Linux}" >> $config_host_mak
- echo "QEMU_GA_VERSION=${QEMU_GA_VERSION-$(cat "$source_path"/VERSION)}" >> $config_host_mak
-fi
-
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
-
-if test -n "$gdb_bin"; then
- gdb_version=$($gdb_bin --version | head -n 1)
- if version_ge ${gdb_version##* } 9.1; then
- echo "HAVE_GDB_BIN=$gdb_bin" >> $config_host_mak
- gdb_arches=$($python "$source_path/scripts/probe-gdb-support.py" $gdb_bin)
- else
- gdb_bin=""
- fi
-fi
-
+echo "GDB=$gdb_bin" >> $config_host_mak
if test "$container" != no; then
- echo "ENGINE=$container" >> $config_host_mak
echo "RUNC=$runc" >> $config_host_mak
fi
echo "SUBDIRS=$subdirs" >> $config_host_mak
echo "PYTHON=$python" >> $config_host_mak
+echo "MKVENV_ENSUREGROUP=$mkvenv ensuregroup $mkvenv_online_flag" >> $config_host_mak
echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
echo "MESON=$meson" >> $config_host_mak
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
echo "CONFIG_DEFAULT_TARGETS=y" >> $config_host_mak
fi
-if test "$ccache_cpp2" = "yes"; then
- echo "export CCACHE_CPP2=y" >> $config_host_mak
-fi
-
# contrib/plugins configuration
echo "# Automatically generated by configure - do not modify" > contrib/plugins/$config_host_mak
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" = darwin; then
+if test "$host_os" = windows; then
+ echo "DLLTOOL=$dlltool" >> contrib/plugins/$config_host_mak
+fi
+if test "$host_os" = darwin; then
echo "CONFIG_DARWIN=y" >> contrib/plugins/$config_host_mak
fi
+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
-
-# versioned checked in the main config_host.mak above
-if test -n "$gdb_bin"; then
- echo "HAVE_GDB_BIN=$gdb_bin" >> $config_host_mak
-fi
-if test "$plugins" = "yes" ; then
- echo "CONFIG_PLUGIN=y" >> $config_host_mak
-fi
+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
case $target in
xtensa*-linux-user)
- # the toolchain is not complete with headers, only build softmmu tests
+ # the toolchain is not complete with headers, only build system tests
continue
;;
*-softmmu)
# will GDB work with these binaries?
if test "${gdb_arches#*$arch}" != "$gdb_arches"; then
- echo "HOST_GDB_SUPPORTS_ARCH=y" >> "$config_target_mak"
+ echo "GDB=$gdb_bin" >> $config_target_mak
fi
echo "run-tcg-tests-$target: $qemu\$(EXESUF)" >> Makefile.prereqs
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"
test -n "$objcc" && echo "objc_args = [$(meson_quote $OBJCFLAGS $EXTRA_OBJCFLAGS)]" >> $cross
echo "c_link_args = [$(meson_quote $CFLAGS $LDFLAGS $EXTRA_CFLAGS $EXTRA_LDFLAGS)]" >> $cross
echo "cpp_link_args = [$(meson_quote $CXXFLAGS $LDFLAGS $EXTRA_CXXFLAGS $EXTRA_LDFLAGS)]" >> $cross
+
+ # Only enable by default for git builds and on select OSes
+ echo "# environment defaults, can still be overridden on " >> $cross
+ echo "# the command line" >> $cross
+ if test -e "$source_path/.git" && \
+ { test "$host_os" = linux || test "$host_os" = "windows"; }; then
+ echo 'werror = true' >> $cross
+ fi
+ echo "[project options]" >> $cross
+ if test "$SMBD" != ''; then
+ echo "smbd = $(meson_quote "$SMBD")" >> $cross
+ fi
+ if test "${QEMU_GA_MANUFACTURER}" != ''; then
+ echo "qemu_ga_manufacturer = $(meson_quote "${QEMU_GA_MANUFACTURER}")" >> $cross
+ fi
+ if test "${QEMU_GA_DISTRO}" != ''; then
+ echo "qemu_ga_distro = $(meson_quote "${QEMU_GA_DISTRO}")" >> $cross
+ fi
+ if test "${QEMU_GA_VERSION}" != ''; then
+ echo "qemu_ga_version = $(meson_quote "${QEMU_GA_VERSION}")" >> $cross
+ fi
+
+ echo >> $cross
echo "[binaries]" >> $cross
echo "c = [$(meson_quote $cc $CPU_CFLAGS)]" >> $cross
test -n "$cxx" && echo "cpp = [$(meson_quote $cxx $CPU_CFLAGS)]" >> $cross
test -n "$objcc" && echo "objc = [$(meson_quote $objcc $CPU_CFLAGS)]" >> $cross
echo "ar = [$(meson_quote $ar)]" >> $cross
+ echo "dlltool = [$(meson_quote $dlltool)]" >> $cross
echo "nm = [$(meson_quote $nm)]" >> $cross
echo "pkgconfig = [$(meson_quote $pkg_config)]" >> $cross
+ echo "pkg-config = [$(meson_quote $pkg_config)]" >> $cross
echo "ranlib = [$(meson_quote $ranlib)]" >> $cross
if has $sdl2_config; then
echo "sdl2-config = [$(meson_quote $sdl2_config)]" >> $cross
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
else
echo "endian = 'little'" >> $cross
fi
- cross_arg="--cross-file config-meson.cross"
native="config-meson.native.new"
echo "# Automatically generated by configure - do not modify" > $native
echo "[binaries]" >> $native
echo "c = [$(meson_quote $host_cc)]" >> $native
mv $native config-meson.native
- cross_arg="$cross_arg --native-file config-meson.native"
- else
- cross_arg="--native-file config-meson.cross"
+ meson_option_add --native-file
+ meson_option_add config-meson.native
fi
mv $cross config-meson.cross
+ meson_add_machine_file config-meson.cross
+ 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
- # Built-in options
test "$download" = "disabled" && meson_option_add "--wrap-mode=nodownload"
- test "$bindir" != "bin" && meson_option_add "-Dbindir=$bindir"
test "$default_feature" = no && meson_option_add -Dauto_features=disabled
test "$static" = yes && meson_option_add -Dprefer_static=true
test "$pie" = no && meson_option_add -Db_pie=false
- test "$werror" = yes && meson_option_add -Dwerror=true
# QEMU options
- test "$cfi" != false && meson_option_add "-Dcfi=$cfi"
+ test "$cfi" != false && meson_option_add "-Dcfi=$cfi" "-Db_lto=$cfi"
test "$docs" != auto && meson_option_add "-Ddocs=$docs"
test -n "${LIB_FUZZING_ENGINE+xxx}" && meson_option_add "-Dfuzzing_engine=$LIB_FUZZING_ENGINE"
test "$plugins" = yes && meson_option_add "-Dplugins=true"
- test "$qemu_suffix" != qemu && meson_option_add "-Dqemu_suffix=$qemu_suffix"
- test "$smbd" != '' && meson_option_add "-Dsmbd=$smbd"
test "$tcg" != enabled && meson_option_add "-Dtcg=$tcg"
run_meson() {
- NINJA=$ninja $meson setup --prefix "$prefix" "$@" $cross_arg "$PWD" "$source_path"
+ NINJA=$ninja $meson setup "$@" "$PWD" "$source_path"
}
eval run_meson $meson_options
if test "$?" -ne 0 ; then
preserve_env CFLAGS
preserve_env CXX
preserve_env CXXFLAGS
+preserve_env DLLTOOL
preserve_env LD
preserve_env LDFLAGS
preserve_env LD_LIBRARY_PATH