X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=buildconf;h=509575312951eb5dc55792ebb9e9560a0e107487;hb=HEAD;hp=b6d70a670d93610a1d8df731635cbead15aeceba;hpb=be28825b2d3e213439eab5ce5423a3caca79bc46;p=platform%2Fupstream%2Fcurl.git diff --git a/buildconf b/buildconf index b6d70a6..5095753 100755 --- a/buildconf +++ b/buildconf @@ -6,11 +6,11 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2009, 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 @@ -21,24 +21,36 @@ # ########################################################################### +#-------------------------------------------------------------------------- +# 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 @@ -69,16 +81,19 @@ removethis(){ # 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]* *$//'` @@ -97,7 +112,15 @@ 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 @@ -167,83 +190,82 @@ else 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` +# This approach that tries 'glibtoolize' first is intended for systems that +# have GNU libtool named as 'glibtoolize' and libtoolize not being GNU's. + +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_pver=`$libtool --version 2>/dev/null|head -n 1` +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: libtool not found." - echo " You need libtool version $LIBTOOL_WANTED_VERSION or newer installed" + 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 -lt_status="good" -if test "$lt_major" = "$LIBTOOL_WANTED_MAJOR"; then - if test "$lt_minor" -lt "$LIBTOOL_WANTED_MINOR"; then - lt_status="bad" - elif test -n "$LIBTOOL_WANTED_PATCH"; then - if test "$lt_minor" -gt "$LIBTOOL_WANTED_MINOR"; then - lt_status="good" - elif test -n "$lt_patch"; then - if test "$lt_patch" -lt "$LIBTOOL_WANTED_PATCH"; then - lt_status="bad" - fi - else - lt_status="bad" - fi - fi +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 libtool version $LIBTOOL_WANTED_VERSION or newer installed" +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: libtool version $lt_version (ok)" - -if test -f "$libtoolize"; then - echo "buildconf: libtoolize found" -else - echo "buildconf: libtoolize not found. Weird libtool installation!" - 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 @@ -251,6 +273,10 @@ 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. @@ -278,18 +304,21 @@ for fname in .deps \ config.status \ config.sub \ configure \ + configurehelp.pm \ curl-config \ - curlbuild.h \ 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 @@ -301,32 +330,49 @@ done # echo "buildconf: running libtoolize" -$libtoolize --copy --automake --force || die "The libtoolize command failed" +${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 + fi +fi -if test ! -f m4/curl-functions.m4; then - echo "buildconf: cURL m4 macros not found" - exit 1 +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 "The aclocal command line failed" +${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS || die "aclocal command 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 +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/curl_config.h.in src/curl_config.h.in" -cp lib/curl_config.h.in src/curl_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 @@ -336,19 +382,26 @@ 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 @@ -381,7 +434,7 @@ else 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 libtool $need_lt_version or newer installed." + echo " $buildhost requires GNU libtool $need_lt_version or newer installed." rm -f configure exit 1 fi @@ -389,8 +442,7 @@ else fi #-------------------------------------------------------------------------- -# Finished succesfully. +# Finished successfully. # - echo "buildconf: OK" exit 0