File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / buildconf
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 10:01:14 2020 UTC (4 years ago) by misho
Branches: curl, MAIN
CVS tags: v7_70_0p4, HEAD
curl

    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>