diff mbox

remove libtool support

Message ID 1453894822-4172-1-git-send-email-mjt@msgid.tls.msk.ru
State New
Headers show

Commit Message

Michael Tokarev Jan. 27, 2016, 11:40 a.m. UTC
Libtool support was needed to build shared library for libcacard.
Now there's no need to use libtool, and since the build system is
already complicated enough, we have a way to slightly de-complicate
it.

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 configure | 86 ++-------------------------------------------------------------
 rules.mak | 18 -------------
 2 files changed, 2 insertions(+), 102 deletions(-)

Comments

Greg Kurz Jan. 27, 2016, 12:15 p.m. UTC | #1
On Wed, 27 Jan 2016 14:40:22 +0300
Michael Tokarev <mjt@tls.msk.ru> wrote:

> Libtool support was needed to build shared library for libcacard.
> Now there's no need to use libtool, and since the build system is
> already complicated enough, we have a way to slightly de-complicate
> it.
> 
> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
> ---

Very good idea !

Reviewed-by: Greg Kurz <gkurz@linux.vnet.ibm.com>

Just a few remarks:

[greg@palmb qemu-master]$ grep -r libtool
qemu-doc.texi:@item libtool: @uref{http://www.gnu.org/software/libtool/}

Maybe we should drop that line as well ?

Also, when reading http://wiki.qemu.org/Contribute/TrivialPatches, I
wonder if this can be considered a trivial patch... Can you clarify ?

>  configure | 86 ++-------------------------------------------------------------
>  rules.mak | 18 -------------
>  2 files changed, 2 insertions(+), 102 deletions(-)
> 
> diff --git a/configure b/configure
> index 3506e44..fbcea37 100755
> --- a/configure
> +++ b/configure
> @@ -116,38 +116,6 @@ compile_prog() {
>    do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
>  }
> 
> -do_libtool() {
> -    local mode=$1
> -    shift
> -    # Run the compiler, capturing its output to the log.
> -    echo $libtool $mode --tag=CC $cc "$@" >> config.log
> -    $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
> -    # Test passed. If this is an --enable-werror build, rerun
> -    # the test with -Werror and bail out if it fails. This
> -    # makes warning-generating-errors in configure test code
> -    # obvious to developers.
> -    if test "$werror" != "yes"; then
> -        return 0
> -    fi
> -    # Don't bother rerunning the compile if we were already using -Werror
> -    case "$*" in
> -        *-Werror*)
> -           return 0
> -        ;;
> -    esac
> -    echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
> -    $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
> -    error_exit "configure test passed without -Werror but failed with -Werror." \
> -        "This is probably a bug in the configure script. The failing command" \
> -        "will be at the bottom of config.log." \
> -        "You can run configure with --disable-werror to bypass this check."
> -}
> -
> -libtool_prog() {
> -    do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
> -    do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
> -}
> -
>  # symbolically link $1 to $2.  Portable version of "ln -sf".
>  symlink() {
>    rm -rf "$2"
> @@ -398,7 +366,6 @@ as="${AS-${cross_prefix}as}"
>  cpp="${CPP-$cc -E}"
>  objcopy="${OBJCOPY-${cross_prefix}objcopy}"
>  ld="${LD-${cross_prefix}ld}"
> -libtool="${LIBTOOL-${cross_prefix}libtool}"
>  nm="${NM-${cross_prefix}nm}"
>  strip="${STRIP-${cross_prefix}strip}"
>  windres="${WINDRES-${cross_prefix}windres}"
> @@ -1514,7 +1481,6 @@ EOF
>      if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
>         compile_prog "-Werror $flag" ""; then
>        QEMU_CFLAGS="$QEMU_CFLAGS $flag"
> -      LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
>        sp_on=1
>        break
>      fi
> @@ -1609,32 +1575,6 @@ EOF
>    fi
>  fi
> 
> -# check for broken gcc and libtool in RHEL5
> -if test -n "$libtool" -a "$pie" != "no" ; then
> -  cat > $TMPC <<EOF
> -
> -void *f(unsigned char *buf, int len);
> -void *g(unsigned char *buf, int len);
> -
> -void *
> -f(unsigned char *buf, int len)
> -{
> -    return (void*)0L;
> -}
> -
> -void *
> -g(unsigned char *buf, int len)
> -{
> -    return f(buf, len);
> -}
> -
> -EOF
> -  if ! libtool_prog; then
> -    echo "Disabling libtool due to broken toolchain support"
> -    libtool=
> -  fi
> -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
> @@ -2241,21 +2181,6 @@ if test "$xen_pv_domain_build" = "yes" &&
>  fi
> 
>  ##########################################
> -# libtool probe
> -
> -if ! has $libtool; then
> -    libtool=
> -fi
> -
> -# MacOSX ships with a libtool which isn't the GNU one; weed this
> -# out by checking whether libtool supports the --version switch
> -if test -n "$libtool"; then
> -  if ! "$libtool" --version >/dev/null 2>&1; then
> -    libtool=
> -  fi
> -fi
> -
> -##########################################
>  # Sparse probe
>  if test "$sparse" != "no" ; then
>    if has cgcc; then
> @@ -5501,13 +5426,8 @@ echo "MAKE=$make" >> $config_host_mak
>  echo "INSTALL=$install" >> $config_host_mak
>  echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
>  echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
> -if test -n "$libtool"; then
> -  echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
> -  echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
> -else
> -  echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
> -  echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
> -fi
> +echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
> +echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
>  echo "PYTHON=$python" >> $config_host_mak
>  echo "CC=$cc" >> $config_host_mak
>  if $iasl -h > /dev/null 2>&1; then
> @@ -5525,7 +5445,6 @@ echo "OBJCOPY=$objcopy" >> $config_host_mak
>  echo "LD=$ld" >> $config_host_mak
>  echo "NM=$nm" >> $config_host_mak
>  echo "WINDRES=$windres" >> $config_host_mak
> -echo "LIBTOOL=$libtool" >> $config_host_mak
>  echo "CFLAGS=$CFLAGS" >> $config_host_mak
>  echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
>  echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
> @@ -5544,7 +5463,6 @@ else
>  fi
>  echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
>  echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
> -echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
>  echo "LIBS+=$LIBS" >> $config_host_mak
>  echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
>  echo "EXESUF=$EXESUF" >> $config_host_mak
> diff --git a/rules.mak b/rules.mak
> index 4551b9e..fc5ee41 100644
> --- a/rules.mak
> +++ b/rules.mak
> @@ -62,27 +62,9 @@ expand-objs = $(strip $(sort $(filter %.o,$1)) \
>  # must link with the C++ compiler, not the plain C compiler.
>  LINKPROG = $(or $(CXX),$(CC))
> 
> -ifeq ($(LIBTOOL),)
>  LINK = $(call quiet-command, $(LINKPROG) $(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ \
>         $(call process-archive-undefs, $1) \
>         $(version-obj-y) $(call extract-libs,$1) $(LIBS),"  LINK  $(TARGET_DIR)$@")
> -else
> -LIBTOOL += $(if $(V),,--quiet)
> -%.lo: %.c
> -	$(call quiet-command,$(LIBTOOL) --mode=compile --tag=CC $(CC) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) $($*.o-cflags) -c -o $@ $<,"  lt CC $@")
> -%.lo: %.rc
> -	$(call quiet-command,$(LIBTOOL) --mode=compile --tag=RC $(WINDRES) -I. -o $@ $<,"lt RC   $(TARGET_DIR)$@")
> -%.lo: %.dtrace
> -	$(call quiet-command,$(LIBTOOL) --mode=compile --tag=CC dtrace -o $@ -G -s $<, " lt GEN $(TARGET_DIR)$@")
> -
> -LINK = $(call quiet-command,\
> -       $(if $(filter %.lo %.la,$1),$(LIBTOOL) --mode=link --tag=CC \
> -       )$(LINKPROG) $(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ \
> -       $(call process-archive-undefs, $1)\
> -       $(if $(filter %.lo %.la,$1),$(version-lobj-y),$(version-obj-y)) \
> -       $(if $(filter %.lo %.la,$1),$(LIBTOOLFLAGS)) \
> -       $(call extract-libs,$(1:.lo=.o)) $(LIBS),$(if $(filter %.lo %.la,$1),"lt LINK ", "  LINK  ")"$(TARGET_DIR)$@")
> -endif
> 
>  %.asm: %.S
>  	$(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -o $@ $<,"  CPP   $(TARGET_DIR)$@")
Michael Tokarev Jan. 27, 2016, 12:36 p.m. UTC | #2
27.01.2016 15:15, Greg Kurz wrote:
[]
> Just a few remarks:
> 
> [greg@palmb qemu-master]$ grep -r libtool
> qemu-doc.texi:@item libtool: @uref{http://www.gnu.org/software/libtool/}
> 
> Maybe we should drop that line as well ?

Hm, it looks like I forgot to commit that change,
qemu-doc.texi is left locally modified but not comitted.
Yes, definitely we should do that.

btw, there's a handy tool `git grep' for that.

> Also, when reading http://wiki.qemu.org/Contribute/TrivialPatches, I
> wonder if this can be considered a trivial patch... Can you clarify ?

well, I dunno.  To me it is trivial, removing a bunch of unused code
without touching the rest.  Dunno.

Thanks,

/mjt
Greg Kurz Jan. 27, 2016, 1:17 p.m. UTC | #3
On Wed, 27 Jan 2016 15:36:38 +0300
Michael Tokarev <mjt@tls.msk.ru> wrote:

> 27.01.2016 15:15, Greg Kurz wrote:
> []
> > Just a few remarks:
> > 
> > [greg@palmb qemu-master]$ grep -r libtool
> > qemu-doc.texi:@item libtool: @uref{http://www.gnu.org/software/libtool/}
> > 
> > Maybe we should drop that line as well ?  
> 
> Hm, it looks like I forgot to commit that change,
> qemu-doc.texi is left locally modified but not comitted.
> Yes, definitely we should do that.
> 
> btw, there's a handy tool `git grep' for that.
> 

Heh thanks :)

> > Also, when reading http://wiki.qemu.org/Contribute/TrivialPatches, I
> > wonder if this can be considered a trivial patch... Can you clarify ?  
> 
> well, I dunno.  To me it is trivial, removing a bunch of unused code
> without touching the rest.  Dunno.
> 

Ok.

> Thanks,
> 
> /mjt
>
diff mbox

Patch

diff --git a/configure b/configure
index 3506e44..fbcea37 100755
--- a/configure
+++ b/configure
@@ -116,38 +116,6 @@  compile_prog() {
   do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
 }
 
-do_libtool() {
-    local mode=$1
-    shift
-    # Run the compiler, capturing its output to the log.
-    echo $libtool $mode --tag=CC $cc "$@" >> config.log
-    $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
-    # Test passed. If this is an --enable-werror build, rerun
-    # the test with -Werror and bail out if it fails. This
-    # makes warning-generating-errors in configure test code
-    # obvious to developers.
-    if test "$werror" != "yes"; then
-        return 0
-    fi
-    # Don't bother rerunning the compile if we were already using -Werror
-    case "$*" in
-        *-Werror*)
-           return 0
-        ;;
-    esac
-    echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
-    $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
-    error_exit "configure test passed without -Werror but failed with -Werror." \
-        "This is probably a bug in the configure script. The failing command" \
-        "will be at the bottom of config.log." \
-        "You can run configure with --disable-werror to bypass this check."
-}
-
-libtool_prog() {
-    do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
-    do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
-}
-
 # symbolically link $1 to $2.  Portable version of "ln -sf".
 symlink() {
   rm -rf "$2"
@@ -398,7 +366,6 @@  as="${AS-${cross_prefix}as}"
 cpp="${CPP-$cc -E}"
 objcopy="${OBJCOPY-${cross_prefix}objcopy}"
 ld="${LD-${cross_prefix}ld}"
-libtool="${LIBTOOL-${cross_prefix}libtool}"
 nm="${NM-${cross_prefix}nm}"
 strip="${STRIP-${cross_prefix}strip}"
 windres="${WINDRES-${cross_prefix}windres}"
@@ -1514,7 +1481,6 @@  EOF
     if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
        compile_prog "-Werror $flag" ""; then
       QEMU_CFLAGS="$QEMU_CFLAGS $flag"
-      LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
       sp_on=1
       break
     fi
@@ -1609,32 +1575,6 @@  EOF
   fi
 fi
 
-# check for broken gcc and libtool in RHEL5
-if test -n "$libtool" -a "$pie" != "no" ; then
-  cat > $TMPC <<EOF
-
-void *f(unsigned char *buf, int len);
-void *g(unsigned char *buf, int len);
-
-void *
-f(unsigned char *buf, int len)
-{
-    return (void*)0L;
-}
-
-void *
-g(unsigned char *buf, int len)
-{
-    return f(buf, len);
-}
-
-EOF
-  if ! libtool_prog; then
-    echo "Disabling libtool due to broken toolchain support"
-    libtool=
-  fi
-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
@@ -2241,21 +2181,6 @@  if test "$xen_pv_domain_build" = "yes" &&
 fi
 
 ##########################################
-# libtool probe
-
-if ! has $libtool; then
-    libtool=
-fi
-
-# MacOSX ships with a libtool which isn't the GNU one; weed this
-# out by checking whether libtool supports the --version switch
-if test -n "$libtool"; then
-  if ! "$libtool" --version >/dev/null 2>&1; then
-    libtool=
-  fi
-fi
-
-##########################################
 # Sparse probe
 if test "$sparse" != "no" ; then
   if has cgcc; then
@@ -5501,13 +5426,8 @@  echo "MAKE=$make" >> $config_host_mak
 echo "INSTALL=$install" >> $config_host_mak
 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
-if test -n "$libtool"; then
-  echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
-  echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
-else
-  echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
-  echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
-fi
+echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
+echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
 echo "PYTHON=$python" >> $config_host_mak
 echo "CC=$cc" >> $config_host_mak
 if $iasl -h > /dev/null 2>&1; then
@@ -5525,7 +5445,6 @@  echo "OBJCOPY=$objcopy" >> $config_host_mak
 echo "LD=$ld" >> $config_host_mak
 echo "NM=$nm" >> $config_host_mak
 echo "WINDRES=$windres" >> $config_host_mak
-echo "LIBTOOL=$libtool" >> $config_host_mak
 echo "CFLAGS=$CFLAGS" >> $config_host_mak
 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
@@ -5544,7 +5463,6 @@  else
 fi
 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
-echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
 echo "LIBS+=$LIBS" >> $config_host_mak
 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
 echo "EXESUF=$EXESUF" >> $config_host_mak
diff --git a/rules.mak b/rules.mak
index 4551b9e..fc5ee41 100644
--- a/rules.mak
+++ b/rules.mak
@@ -62,27 +62,9 @@  expand-objs = $(strip $(sort $(filter %.o,$1)) \
 # must link with the C++ compiler, not the plain C compiler.
 LINKPROG = $(or $(CXX),$(CC))
 
-ifeq ($(LIBTOOL),)
 LINK = $(call quiet-command, $(LINKPROG) $(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ \
        $(call process-archive-undefs, $1) \
        $(version-obj-y) $(call extract-libs,$1) $(LIBS),"  LINK  $(TARGET_DIR)$@")
-else
-LIBTOOL += $(if $(V),,--quiet)
-%.lo: %.c
-	$(call quiet-command,$(LIBTOOL) --mode=compile --tag=CC $(CC) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) $($*.o-cflags) -c -o $@ $<,"  lt CC $@")
-%.lo: %.rc
-	$(call quiet-command,$(LIBTOOL) --mode=compile --tag=RC $(WINDRES) -I. -o $@ $<,"lt RC   $(TARGET_DIR)$@")
-%.lo: %.dtrace
-	$(call quiet-command,$(LIBTOOL) --mode=compile --tag=CC dtrace -o $@ -G -s $<, " lt GEN $(TARGET_DIR)$@")
-
-LINK = $(call quiet-command,\
-       $(if $(filter %.lo %.la,$1),$(LIBTOOL) --mode=link --tag=CC \
-       )$(LINKPROG) $(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ \
-       $(call process-archive-undefs, $1)\
-       $(if $(filter %.lo %.la,$1),$(version-lobj-y),$(version-obj-y)) \
-       $(if $(filter %.lo %.la,$1),$(LIBTOOLFLAGS)) \
-       $(call extract-libs,$(1:.lo=.o)) $(LIBS),$(if $(filter %.lo %.la,$1),"lt LINK ", "  LINK  ")"$(TARGET_DIR)$@")
-endif
 
 %.asm: %.S
 	$(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -o $@ $<,"  CPP   $(TARGET_DIR)$@")