Annotation of embedaddon/curl/buildconf, revision 1.1

1.1     ! misho       1: #!/bin/sh
        !             2: #***************************************************************************
        !             3: #                                  _   _ ____  _
        !             4: #  Project                     ___| | | |  _ \| |
        !             5: #                             / __| | | | |_) | |
        !             6: #                            | (__| |_| |  _ <| |___
        !             7: #                             \___|\___/|_| \_\_____|
        !             8: #
        !             9: # Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
        !            10: #
        !            11: # This software is licensed as described in the file COPYING, which
        !            12: # you should have received as part of this distribution. The terms
        !            13: # are also available at https://curl.haxx.se/docs/copyright.html.
        !            14: #
        !            15: # You may opt to use, copy, modify, merge, publish, distribute and/or sell
        !            16: # copies of the Software, and permit persons to whom the Software is
        !            17: # furnished to do so, under the terms of the COPYING file.
        !            18: #
        !            19: # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
        !            20: # KIND, either express or implied.
        !            21: #
        !            22: ###########################################################################
        !            23: 
        !            24: #--------------------------------------------------------------------------
        !            25: # die prints argument string to stdout and exits this shell script.
        !            26: #
        !            27: die(){
        !            28:   echo "buildconf: $@"
        !            29:   exit 1
        !            30: }
        !            31: 
        !            32: #--------------------------------------------------------------------------
        !            33: # findtool works as 'which' but we use a different name to make it more
        !            34: # obvious we aren't using 'which'! ;-)
        !            35: # Unlike 'which' does, the current directory is ignored.
        !            36: #
        !            37: findtool(){
        !            38:   file="$1"
        !            39: 
        !            40:   if { echo "$file" | grep "/" >/dev/null 2>&1; } then
        !            41:     # when file is given with a path check it first
        !            42:     if test -f "$file"; then
        !            43:       echo "$file"
        !            44:       return
        !            45:     fi
        !            46:   fi
        !            47: 
        !            48:   old_IFS=$IFS; IFS=':'
        !            49:   for path in $PATH
        !            50:   do
        !            51:     IFS=$old_IFS
        !            52:     # echo "checks for $file in $path" >&2
        !            53:     if test "$path" -a "$path" != '.' -a -f "$path/$file"; then
        !            54:       echo "$path/$file"
        !            55:       return
        !            56:     fi
        !            57:   done
        !            58:   IFS=$old_IFS
        !            59: }
        !            60: 
        !            61: #--------------------------------------------------------------------------
        !            62: # removethis() removes all files and subdirectories with the given name,
        !            63: # inside and below the current subdirectory at invocation time.
        !            64: #
        !            65: removethis(){
        !            66:   if test "$#" = "1"; then
        !            67:     find . -depth -name $1 -execdir rm -rf {} \;
        !            68:   fi
        !            69: }
        !            70: 
        !            71: #--------------------------------------------------------------------------
        !            72: # Ensure that buildconf runs from the subdirectory where configure.ac lives
        !            73: #
        !            74: if test ! -f configure.ac ||
        !            75:   test ! -f src/tool_main.c ||
        !            76:   test ! -f lib/urldata.h ||
        !            77:   test ! -f include/curl/curl.h ||
        !            78:   test ! -f m4/curl-functions.m4; then
        !            79:   echo "Can not run buildconf from outside of curl's source subdirectory!"
        !            80:   echo "Change to the subdirectory where buildconf is found, and try again."
        !            81:   exit 1
        !            82: fi
        !            83: 
        !            84: #--------------------------------------------------------------------------
        !            85: # autoconf 2.57 or newer. Unpatched version 2.67 does not generate proper
        !            86: # configure script. Unpatched version 2.68 is simply unusable, we should
        !            87: # disallow 2.68 usage.
        !            88: #
        !            89: need_autoconf="2.57"
        !            90: ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|head -n 1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
        !            91: if test -z "$ac_version"; then
        !            92:   echo "buildconf: autoconf not found."
        !            93:   echo "            You need autoconf version $need_autoconf or newer installed."
        !            94:   exit 1
        !            95: fi
        !            96: old_IFS=$IFS; IFS='.'; set $ac_version; IFS=$old_IFS
        !            97: if test "$1" = "2" -a "$2" -lt "57" || test "$1" -lt "2"; then
        !            98:   echo "buildconf: autoconf version $ac_version found."
        !            99:   echo "            You need autoconf version $need_autoconf or newer installed."
        !           100:   echo "            If you have a sufficient autoconf installed, but it"
        !           101:   echo "            is not named 'autoconf', then try setting the"
        !           102:   echo "            AUTOCONF environment variable."
        !           103:   exit 1
        !           104: fi
        !           105: 
        !           106: if test "$1" = "2" -a "$2" -eq "67"; then
        !           107:   echo "buildconf: autoconf version $ac_version (BAD)"
        !           108:   echo "            Unpatched version generates broken configure script."
        !           109: elif test "$1" = "2" -a "$2" -eq "68"; then
        !           110:   echo "buildconf: autoconf version $ac_version (BAD)"
        !           111:   echo "            Unpatched version generates unusable configure script."
        !           112: else
        !           113:   echo "buildconf: autoconf version $ac_version (ok)"
        !           114: fi
        !           115: 
        !           116: am4te_version=`${AUTOM4TE:-autom4te} --version 2>/dev/null|head -n 1| sed -e 's/autom4te\(.*\)/\1/' -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
        !           117: if test -z "$am4te_version"; then
        !           118:   echo "buildconf: autom4te not found. Weird autoconf installation!"
        !           119:   exit 1
        !           120: fi
        !           121: if test "$am4te_version" = "$ac_version"; then
        !           122:   echo "buildconf: autom4te version $am4te_version (ok)"
        !           123: else
        !           124:   echo "buildconf: autom4te version $am4te_version (ERROR: does not match autoconf version)"
        !           125:   exit 1
        !           126: fi
        !           127: 
        !           128: #--------------------------------------------------------------------------
        !           129: # autoheader 2.50 or newer
        !           130: #
        !           131: ah_version=`${AUTOHEADER:-autoheader} --version 2>/dev/null|head -n 1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
        !           132: if test -z "$ah_version"; then
        !           133:   echo "buildconf: autoheader not found."
        !           134:   echo "            You need autoheader version 2.50 or newer installed."
        !           135:   exit 1
        !           136: fi
        !           137: old_IFS=$IFS; IFS='.'; set $ah_version; IFS=$old_IFS
        !           138: if test "$1" = "2" -a "$2" -lt "50" || test "$1" -lt "2"; then
        !           139:   echo "buildconf: autoheader version $ah_version found."
        !           140:   echo "            You need autoheader version 2.50 or newer installed."
        !           141:   echo "            If you have a sufficient autoheader installed, but it"
        !           142:   echo "            is not named 'autoheader', then try setting the"
        !           143:   echo "            AUTOHEADER environment variable."
        !           144:   exit 1
        !           145: fi
        !           146: 
        !           147: echo "buildconf: autoheader version $ah_version (ok)"
        !           148: 
        !           149: #--------------------------------------------------------------------------
        !           150: # automake 1.7 or newer
        !           151: #
        !           152: need_automake="1.7"
        !           153: am_version=`${AUTOMAKE:-automake} --version 2>/dev/null|head -n 1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//' -e 's/\(.*\)\(-p.*\)/\1/'`
        !           154: if test -z "$am_version"; then
        !           155:   echo "buildconf: automake not found."
        !           156:   echo "            You need automake version $need_automake or newer installed."
        !           157:   exit 1
        !           158: fi
        !           159: old_IFS=$IFS; IFS='.'; set $am_version; IFS=$old_IFS
        !           160: if test "$1" = "1" -a "$2" -lt "7" || test "$1" -lt "1"; then
        !           161:   echo "buildconf: automake version $am_version found."
        !           162:   echo "            You need automake version $need_automake or newer installed."
        !           163:   echo "            If you have a sufficient automake installed, but it"
        !           164:   echo "            is not named 'automake', then try setting the"
        !           165:   echo "            AUTOMAKE environment variable."
        !           166:   exit 1
        !           167: fi
        !           168: 
        !           169: echo "buildconf: automake version $am_version (ok)"
        !           170: 
        !           171: acloc_version=`${ACLOCAL:-aclocal} --version 2>/dev/null|head -n 1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//' -e 's/\(.*\)\(-p.*\)/\1/'`
        !           172: if test -z "$acloc_version"; then
        !           173:   echo "buildconf: aclocal not found. Weird automake installation!"
        !           174:   exit 1
        !           175: fi
        !           176: if test "$acloc_version" = "$am_version"; then
        !           177:   echo "buildconf: aclocal version $acloc_version (ok)"
        !           178: else
        !           179:   echo "buildconf: aclocal version $acloc_version (ERROR: does not match automake version)"
        !           180:   exit 1
        !           181: fi
        !           182: 
        !           183: #--------------------------------------------------------------------------
        !           184: # GNU libtoolize preliminary check
        !           185: #
        !           186: want_lt_major=1
        !           187: want_lt_minor=4
        !           188: want_lt_patch=2
        !           189: want_lt_version=1.4.2
        !           190: 
        !           191: # This approach that tries 'glibtoolize' first is intended for systems that
        !           192: # have GNU libtool named as 'glibtoolize' and libtoolize not being GNU's.
        !           193: 
        !           194: libtoolize=`findtool glibtoolize 2>/dev/null`
        !           195: if test ! -x "$libtoolize"; then
        !           196:   libtoolize=`findtool ${LIBTOOLIZE:-libtoolize}`
        !           197: fi
        !           198: if test -z "$libtoolize"; then
        !           199:   echo "buildconf: libtoolize not found."
        !           200:   echo "  You need GNU libtoolize $want_lt_version or newer installed."
        !           201:   exit 1
        !           202: fi
        !           203: 
        !           204: lt_pver=`$libtoolize --version 2>/dev/null|head -n 1`
        !           205: lt_qver=`echo $lt_pver|sed -e "s/([^)]*)//g" -e "s/^[^0-9]*//g"`
        !           206: lt_version=`echo $lt_qver|sed -e "s/[- ].*//" -e "s/\([a-z]*\)$//"`
        !           207: if test -z "$lt_version"; then
        !           208:   echo "buildconf: libtoolize not found."
        !           209:   echo "  You need GNU libtoolize $want_lt_version or newer installed."
        !           210:   exit 1
        !           211: fi
        !           212: old_IFS=$IFS; IFS='.'; set $lt_version; IFS=$old_IFS
        !           213: lt_major=$1
        !           214: lt_minor=$2
        !           215: lt_patch=$3
        !           216: 
        !           217: if test -z "$lt_major"; then
        !           218:   lt_status="bad"
        !           219: elif test "$lt_major" -gt "$want_lt_major"; then
        !           220:   lt_status="good"
        !           221: elif test "$lt_major" -lt "$want_lt_major"; then
        !           222:   lt_status="bad"
        !           223: elif test -z "$lt_minor"; then
        !           224:   lt_status="bad"
        !           225: elif test "$lt_minor" -gt "$want_lt_minor"; then
        !           226:   lt_status="good"
        !           227: elif test "$lt_minor" -lt "$want_lt_minor"; then
        !           228:   lt_status="bad"
        !           229: elif test -z "$lt_patch"; then
        !           230:   lt_status="bad"
        !           231: elif test "$lt_patch" -gt "$want_lt_patch"; then
        !           232:   lt_status="good"
        !           233: elif test "$lt_patch" -lt "$want_lt_patch"; then
        !           234:   lt_status="bad"
        !           235: else
        !           236:   lt_status="good"
        !           237: fi
        !           238: if test "$lt_status" != "good"; then
        !           239:   echo "buildconf: libtoolize version $lt_version found."
        !           240:   echo "  You need GNU libtoolize $want_lt_version or newer installed."
        !           241:   exit 1
        !           242: fi
        !           243: 
        !           244: echo "buildconf: libtoolize version $lt_version (ok)"
        !           245: 
        !           246: #--------------------------------------------------------------------------
        !           247: # m4 check
        !           248: #
        !           249: m4=`(${M4:-m4} --version 0<&- || ${M4:-gm4} --version) 2>/dev/null 0<&- | head -n 1`;
        !           250: m4_version=`echo $m4 | sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//'`
        !           251: 
        !           252: if { echo $m4 | grep "GNU" >/dev/null 2>&1; } then
        !           253:   echo "buildconf: GNU m4 version $m4_version (ok)"
        !           254: else
        !           255:   if test -z "$m4"; then
        !           256:     echo "buildconf: m4 version not recognized. You need a GNU m4 installed!"
        !           257:   else
        !           258:     echo "buildconf: m4 version $m4 found. You need a GNU m4 installed!"
        !           259:   fi
        !           260:   exit 1
        !           261: fi
        !           262: 
        !           263: #--------------------------------------------------------------------------
        !           264: # perl check
        !           265: #
        !           266: PERL=`findtool ${PERL:-perl}`
        !           267: if test -z "$PERL"; then
        !           268:   echo "buildconf: perl not found"
        !           269:   exit 1
        !           270: fi
        !           271: 
        !           272: #--------------------------------------------------------------------------
        !           273: # Remove files generated on previous buildconf/configure run.
        !           274: #
        !           275: for fname in .deps \
        !           276:     .libs \
        !           277:     *.la \
        !           278:     *.lo \
        !           279:     *.a \
        !           280:     *.o \
        !           281:     Makefile \
        !           282:     Makefile.in \
        !           283:     aclocal.m4 \
        !           284:     aclocal.m4.bak \
        !           285:     autom4te.cache \
        !           286:     compile \
        !           287:     config.guess \
        !           288:     curl_config.h \
        !           289:     curl_config.h.in \
        !           290:     config.log \
        !           291:     config.lt \
        !           292:     config.status \
        !           293:     config.sub \
        !           294:     configure \
        !           295:     configurehelp.pm \
        !           296:     curl-config \
        !           297:     depcomp \
        !           298:     libcares.pc \
        !           299:     libcurl.pc \
        !           300:     libtool \
        !           301:     libtool.m4 \
        !           302:     libtool.m4.tmp \
        !           303:     ltmain.sh \
        !           304:     ltoptions.m4 \
        !           305:     ltsugar.m4 \
        !           306:     ltversion.m4 \
        !           307:     lt~obsolete.m4 \
        !           308:     missing \
        !           309:     install-sh \
        !           310:     stamp-h1 \
        !           311:     stamp-h2 \
        !           312:     stamp-h3 ; do
        !           313:   removethis "$fname"
        !           314: done
        !           315: 
        !           316: #--------------------------------------------------------------------------
        !           317: # run the correct scripts now
        !           318: #
        !           319: 
        !           320: echo "buildconf: running libtoolize"
        !           321: ${libtoolize} --copy --force || die "libtoolize command failed"
        !           322: 
        !           323: # When using libtool 1.5.X (X < 26) we copy libtool.m4 to our local m4
        !           324: # subdirectory and this local copy is patched to fix some warnings that
        !           325: # are triggered when running aclocal and using autoconf 2.62 or later.
        !           326: 
        !           327: if test "$lt_major" = "1" && test "$lt_minor" = "5"; then
        !           328:   if test -z "$lt_patch" || test "$lt_patch" -lt "26"; then
        !           329:     echo "buildconf: copying libtool.m4 to local m4 subdir"
        !           330:     ac_dir=`${ACLOCAL:-aclocal} --print-ac-dir`
        !           331:     if test -f $ac_dir/libtool.m4; then
        !           332:       cp -f $ac_dir/libtool.m4 m4/libtool.m4
        !           333:     else
        !           334:       echo "buildconf: $ac_dir/libtool.m4 not found"
        !           335:     fi
        !           336:     if test -f m4/libtool.m4; then
        !           337:       echo "buildconf: renaming some variables in local m4/libtool.m4"
        !           338:       $PERL -i.tmp -pe \
        !           339:         's/lt_prog_compiler_pic_works/lt_cv_prog_compiler_pic_works/g; \
        !           340:          s/lt_prog_compiler_static_works/lt_cv_prog_compiler_static_works/g;' \
        !           341:         m4/libtool.m4
        !           342:       rm -f m4/libtool.m4.tmp
        !           343:     fi
        !           344:   fi
        !           345: fi
        !           346: 
        !           347: if test -f m4/libtool.m4; then
        !           348:   echo "buildconf: converting all mv to mv -f in local m4/libtool.m4"
        !           349:   $PERL -i.tmp -pe 's/\bmv +([^-\s])/mv -f $1/g' m4/libtool.m4
        !           350:   rm -f m4/libtool.m4.tmp
        !           351: fi
        !           352: 
        !           353: echo "buildconf: running aclocal"
        !           354: ${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS || die "aclocal command failed"
        !           355: 
        !           356: echo "buildconf: converting all mv to mv -f in local aclocal.m4"
        !           357: $PERL -i.bak -pe 's/\bmv +([^-\s])/mv -f $1/g' aclocal.m4
        !           358: 
        !           359: echo "buildconf: running autoheader"
        !           360: ${AUTOHEADER:-autoheader} || die "autoheader command failed"
        !           361: 
        !           362: echo "buildconf: running autoconf"
        !           363: ${AUTOCONF:-autoconf} || die "autoconf command failed"
        !           364: 
        !           365: if test -d ares; then
        !           366:   cd ares
        !           367:   echo "buildconf: running in ares"
        !           368:   ./buildconf
        !           369:   cd ..
        !           370: fi
        !           371: 
        !           372: echo "buildconf: running automake"
        !           373: ${AUTOMAKE:-automake} --add-missing --copy || die "automake command failed"
        !           374: 
        !           375: #--------------------------------------------------------------------------
        !           376: # GNU libtool complementary check
        !           377: #
        !           378: # Depending on the libtool and automake versions being used, config.guess
        !           379: # might not be installed in the subdirectory until automake has finished.
        !           380: # So we can not attempt to use it until this very last buildconf stage.
        !           381: #
        !           382: if test ! -f ./config.guess; then
        !           383:   echo "buildconf: config.guess not found"
        !           384: else
        !           385:   buildhost=`./config.guess 2>/dev/null|head -n 1`
        !           386:   case $buildhost in
        !           387:     *-*-darwin*)
        !           388:       need_lt_major=1
        !           389:       need_lt_minor=5
        !           390:       need_lt_patch=26
        !           391:       need_lt_check="yes"
        !           392:       ;;
        !           393:     *-*-hpux*)
        !           394:       need_lt_major=1
        !           395:       need_lt_minor=5
        !           396:       need_lt_patch=24
        !           397:       need_lt_check="yes"
        !           398:       ;;
        !           399:   esac
        !           400:   if test ! -z "$need_lt_check"; then
        !           401:     if test -z "$lt_major"; then
        !           402:       lt_status="bad"
        !           403:     elif test "$lt_major" -gt "$need_lt_major"; then
        !           404:       lt_status="good"
        !           405:     elif test "$lt_major" -lt "$need_lt_major"; then
        !           406:       lt_status="bad"
        !           407:     elif test -z "$lt_minor"; then
        !           408:       lt_status="bad"
        !           409:     elif test "$lt_minor" -gt "$need_lt_minor"; then
        !           410:       lt_status="good"
        !           411:     elif test "$lt_minor" -lt "$need_lt_minor"; then
        !           412:       lt_status="bad"
        !           413:     elif test -z "$lt_patch"; then
        !           414:       lt_status="bad"
        !           415:     elif test "$lt_patch" -gt "$need_lt_patch"; then
        !           416:       lt_status="good"
        !           417:     elif test "$lt_patch" -lt "$need_lt_patch"; then
        !           418:       lt_status="bad"
        !           419:     else
        !           420:       lt_status="good"
        !           421:     fi
        !           422:     if test "$lt_status" != "good"; then
        !           423:       need_lt_version="$need_lt_major.$need_lt_minor.$need_lt_patch"
        !           424:       echo "buildconf: libtool version $lt_version found."
        !           425:       echo "            $buildhost requires GNU libtool $need_lt_version or newer installed."
        !           426:       rm -f configure
        !           427:       exit 1
        !           428:     fi
        !           429:   fi
        !           430: fi
        !           431: 
        !           432: #--------------------------------------------------------------------------
        !           433: # Finished successfully.
        !           434: #
        !           435: echo "buildconf: OK"
        !           436: exit 0

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>