[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 09/20] configure: Default to enable module build
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 09/20] configure: Default to enable module build |
Date: |
Wed, 12 Aug 2015 15:37:02 +0200 |
From: Fam Zheng <address@hidden>
We have module build support around for a while, but also had it bitrot
several times. It probably makes sense to enable it by default so that
people can notice and use it.
Add --disable-modules as a counterpart to --enable-modules, which is
now turned on by default. If both are omitted, support is guessed as
usual.
pie is now checked for all platforms, because it's depended on by module
build.
Signed-off-by: Fam Zheng <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
.travis.yml | 2 +-
configure | 121 +++++++++++++++++++++++++++++++++++++++++-------------------
2 files changed, 84 insertions(+), 39 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 0ac170b..12bf1db 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -99,5 +99,5 @@ matrix:
EXTRA_CONFIG="--enable-trace-backends=ust"
compiler: gcc
- env: TARGETS=i386-softmmu,x86_64-softmmu
- EXTRA_CONFIG="--enable-modules"
+ EXTRA_CONFIG="--disable-modules"
compiler: gcc
diff --git a/configure b/configure
index 704b34c..28bf755 100755
--- a/configure
+++ b/configure
@@ -271,7 +271,7 @@ gcov_tool="gcov"
EXESUF=""
DSOSUF=".so"
LDFLAGS_SHARED="-shared"
-modules="no"
+modules=""
prefix="/usr/local"
mandir="\${prefix}/share/man"
datadir="\${prefix}/share"
@@ -784,6 +784,9 @@ for opt do
--enable-modules)
modules="yes"
;;
+ --disable-modules)
+ modules="no"
+ ;;
--cpu=*)
;;
--target-list=*) target_list="$optarg"
@@ -1508,9 +1511,6 @@ if compile_prog "-Werror -fno-gcse" "" ; then
fi
if test "$static" = "yes" ; then
- if test "$modules" = "yes" ; then
- error_exit "static and modules are mutually incompatible"
- fi
if test "$pie" = "yes" ; then
error_exit "static and pie are mutually incompatible"
else
@@ -1518,17 +1518,6 @@ if test "$static" = "yes" ; then
fi
fi
-# Unconditional check for compiler __thread support
- cat > $TMPC << EOF
-static __thread int tls_var;
-int main(void) { return tls_var; }
-EOF
-
-if ! compile_prog "-Werror" "" ; then
- error_exit "Your compiler does not support the __thread specifier for " \
- "Thread-Local Storage (TLS). Please upgrade to a version that does."
-fi
-
if test "$pie" = ""; then
case "$cpu-$targetos" in
i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
@@ -1601,6 +1590,17 @@ EOF
fi
fi
+# Unconditional check for compiler __thread support
+ cat > $TMPC << EOF
+static __thread int tls_var;
+int main(void) { return tls_var; }
+EOF
+
+if ! compile_prog "-Werror" "" ; then
+ error_exit "Your compiler does not support the __thread specifier for " \
+ "Thread-Local Storage (TLS). Please upgrade to a version that does."
+fi
+
##########################################
# __sync_fetch_and_and requires at least -march=i486. Many toolchains
# use i686 as default anyway, but for those that don't, an explicit
@@ -2784,17 +2784,24 @@ if test "$modules" = yes; then
glib_modules="$glib_modules gmodule-2.0"
fi
-for i in $glib_modules; do
- if $pkg_config --atleast-version=$glib_req_ver $i; then
- glib_cflags=`$pkg_config --cflags $i`
- glib_libs=`$pkg_config --libs $i`
- CFLAGS="$glib_cflags $CFLAGS"
- LIBS="$glib_libs $LIBS"
- libs_qga="$glib_libs $libs_qga"
- else
- error_exit "glib-$glib_req_ver $i is required to compile QEMU"
- fi
-done
+glib_pkg_config()
+{
+ if $pkg_config --atleast-version=$glib_req_ver $1; then
+ local probe_cflags=$($pkg_config --cflags $1)
+ local probe_libs=$($pkg_config --libs $1)
+ CFLAGS="$probe_cflags $CFLAGS"
+ LIBS="$probe_libs $LIBS"
+ libs_qga="$probe_libs $libs_qga"
+ glib_cflags="$probe_cflags $glib_cflags"
+ glib_libs="$probe_libs $glib_libs"
+ return 0
+ else
+ return 1
+ fi
+}
+
+glib_pkg_config gthread-2.0 || \
+ error_exit "glib-$glib_req_ver gthread-2.0 is required to compile QEMU"
# g_test_trap_subprocess added in 2.38. Used by some tests.
glib_subprocess=yes
@@ -2815,19 +2822,57 @@ if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ;
then
fi
##########################################
-# SHA command probe for modules
-if test "$modules" = yes; then
- shacmd_probe="sha1sum sha1 shasum"
- for c in $shacmd_probe; do
- if has $c; then
- shacmd="$c"
- break
- fi
- done
- if test "$shacmd" = ""; then
- error_exit "one of the checksum commands is required to enable
modules: $shacmd_probe"
+# SHA command and gmodule-2.0 probe for modules
+# return 0 if probe succeeds
+# $1: true - force mode, exit if probe fail
+# false - optoinal mode, return 1 if probe fail
+module_try_enable()
+{
+ force=$1
+ if test "$static" = "yes"; then
+ if $force; then
+ error_exit "static and modules are mutually incompatible"
+ else
+ modules="no"
+ return
fi
-fi
+ fi
+ shacmd_probe="sha1sum sha1 shasum"
+ for c in $shacmd_probe; do
+ if has $c; then
+ shacmd="$c"
+ break
+ fi
+ done
+ if test "$shacmd" = ""; then
+ if $force; then
+ error_exit "one of the checksum commands is required to enable modules:
$shacmd_probe"
+ else
+ modules="no"
+ return
+ fi
+ fi
+ if ! glib_pkg_config gmodule-2.0; then
+ if $force; then
+ error_exit "glib-$glib_req_ver gmodule-2.0 is required to compile QEMU"
+ else
+ modules="no"
+ return
+ fi
+ fi
+ modules="yes"
+}
+
+case "$modules" in
+ yes)
+ module_try_enable true
+ ;;
+ "")
+ module_try_enable false
+ ;;
+ no)
+ ;;
+esac
##########################################
# pixman support probe
--
2.4.3
- [Qemu-devel] [PULL 00/20] SCSI, build, TCG, RCU, misc patches for 2015-08-12, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 03/20] tests: virtio-scsi: clear unit attention after reset, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 02/20] scsi-disk: fix cmd.mode field typo, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 01/20] virtio-scsi: use virtqueue_map_sg() when loading requests, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 04/20] scsi-disk: Fix assertion failure on WRITE SAME, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 05/20] virtio-scsi-test: Add test case for tail unaligned WRITE SAME, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 06/20] vhost/scsi: call vhost_dev_cleanup() at unrealize() time, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 08/20] cpu_defs: Simplify CPUTLB padding logic, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 09/20] configure: Default to enable module build,
Paolo Bonzini <=
- [Qemu-devel] [PULL 07/20] cpu-exec: Do not invalidate original TB in cpu_exec_nocache(), Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 10/20] exec: drop cpu_can_do_io, just read cpu->can_do_io, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 11/20] rcu: Allow calling rcu_(un)register_thread() during synchronize_rcu(), Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 12/20] exec: use macro ROUND_UP for alignment, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 14/20] qemu-nbd: remove unnecessary qemu_notify_event(), Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 15/20] configure: only add CONFIG_RDMA to config-host.h once, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 13/20] vhost-scsi: Clarify vhost_virtqueue_mask argument, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 16/20] scsi: create restart bottom half in the right AioContext, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 18/20] scsi-generic: identify AIO callbacks more clearly, Paolo Bonzini, 2015/08/12
- [Qemu-devel] [PULL 17/20] scsi-disk: identify AIO callbacks more clearly, Paolo Bonzini, 2015/08/12