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>