qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v4 0/2] buildsys: Fix and enable module build
@ 2015-02-09 11:25 Fam Zheng
  2015-02-09 11:25 ` [Qemu-devel] [PATCH v4 1/2] configure: Default to " Fam Zheng
  2015-02-09 11:25 ` [Qemu-devel] [PATCH v4 2/2] .travis.yml: Add "--disable-modules" Fam Zheng
  0 siblings, 2 replies; 3+ messages in thread
From: Fam Zheng @ 2015-02-09 11:25 UTC (permalink / raw)
  To: qemu-devel
  Cc: Brian Jackson, Peter Maydell, Michael Tokarev, Alexander Graf,
	Stefan Hajnoczi, Paolo Bonzini, Alex Bennée

v4: Fix patch 1 by:

    - Squashing Paolo's patch in reply to v2, to fix static build.

    - Fix "pie" check to allow module build on ARM (and hopefully other
      platforms).

    - Tested {$DEFAULT,--enable-modules,--disable-modules} on {x86_64, arm}
      hosts. "--static" is not tested because I don't have the static libraries
      on my machine.


Fam Zheng (2):
  configure: Default to enable module build
  .travis.yml: Add "--disable-modules"

 .travis.yml |   2 +-
 configure   | 126 +++++++++++++++++++++++++++++++++++++++---------------------
 2 files changed, 84 insertions(+), 44 deletions(-)

-- 
1.9.3

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Qemu-devel] [PATCH v4 1/2] configure: Default to enable module build
  2015-02-09 11:25 [Qemu-devel] [PATCH v4 0/2] buildsys: Fix and enable module build Fam Zheng
@ 2015-02-09 11:25 ` Fam Zheng
  2015-02-09 11:25 ` [Qemu-devel] [PATCH v4 2/2] .travis.yml: Add "--disable-modules" Fam Zheng
  1 sibling, 0 replies; 3+ messages in thread
From: Fam Zheng @ 2015-02-09 11:25 UTC (permalink / raw)
  To: qemu-devel
  Cc: Brian Jackson, Peter Maydell, Michael Tokarev, Alexander Graf,
	Stefan Hajnoczi, Paolo Bonzini, Alex Bennée

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 <famz@redhat.com>
---
 configure | 126 +++++++++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 83 insertions(+), 43 deletions(-)

diff --git a/configure b/configure
index f185dd0..803bb2e 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"
@@ -768,6 +768,9 @@ for opt do
   --enable-modules)
       modules="yes"
   ;;
+  --disable-modules)
+      modules="no"
+  ;;
   --cpu=*)
   ;;
   --target-list=*) target_list="$optarg"
@@ -1259,7 +1262,8 @@ Advanced options (experts only):
   --sysconfdir=PATH        install config in PATH$confsuffix
   --localstatedir=PATH     install local state in PATH (set at runtime on win32)
   --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
-  --enable-modules         enable modules support
+  --enable-modules         enable modules support (default)
+  --disable-modules        enable modules support
   --enable-debug-tcg       enable TCG debugging
   --disable-debug-tcg      disable TCG debugging (default)
   --enable-debug-info      enable debugging information (default)
@@ -1532,9 +1536,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
@@ -1542,16 +1543,6 @@ if test "$static" = "yes" ; then
   fi
 fi
 
-if test "$pie" = ""; then
-  case "$cpu-$targetos" in
-    i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
-      ;;
-    *)
-      pie="no"
-      ;;
-  esac
-fi
-
 if test "$pie" != "no" ; then
   cat > $TMPC << EOF
 
@@ -2725,22 +2716,25 @@ if test "$mingw32" = yes; then
 else
     glib_req_ver=2.12
 fi
-glib_modules=gthread-2.0
-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
@@ -2749,19 +2743,65 @@ if ! $pkg_config --atleast-version=2.38 glib-2.0; 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"
-    fi
-fi
+# 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
+  shacmd_probe="sha1sum sha1 shasum"
+  for c in $shacmd_probe; do
+    if has $c; then
+      shacmd="$c"
+      break
+    fi
+  done
+  if test "$pie" = "no"; then
+    if $force; then
+      error_exit "PIE support is required to enable modules"
+    else
+      modules="no"
+      return
+    fi
+  fi
+  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
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [Qemu-devel] [PATCH v4 2/2] .travis.yml: Add "--disable-modules"
  2015-02-09 11:25 [Qemu-devel] [PATCH v4 0/2] buildsys: Fix and enable module build Fam Zheng
  2015-02-09 11:25 ` [Qemu-devel] [PATCH v4 1/2] configure: Default to " Fam Zheng
@ 2015-02-09 11:25 ` Fam Zheng
  1 sibling, 0 replies; 3+ messages in thread
From: Fam Zheng @ 2015-02-09 11:25 UTC (permalink / raw)
  To: qemu-devel
  Cc: Brian Jackson, Peter Maydell, Michael Tokarev, Alexander Graf,
	Stefan Hajnoczi, Paolo Bonzini, Alex Bennée

Now we default to "--enable-modules", let's cover the old way in travis.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-02-09 11:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-09 11:25 [Qemu-devel] [PATCH v4 0/2] buildsys: Fix and enable module build Fam Zheng
2015-02-09 11:25 ` [Qemu-devel] [PATCH v4 1/2] configure: Default to " Fam Zheng
2015-02-09 11:25 ` [Qemu-devel] [PATCH v4 2/2] .travis.yml: Add "--disable-modules" Fam Zheng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).