Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

configure: libtool 1.5 tweaks

  • Loading branch information...
commit f1a1df1e6c4fed8dc5816f6e09a0cfeed64bb71f 1 parent 6ae9e71
@yangtse yangtse authored
View
210 buildconf
@@ -1,12 +1,28 @@
#!/bin/sh
#--------------------------------------------------------------------------
+# die prints argument string to stdout and exits this shell script.
+#
+die(){
+ echo "buildconf: $@"
+ exit 1
+}
+
+#--------------------------------------------------------------------------
# findtool works as 'which' but we use a different name to make it more
# obvious we aren't using 'which'! ;-)
#
findtool(){
file="$1"
+ if { echo "$file" | grep "/" >/dev/null 2>&1; } then
+ # when file is given with a path check it first
+ if test -f "$file"; then
+ echo "$file"
+ return
+ fi
+ fi
+
old_IFS=$IFS; IFS=':'
for path in $PATH
do
@@ -51,21 +67,89 @@ if test ! -f configure.ac ||
fi
#--------------------------------------------------------------------------
-# this approach that tries 'glibtool' first is some kind of work-around for
-# some BSD-systems I believe that use to provide the GNU libtool named
-# glibtool, with 'libtool' being something completely different.
+# GNU libtool preliminary check
+#
+want_lt_major=1
+want_lt_minor=4
+want_lt_patch=2
+want_lt_version=1.4.2
+
+# This approach that tries 'glibtool' first is intended for systems that
+# have GNU libtool named as 'glibtool' and libtool not being GNU's.
+
libtool=`findtool glibtool 2>/dev/null`
if test ! -x "$libtool"; then
libtool=`findtool ${LIBTOOL:-libtool}`
fi
+if test -z "$libtool"; then
+ echo "buildconf: libtool not found."
+ echo " You need GNU libtool $want_lt_version or newer installed."
+ exit 1
+fi
+lt_pver=`$libtool --version 2>/dev/null|head -n 1`
+lt_qver=`echo $lt_pver|sed -e "s/([^)]*)//g" -e "s/^[^0-9]*//g"`
+lt_version=`echo $lt_qver|sed -e "s/[- ].*//" -e "s/\([a-z]*\)$//"`
+if test -z "$lt_version"; then
+ echo "buildconf: libtool not found."
+ echo " You need GNU libtool $want_lt_version or newer installed."
+ exit 1
+fi
+old_IFS=$IFS; IFS='.'; set $lt_version; IFS=$old_IFS
+lt_major=$1
+lt_minor=$2
+lt_patch=$3
+
+if test -z "$lt_major"; then
+ lt_status="bad"
+elif test "$lt_major" -gt "$want_lt_major"; then
+ lt_status="good"
+elif test "$lt_major" -lt "$want_lt_major"; then
+ lt_status="bad"
+elif test -z "$lt_minor"; then
+ lt_status="bad"
+elif test "$lt_minor" -gt "$want_lt_minor"; then
+ lt_status="good"
+elif test "$lt_minor" -lt "$want_lt_minor"; then
+ lt_status="bad"
+elif test -z "$lt_patch"; then
+ lt_status="bad"
+elif test "$lt_patch" -gt "$want_lt_patch"; then
+ lt_status="good"
+elif test "$lt_patch" -lt "$want_lt_patch"; then
+ lt_status="bad"
+else
+ lt_status="good"
+fi
+if test "$lt_status" != "good"; then
+ echo "buildconf: libtool version $lt_version found."
+ echo " You need GNU libtool $want_lt_version or newer installed."
+ exit 1
+fi
+
+#--------------------------------------------------------------------------
+# GNU libtoolize check
+#
if test -z "$LIBTOOLIZE"; then
- # set the LIBTOOLIZE here so that glibtoolize is used if glibtool was found
- # $libtool is already the full path
+ # use (g)libtoolize from same location as (g)libtool
libtoolize="${libtool}ize"
else
libtoolize=`findtool $LIBTOOLIZE`
fi
+if test ! -f "$libtoolize"; then
+ echo "buildconf: libtoolize not found."
+ echo " You need GNU libtoolize $want_lt_version or newer installed."
+ exit 1
+fi
+
+#--------------------------------------------------------------------------
+# perl check
+#
+PERL=`findtool ${PERL:-perl}`
+if test -z "$PERL"; then
+ echo "buildconf: perl not found"
+ exit 1
+fi
#--------------------------------------------------------------------------
# Remove files generated on previous buildconf/configure run.
@@ -95,6 +179,7 @@ for fname in .deps \
libcares.pc \
libtool \
libtool.m4 \
+ libtool.m4.tmp \
ltmain.sh \
ltoptions.m4 \
ltsugar.m4 \
@@ -110,8 +195,113 @@ done
# run the correct scripts now
#
-${libtoolize} --copy --automake --force
-${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS
-${AUTOHEADER:-autoheader}
-${AUTOCONF:-autoconf}
-${AUTOMAKE:-automake} --add-missing --copy
+echo "buildconf: running libtoolize"
+${libtoolize} --copy --automake --force || die "libtoolize command failed"
+
+# When using libtool 1.5.X (X < 26) we copy libtool.m4 to our local m4
+# subdirectory and this local copy is patched to fix some warnings that
+# are triggered when running aclocal and using autoconf 2.62 or later.
+
+if test "$lt_major" = "1" && test "$lt_minor" = "5"; then
+ if test -z "$lt_patch" || test "$lt_patch" -lt "26"; then
+ echo "buildconf: copying libtool.m4 to local m4 subdir"
+ ac_dir=`${ACLOCAL:-aclocal} --print-ac-dir`
+ if test -f $ac_dir/libtool.m4; then
+ cp -f $ac_dir/libtool.m4 m4/libtool.m4
+ else
+ echo "buildconf: $ac_dir/libtool.m4 not found"
+ fi
+ if test -f m4/libtool.m4; then
+ echo "buildconf: renaming some variables in local m4/libtool.m4"
+ $PERL -i.tmp -pe \
+ 's/lt_prog_compiler_pic_works/lt_cv_prog_compiler_pic_works/g; \
+ s/lt_prog_compiler_static_works/lt_cv_prog_compiler_static_works/g;' \
+ m4/libtool.m4
+ rm -f m4/libtool.m4.tmp
+ fi
+ fi
+fi
+
+if test -f m4/libtool.m4; then
+ echo "buildconf: converting all mv to mv -f in local m4/libtool.m4"
+ $PERL -i.tmp -pe 's/\bmv +([^-\s])/mv -f $1/g' m4/libtool.m4
+ rm -f m4/libtool.m4.tmp
+fi
+
+echo "buildconf: running aclocal"
+${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS || die "aclocal command failed"
+
+echo "buildconf: converting all mv to mv -f in local aclocal.m4"
+$PERL -i.bak -pe 's/\bmv +([^-\s])/mv -f $1/g' aclocal.m4
+
+echo "buildconf: running autoheader"
+${AUTOHEADER:-autoheader} || die "autoheader command failed"
+
+echo "buildconf: running autoconf"
+${AUTOCONF:-autoconf} || die "autoconf command failed"
+
+echo "buildconf: running automake"
+${AUTOMAKE:-automake} --add-missing --copy || die "automake command failed"
+
+#--------------------------------------------------------------------------
+# GNU libtool complementary check
+#
+# Depending on the libtool and automake versions being used, config.guess
+# might not be installed in the subdirectory until automake has finished.
+# So we can not attempt to use it until this very last buildconf stage.
+#
+if test ! -f ./config.guess; then
+ echo "buildconf: config.guess not found"
+else
+ buildhost=`./config.guess 2>/dev/null|head -n 1`
+ case $buildhost in
+ *-*-darwin*)
+ need_lt_major=1
+ need_lt_minor=5
+ need_lt_patch=26
+ need_lt_check="yes"
+ ;;
+ *-*-hpux*)
+ need_lt_major=1
+ need_lt_minor=5
+ need_lt_patch=24
+ need_lt_check="yes"
+ ;;
+ esac
+ if test ! -z "$need_lt_check"; then
+ if test -z "$lt_major"; then
+ lt_status="bad"
+ elif test "$lt_major" -gt "$need_lt_major"; then
+ lt_status="good"
+ elif test "$lt_major" -lt "$need_lt_major"; then
+ lt_status="bad"
+ elif test -z "$lt_minor"; then
+ lt_status="bad"
+ elif test "$lt_minor" -gt "$need_lt_minor"; then
+ lt_status="good"
+ elif test "$lt_minor" -lt "$need_lt_minor"; then
+ lt_status="bad"
+ elif test -z "$lt_patch"; then
+ lt_status="bad"
+ elif test "$lt_patch" -gt "$need_lt_patch"; then
+ lt_status="good"
+ elif test "$lt_patch" -lt "$need_lt_patch"; then
+ lt_status="bad"
+ else
+ lt_status="good"
+ fi
+ if test "$lt_status" != "good"; then
+ need_lt_version="$need_lt_major.$need_lt_minor.$need_lt_patch"
+ echo "buildconf: libtool version $lt_version found."
+ echo " $buildhost requires GNU libtool $need_lt_version or newer installed."
+ rm -f configure
+ exit 1
+ fi
+ fi
+fi
+
+#--------------------------------------------------------------------------
+# Finished successfully.
+#
+echo "buildconf: OK"
+exit 0
View
1  configure.ac
@@ -4,6 +4,7 @@ dnl Version not hardcoded here. Fetched later from ares_version.h
AC_INIT([c-ares], [-],
[c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares])
+XC_OVR_ZZ50
CARES_OVERRIDE_AUTOCONF
AC_CONFIG_SRCDIR([ares_ipv6.h])
View
1  m4/.gitignore
@@ -1,4 +1,5 @@
libtool.m4
+libtool.m4.tmp
ltoptions.m4
ltsugar.m4
ltversion.m4
View
13 m4/cares-override.m4
@@ -1,9 +1,8 @@
#***************************************************************************
-# $Id$
#***************************************************************************
# File version for 'aclocal' use. Keep it a single number.
-# serial 4
+# serial 5
dnl CARES_OVERRIDE_AUTOCONF
dnl -------------------------------------------------
@@ -17,16 +16,6 @@ AC_BEFORE([$0],[AC_PROG_LIBTOOL])
# using cares-override.m4
])
-dnl Override some Libtool tests
-dnl -------------------------------------------------
-dnl This is done to prevent Libtool 1.5.X from doing
-dnl unnecesary C++, Fortran and Java tests and reduce
-dnl resulting configure script by nearly 300 Kb.
-
-m4_define([AC_LIBTOOL_LANG_CXX_CONFIG],[:])
-m4_define([AC_LIBTOOL_LANG_F77_CONFIG],[:])
-m4_define([AC_LIBTOOL_LANG_GCJ_CONFIG],[:])
-
dnl Override Autoconf's AC_LANG_PROGRAM (C)
dnl -------------------------------------------------
dnl This is done to prevent compiler warning
View
60 m4/zz50-xc-ovr.m4
@@ -0,0 +1,60 @@
+#---------------------------------------------------------------------------
+#
+# zz50-xc-ovr.m4
+#
+# Copyright (c) 2011 Daniel Stenberg <daniel@haxx.se>
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+#---------------------------------------------------------------------------
+
+# serial 1
+
+
+dnl The funny name of this file is intentional in order to make it
+dnl sort alphabetically after any libtool, autoconf or automake
+dnl provided .m4 macro file that might get copied into this same
+dnl subdirectory. This allows that macro (re)definitions from this
+dnl file may override those provided in other files.
+
+
+dnl Override some language related macros
+dnl -------------------------------------------------
+dnl This is done to prevent Libtool 1.5.X from doing
+dnl unnecesary C++, Fortran and Java tests when only
+dnl using C language and reduce resulting configure
+dnl script by nearly 300 Kb.
+
+m4_ifdef([AC_LIBTOOL_LANG_CXX_CONFIG],
+ [m4_undefine([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_define([AC_LIBTOOL_LANG_CXX_CONFIG],[:])
+
+m4_ifdef([AC_LIBTOOL_LANG_F77_CONFIG],
+ [m4_undefine([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_define([AC_LIBTOOL_LANG_F77_CONFIG],[:])
+
+m4_ifdef([AC_LIBTOOL_LANG_GCJ_CONFIG],
+ [m4_undefine([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_define([AC_LIBTOOL_LANG_GCJ_CONFIG],[:])
+
+
+dnl XC_OVR_ZZ50
+dnl -------------------------------------------------
+dnl Placing a call to this macro in configure.ac will
+dnl make macros in this file visible to other macros
+dnl used for same configure script, overriding those
+dnl provided elsewhere.
+
+AC_DEFUN([XC_OVR_ZZ50],
+ [AC_BEFORE([$0],[AC_PROG_LIBTOOL])])
+
Please sign in to comment.
Something went wrong with that request. Please try again.