X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=buildconf;h=509575312951eb5dc55792ebb9e9560a0e107487;hb=HEAD;hp=771030d87531375f3a7744f857f65b0b8892d6af;hpb=a3498f96efd38849f0ba3063fa91db227999596a;p=platform%2Fupstream%2Fcurl.git diff --git a/buildconf b/buildconf index 771030d..5095753 100755 --- a/buildconf +++ b/buildconf @@ -6,11 +6,11 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2008, Daniel Stenberg, , et al. +# Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms -# are also available at http://curl.haxx.se/docs/copyright.html. +# are also available at https://curl.haxx.se/docs/copyright.html. # # You may opt to use, copy, modify, merge, publish, distribute and/or sell # copies of the Software, and permit persons to whom the Software is @@ -19,27 +19,38 @@ # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY # KIND, either express or implied. # -# $Id$ ########################################################################### +#-------------------------------------------------------------------------- +# die prints argument string to stdout and exits this shell script. +# die(){ - echo "$@" - exit + echo "buildconf: $@" + exit 1 } #-------------------------------------------------------------------------- # findtool works as 'which' but we use a different name to make it more # obvious we aren't using 'which'! ;-) +# Unlike 'which' does, the current directory is ignored. # 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 IFS=$old_IFS # echo "checks for $file in $path" >&2 - if test -f "$path/$file"; then + if test "$path" -a "$path" != '.' -a -f "$path/$file"; then echo "$path/$file" return fi @@ -48,19 +59,41 @@ findtool(){ } #-------------------------------------------------------------------------- +# removethis() removes all files and subdirectories with the given name, +# inside and below the current subdirectory at invocation time. +# +removethis(){ + if test "$#" = "1"; then + find . -depth -name $1 -print > buildconf.tmp.$$ + while read fdname + do + if test -f "$fdname"; then + rm -f "$fdname" + elif test -d "$fdname"; then + rm -f -r "$fdname" + fi + done < buildconf.tmp.$$ + rm -f buildconf.tmp.$$ + fi +} + +#-------------------------------------------------------------------------- # Ensure that buildconf runs from the subdirectory where configure.ac lives # if test ! -f configure.ac || - test ! -f src/main.c || + test ! -f src/tool_main.c || test ! -f lib/urldata.h || - test ! -f include/curl/curl.h; then + test ! -f include/curl/curl.h || + test ! -f m4/curl-functions.m4; then echo "Can not run buildconf from outside of curl's source subdirectory!" echo "Change to the subdirectory where buildconf is found, and try again." exit 1 fi #-------------------------------------------------------------------------- -# autoconf 2.57 or newer +# autoconf 2.57 or newer. Unpatched version 2.67 does not generate proper +# configure script. Unpatched version 2.68 is simply unusable, we should +# disallow 2.68 usage. # need_autoconf="2.57" ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|head -n 1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'` @@ -69,7 +102,7 @@ if test -z "$ac_version"; then echo " You need autoconf version $need_autoconf or newer installed." exit 1 fi -IFS=.; set $ac_version; IFS=' ' +old_IFS=$IFS; IFS='.'; set $ac_version; IFS=$old_IFS if test "$1" = "2" -a "$2" -lt "57" || test "$1" -lt "2"; then echo "buildconf: autoconf version $ac_version found." echo " You need autoconf version $need_autoconf or newer installed." @@ -79,14 +112,26 @@ if test "$1" = "2" -a "$2" -lt "57" || test "$1" -lt "2"; then exit 1 fi -echo "buildconf: autoconf version $ac_version (ok)" +if test "$1" = "2" -a "$2" -eq "67"; then + echo "buildconf: autoconf version $ac_version (BAD)" + echo " Unpatched version generates broken configure script." +elif test "$1" = "2" -a "$2" -eq "68"; then + echo "buildconf: autoconf version $ac_version (BAD)" + echo " Unpatched version generates unusable configure script." +else + echo "buildconf: autoconf version $ac_version (ok)" +fi am4te_version=`${AUTOM4TE:-autom4te} --version 2>/dev/null|head -n 1| sed -e 's/autom4te\(.*\)/\1/' -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'` if test -z "$am4te_version"; then echo "buildconf: autom4te not found. Weird autoconf installation!" exit 1 +fi +if test "$am4te_version" = "$ac_version"; then + echo "buildconf: autom4te version $am4te_version (ok)" else - echo "buildconf: autom4te version $am4te_version" + echo "buildconf: autom4te version $am4te_version (ERROR: does not match autoconf version)" + exit 1 fi #-------------------------------------------------------------------------- @@ -98,7 +143,7 @@ if test -z "$ah_version"; then echo " You need autoheader version 2.50 or newer installed." exit 1 fi -IFS=.; set $ah_version; IFS=' ' +old_IFS=$IFS; IFS='.'; set $ah_version; IFS=$old_IFS if test "$1" = "2" -a "$2" -lt "50" || test "$1" -lt "2"; then echo "buildconf: autoheader version $ah_version found." echo " You need autoheader version 2.50 or newer installed." @@ -120,7 +165,7 @@ if test -z "$am_version"; then echo " You need automake version $need_automake or newer installed." exit 1 fi -IFS=.; set $am_version; IFS=' ' +old_IFS=$IFS; IFS='.'; set $am_version; IFS=$old_IFS if test "$1" = "1" -a "$2" -lt "7" || test "$1" -lt "1"; then echo "buildconf: automake version $am_version found." echo " You need automake version $need_automake or newer installed." @@ -136,88 +181,91 @@ acloc_version=`${ACLOCAL:-aclocal} --version 2>/dev/null|head -n 1| sed -e 's/^. if test -z "$acloc_version"; then echo "buildconf: aclocal not found. Weird automake installation!" exit 1 +fi +if test "$acloc_version" = "$am_version"; then + echo "buildconf: aclocal version $acloc_version (ok)" else - echo "buildconf: aclocal version $acloc_version" + echo "buildconf: aclocal version $acloc_version (ERROR: does not match automake version)" + exit 1 fi #-------------------------------------------------------------------------- -# libtool check +# GNU libtoolize preliminary check # -LIBTOOL_WANTED_MAJOR=1 -LIBTOOL_WANTED_MINOR=4 -LIBTOOL_WANTED_PATCH=2 -LIBTOOL_WANTED_VERSION=1.4.2 - -# 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. -libtool=`findtool glibtool 2>/dev/null` -if test ! -x "$libtool"; then - libtool=`findtool ${LIBTOOL:-libtool}` -fi +want_lt_major=1 +want_lt_minor=4 +want_lt_patch=2 +want_lt_version=1.4.2 -if test -z "$LIBTOOLIZE"; then - # set the LIBTOOLIZE here so that glibtoolize is used if glibtool was found - # $libtool is already the full path - libtoolize="${libtool}ize" -else - libtoolize=`findtool $LIBTOOLIZE` -fi +# This approach that tries 'glibtoolize' first is intended for systems that +# have GNU libtool named as 'glibtoolize' and libtoolize not being GNU's. -lt_pversion=`$libtool --version 2>/dev/null|head -n 2|sed -e 's/^[^0-9]*//g' -e 's/[- ].*//'` -if test -z "$lt_pversion"; then - echo "buildconf: libtool not found." - echo " You need libtool version $LIBTOOL_WANTED_VERSION or newer installed" +libtoolize=`findtool glibtoolize 2>/dev/null` +if test ! -x "$libtoolize"; then + libtoolize=`findtool ${LIBTOOLIZE:-libtoolize}` +fi +if test -z "$libtoolize"; then + echo "buildconf: libtoolize not found." + echo " You need GNU libtoolize $want_lt_version or newer installed." exit 1 fi -lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$//'` -IFS=.; set $lt_version; IFS=' ' -lt_status="good" - -major=$1 -minor=$2 -patch=$3 -if test "$major" = "$LIBTOOL_WANTED_MAJOR"; then - if test "$minor" -lt "$LIBTOOL_WANTED_MINOR"; then - lt_status="bad" - elif test -n "$LIBTOOL_WANTED_PATCH"; then - if test "$minor" -gt "$LIBTOOL_WANTED_MINOR"; then - lt_status="good" - elif test -n "$patch"; then - if test "$patch" -lt "$LIBTOOL_WANTED_PATCH"; then - lt_status="bad" - fi - else - lt_status="bad" - fi - fi -fi -if test $lt_status != "good"; then - echo "buildconf: libtool version $lt_pversion found." - echo " You need libtool version $LIBTOOL_WANTED_VERSION or newer installed" +lt_pver=`$libtoolize --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: libtoolize not found." + echo " You need GNU libtoolize $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 -echo "buildconf: libtool version $lt_version (ok)" - -if test -f "$libtoolize"; then - echo "buildconf: libtoolize found" +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 - echo "buildconf: libtoolize not found. Weird libtool installation!" + lt_status="good" +fi +if test "$lt_status" != "good"; then + echo "buildconf: libtoolize version $lt_version found." + echo " You need GNU libtoolize $want_lt_version or newer installed." exit 1 fi +echo "buildconf: libtoolize version $lt_version (ok)" + #-------------------------------------------------------------------------- # m4 check # -m4=`${M4:-m4} --version 2>/dev/null|head -n 1`; +m4=`(${M4:-m4} --version 0<&- || ${M4:-gm4} --version) 2>/dev/null 0<&- | head -n 1`; m4_version=`echo $m4 | sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//'` if { echo $m4 | grep "GNU" >/dev/null 2>&1; } then echo "buildconf: GNU m4 version $m4_version (ok)" else - echo "buildconf: m4 version $m4 found. You need a GNU m4 installed!" + if test -z "$m4"; then + echo "buildconf: m4 version not recognized. You need a GNU m4 installed!" + else + echo "buildconf: m4 version $m4 found. You need a GNU m4 installed!" + fi exit 1 fi @@ -225,105 +273,106 @@ 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. # -for fname in aclocal.m4 \ - aclocal.m4.bak \ - config.guess \ - config.log \ - config.status \ - config.sub \ - configure \ - depcomp \ - libtool \ - ltmain.sh \ - Makefile \ - Makefile.in ; do - if test -f "$fname" ; then - rm -f "$fname" - fi +for fname in .deps \ + .libs \ + *.la \ + *.lo \ + *.a \ + *.o \ + Makefile \ + Makefile.in \ + aclocal.m4 \ + aclocal.m4.bak \ + ares_build.h \ + ares_config.h \ + ares_config.h.in \ + autom4te.cache \ + compile \ + config.guess \ + curl_config.h \ + curl_config.h.in \ + config.log \ + config.lt \ + config.status \ + config.sub \ + configure \ + configurehelp.pm \ + curl-config \ + depcomp \ + libcares.pc \ + libcurl.pc \ + libtool \ + libtool.m4 \ + libtool.m4.tmp \ + ltmain.sh \ + ltoptions.m4 \ + ltsugar.m4 \ + ltversion.m4 \ + lt~obsolete.m4 \ + missing \ + install-sh \ + stamp-h1 \ + stamp-h2 \ + stamp-h3 ; do + removethis "$fname" done -if test -d autom4te.cache; then - rm -f -r autom4te.cache -fi -if test -d docs/examples/.deps; then - rm -f -r docs/examples/.deps -fi -if test -d lib/.deps; then - rm -f -r lib/.deps -fi -if test -d src/.deps; then - rm -f -r src/.deps -fi -if test -d tests/libtest/.deps; then - rm -f -r tests/libtest/.deps -fi -if test -d tests/server/.deps; then - rm -f -r tests/server/.deps -fi #-------------------------------------------------------------------------- -# Remove files generated in c-ares subdir on previous buildconf/configure run. +# run the correct scripts now # -if test -d ares; then - cd ares - for fname in aclocal.m4 \ - aclocal.m4.bak \ - compile \ - config.h \ - config.h.in \ - config.guess \ - config.log \ - config.status \ - config.sub \ - configure \ - depcomp \ - libtool \ - ltmain.sh \ - missing \ - Makefile \ - Makefile.in ; do - if test -f "$fname" ; then - rm -f "$fname" + +echo "buildconf: running libtoolize" +${libtoolize} --copy --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 - done - if test -d autom4te.cache; then - rm -f -r autom4te.cache - fi - if test -d .deps; then - rm -f -r .deps fi - cd .. fi -#-------------------------------------------------------------------------- -# run the correct scripts now -# - -tmp_host_type=`uname -a | sed '/SunOS/s/.*\(SunOS\).*/\1/'` -if test "x$tmp_host_type" = "xSunOS"; then - ACLOCAL_FLAGS="$ACLOCAL_FLAGS --verbose" +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 libtoolize" -$libtoolize --copy --automake --force || die "The libtoolize command failed" echo "buildconf: running aclocal" -${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS || die "The aclocal command line failed" -if test -n "$PERL"; then - echo "buildconf: running aclocal hack to convert all mv to mv -f" - $PERL -i.bak -pe 's/\bmv +([^-\s])/mv -f $1/g' aclocal.m4 -else - echo "buildconf: perl not found" - exit 1 -fi +${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 "The autoheader command failed" -echo "buildconf: cp lib/config.h.in src/config.h.in" -cp lib/config.h.in src/config.h.in +${AUTOHEADER:-autoheader} || die "autoheader command failed" + echo "buildconf: running autoconf" -${AUTOCONF:-autoconf} || die "The autoconf command failed" +${AUTOCONF:-autoconf} || die "autoconf command failed" if test -d ares; then cd ares @@ -333,7 +382,67 @@ if test -d ares; then fi echo "buildconf: running automake" -${AUTOMAKE:-automake} -a -c || die "The automake command failed" +${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