Text::Markdown::Discount
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1734 lines
34 KiB

  1. # @(#) configure.inc 1.42@(#)
  2. # Copyright (c) 1999-2007 David Parsons. All rights reserved.
  3. #
  4. # Redistribution and use in source and binary forms, with or without
  5. # modification, are permitted provided that the following conditions
  6. # are met:
  7. # 1. Redistributions of source code must retain the above copyright
  8. # notice, this list of conditions and the following disclaimer.
  9. # 2. Redistributions in binary form must reproduce the above copyright
  10. # notice, this list of conditions and the following disclaimer in
  11. # the documentation and/or other materials provided with the
  12. # distribution.
  13. # 3. My name may not be used to endorse or promote products derived
  14. # from this software without specific prior written permission.
  15. #
  16. # THIS SOFTWARE IS PROVIDED BY DAVID PARSONS ``AS IS'' AND ANY
  17. # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  18. # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
  19. # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAVID
  20. # PARSONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  21. # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
  22. # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  23. # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  24. # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  25. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  26. # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  27. # THE POSSIBILITY OF SUCH DAMAGE.
  28. #
  29. #
  30. # this preamble code is executed when this file is sourced and it picks
  31. # interesting things off the command line.
  32. #
  33. ac_default_path="/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin"
  34. ac_standard="--src=DIR where the source lives (.)
  35. --prefix=DIR where to install the final product (/usr/local)
  36. --execdir=DIR where to put executables (prefix/bin)
  37. --sbindir=DIR where to put static executables (prefix/sbin)
  38. --confdir=DIR where to put configuration information (/etc)
  39. --libdir=DIR where to put libraries (prefix/lib)
  40. --libexecdir=DIR where to put private executables
  41. --mandir=DIR where to put manpages"
  42. __fail=exit
  43. if dirname B/A 2>/dev/null >/dev/null; then
  44. __ac_dirname() {
  45. dirname "$1"
  46. }
  47. else
  48. __ac_dirname() {
  49. echo "$1" | sed -e 's:/[^/]*$::'
  50. }
  51. fi
  52. __remove() {
  53. if [ \( -x "$1" \) -a "$__MACOS_DSYM" ]; then
  54. rm -rf "$1".dSYM
  55. fi
  56. rm -f "$@"
  57. }
  58. ac_progname=$0
  59. ac_configure_command=
  60. Q=\'
  61. for x in "$@"; do
  62. ac_configure_command="$ac_configure_command $Q$x$Q"
  63. done
  64. # ac_configure_command="$*"
  65. __d=`__ac_dirname "$ac_progname"`
  66. if [ "$__d" = "$ac_progname" ]; then
  67. AC_SRCDIR=`pwd`
  68. else
  69. AC_SRCDIR=`cd $__d;pwd`
  70. fi
  71. __ac_dir() {
  72. if test -d "$1"; then
  73. (cd "$1";pwd)
  74. else
  75. echo "$1";
  76. fi
  77. }
  78. #
  79. # echo w/o newline
  80. #
  81. echononl()
  82. {
  83. ${ac_echo:-echo} "${@}$ac_echo_nonl"
  84. }
  85. #
  86. # log something to the terminal and to a logfile.
  87. #
  88. LOG () {
  89. echo "$@"
  90. echo "$@" 1>&5
  91. }
  92. #
  93. # log something to the terminal without a newline, and to a logfile with
  94. # a newline
  95. #
  96. LOGN () {
  97. echononl "$@" 1>&5
  98. echo "$@"
  99. }
  100. #
  101. # log something to the terminal
  102. #
  103. TLOG () {
  104. echo "$@" 1>&5
  105. }
  106. #
  107. # log something to the terminal, no newline
  108. #
  109. TLOGN () {
  110. echononl "$@" 1>&5
  111. }
  112. #
  113. # AC_CONTINUE tells configure not to bomb if something fails, but to
  114. # continue blithely along
  115. #
  116. AC_CONTINUE () {
  117. __fail="return"
  118. }
  119. #
  120. # generate a .o file from sources
  121. #
  122. __MAKEDOTO() {
  123. AC_PROG_CC
  124. if $AC_CC -c -o ngc$$.o "$@" $AC_LIBS 2>ngc$$.err; then
  125. __remove ngc$$.o ngc$$.err
  126. TLOG " (found)"
  127. return 0
  128. fi
  129. __remove ngc$$.o
  130. TLOG " (not found)"
  131. echo "test failed: command was $AC_CC -c -o ngc$$.o" "$@" $AC_LIBS
  132. echo "output:"
  133. cat ngc$$.err
  134. __remove ngc$$.err
  135. echo "offending sources:"
  136. for x in "$@"; do
  137. echo "$x:"
  138. cat $x
  139. done
  140. return 1
  141. }
  142. #
  143. # Emulate gnu autoconf's AC_CHECK_HEADERS() function
  144. #
  145. AC_CHECK_HEADERS () {
  146. echo "/* AC_CHECK_HEADERS */" > ngc$$.c
  147. for hdr in $*; do
  148. echo "#include <$hdr>" >> ngc$$.c
  149. done
  150. echo "main() { }" >> ngc$$.c
  151. LOGN "looking for header $hdr"
  152. if __MAKEDOTO ngc$$.c; then
  153. AC_DEFINE 'HAVE_'`echo $hdr | $AC_UPPERCASE | tr './' '_'` 1
  154. rc=0
  155. else
  156. rc=1
  157. fi
  158. __remove ngc$$.c
  159. return $rc
  160. }
  161. #
  162. # emulate GNU autoconf's AC_CHECK_FUNCS function
  163. #
  164. AC_CHECK_FUNCS () {
  165. AC_PROG_CC
  166. B=`echo "$1" | sed -e 's/(.*)//'`
  167. case "$B" in
  168. "$1") F="$1()"; need_proto=1 ;;
  169. *) F="$1" ; unset need_proto ;;
  170. esac
  171. shift
  172. __remove ngc$$.c
  173. while [ "$1" ]; do
  174. echo "#include <$1>" >> ngc$$.c
  175. shift
  176. done
  177. if [ "$need_proto" ]; then
  178. echo "void $F;" >> ngc$$.c
  179. fi
  180. cat >> ngc$$.c << EOF
  181. main()
  182. {
  183. $F;
  184. }
  185. EOF
  186. LOGN "looking for the $B function"
  187. if $AC_CC -o ngc$$ ngc$$.c $LIBS; then
  188. AC_DEFINE `echo ${2:-HAVE_$B} | $AC_UPPERCASE` 1
  189. TLOG " (found)"
  190. rc=0
  191. else
  192. echo "offending command was:"
  193. cat ngc$$.c
  194. echo "$AC_CC -o ngc$$ ngc$$.c $LIBS"
  195. TLOG " (not found)"
  196. rc=1
  197. fi
  198. __remove ngc$$ ngc$$.c
  199. return $rc
  200. }
  201. #
  202. # check to see if some structure exists
  203. #
  204. # usage: AC_CHECK_STRUCT structure {include ...}
  205. #
  206. AC_CHECK_STRUCT () {
  207. struct=$1
  208. shift
  209. __remove ngc$$.c
  210. for include in $*; do
  211. echo "#include <$include>" >> ngc$$.c
  212. done
  213. cat >> ngc$$.c << EOF
  214. main()
  215. {
  216. struct $struct foo;
  217. }
  218. EOF
  219. LOGN "looking for struct $struct"
  220. if __MAKEDOTO ngc$$.c; then
  221. AC_DEFINE HAVE_STRUCT_`echo ${struct} | $AC_UPPERCASE`
  222. rc=0
  223. else
  224. rc=1
  225. fi
  226. __remove ngc$$.c
  227. return $rc
  228. }
  229. #
  230. # check to see if some type exists
  231. #
  232. # usage: AC_CHECK_TYPE type {include ...}
  233. #
  234. AC_CHECK_TYPE () {
  235. type=$1
  236. shift
  237. __remove ngc$$.c
  238. for include in $*; do
  239. echo "#include <$include>" >> ngc$$.c
  240. done
  241. cat >> ngc$$.c << EOF
  242. main()
  243. {
  244. $type foo;
  245. }
  246. EOF
  247. LOGN "looking for $type type"
  248. if __MAKEDOTO ngc$$.c; then
  249. AC_DEFINE HAVE_TYPE_`echo ${type} | $AC_UPPERCASE`
  250. rc=0
  251. else
  252. rc=1
  253. fi
  254. __remove ngc$$.c
  255. return $rc
  256. }
  257. #
  258. # check to see if some structure contains a field
  259. #
  260. # usage: AC_CHECK_FIELD structure field {include ...}
  261. #
  262. AC_CHECK_FIELD () {
  263. struct=$1
  264. field=$2
  265. shift 2
  266. __remove ngc$$.c
  267. for include in $*;do
  268. echo "#include <$include>" >> ngc$$.c
  269. done
  270. cat >> ngc$$.c << EOF
  271. main()
  272. {
  273. struct $struct foo;
  274. foo.$field;
  275. }
  276. EOF
  277. LOGN "checking that struct $struct has a $field field"
  278. if __MAKEDOTO ngc$$.c; then
  279. AC_DEFINE HAVE_`echo ${struct}_$field | $AC_UPPERCASE`
  280. rc=0
  281. else
  282. rc=1
  283. fi
  284. __remove ngc$$.c
  285. return $rc
  286. }
  287. #
  288. # check that the C compiler works
  289. #
  290. AC_PROG_CC () {
  291. test "$AC_CC" && return 0
  292. cat > ngc$$.c << \EOF
  293. #include <stdio.h>
  294. main()
  295. {
  296. puts("hello, sailor");
  297. }
  298. EOF
  299. TLOGN "checking the C compiler"
  300. unset AC_CFLAGS AC_LDFLAGS
  301. if [ "$CC" ] ; then
  302. AC_CC="$CC"
  303. elif [ "$WITH_PATH" ]; then
  304. AC_CC=`acLookFor cc`
  305. elif [ "`acLookFor cc`" ]; then
  306. # don't specify the full path if the user is looking in their $PATH
  307. # for a C compiler.
  308. AC_CC=cc
  309. fi
  310. # finally check for POSIX c89
  311. test "$AC_CC" || AC_CC=`acLookFor c89`
  312. if [ ! "$AC_CC" ]; then
  313. TLOG " (no C compiler found)"
  314. $__fail 1
  315. fi
  316. echo "checking out the C compiler"
  317. unset __MACOS_DSYM
  318. $AC_CC -o ngc$$ ngc$$.c
  319. status=$?
  320. test -d ngc$$.dSYM && __MACOS_DSYM=1
  321. TLOGN " ($AC_CC)"
  322. if [ $status -eq 0 ]; then
  323. if $AC_CC -x c /dev/null -dM -E 2>&1 | grep '__clang__' >/dev/null; then
  324. TLOG " yuck, you're using clang"
  325. IS_CLANG=T
  326. IS_BROKEN_CC=T
  327. elif $AC_CC -v 2>&1 | grep 'gcc version' >/dev/null; then
  328. TLOG " oh ick, it looks like gcc"
  329. IS_GCC=T
  330. IS_BROKEN_CC=T
  331. else
  332. TLOG " ok"
  333. fi
  334. # check that the CFLAGS and LDFLAGS aren't bogus
  335. unset AC_CFLAGS AC_LDFLAGS
  336. if [ "$CFLAGS" ]; then
  337. test "$CFLAGS" && echo "validating CFLAGS=${CFLAGS}"
  338. if $AC_CC $CFLAGS -o ngc$$.o ngc$$.c ; then
  339. AC_CFLAGS=${CFLAGS:-"-g"}
  340. test "$CFLAGS" && echo "CFLAGS=\"${CFLAGS}\" are okay"
  341. elif [ "$CFLAGS" ]; then
  342. echo "ignoring bogus CFLAGS=\"${CFLAGS}\""
  343. fi
  344. else
  345. AC_CFLAGS=-g
  346. fi
  347. if [ "$LDFLAGS" ]; then
  348. test "$LDFLAGS" && echo "validating LDFLAGS=${LDFLAGS}"
  349. if $AC_CC $LDFLAGS -o ngc$$ ngc$$.o; then
  350. AC_LDFLAGS=${LDFLAGS:-"-g"}
  351. test "$LDFLAGS" && TLOG "LDFLAGS=\"${LDFLAGS}\" are okay"
  352. elif [ "$LDFLAGS" ]; then
  353. TLOG "ignoring bogus LDFLAGS=\"${LDFLAGS}\""
  354. fi
  355. else
  356. AC_LDFLAGS=${CFLAGS:-"-g"}
  357. fi
  358. else
  359. AC_FAIL " does not compile code properly"
  360. fi
  361. __remove ngc$$ ngc$$.c ngc$$.o
  362. return $status
  363. }
  364. #
  365. # acLookFor actually looks for a program, without setting anything.
  366. #
  367. acLookFor () {
  368. path=${AC_PATH:-$ac_default_path}
  369. case "X$1" in
  370. X-[rx]) __mode=$1
  371. shift
  372. ;;
  373. *) __mode=-x
  374. ;;
  375. esac
  376. oldifs="$IFS"
  377. for program in $*; do
  378. IFS=":"
  379. for x in $path; do
  380. if [ $__mode $x/$program -a -f $x/$program ]; then
  381. echo $x/$program
  382. break 2
  383. fi
  384. done
  385. done
  386. IFS="$oldifs"
  387. unset __mode
  388. }
  389. #
  390. # check that a program exists and set its path
  391. #
  392. MF_PATH_INCLUDE () {
  393. SYM=$1; shift
  394. case X$1 in
  395. X-[rx]) __mode=$1
  396. shift
  397. ;;
  398. *) unset __mode
  399. ;;
  400. esac
  401. TLOGN "looking for $1"
  402. DEST=`acLookFor $__mode $*`
  403. __sym=`echo "$SYM" | $AC_UPPERCASE`
  404. if [ "$DEST" ]; then
  405. TLOG " ($DEST)"
  406. echo "$1 is $DEST"
  407. AC_MAK $SYM
  408. AC_DEFINE PATH_$__sym \""$DEST"\"
  409. AC_SUB $__sym "$DEST"
  410. eval CF_$SYM=$DEST
  411. return 0
  412. else
  413. #AC_SUB $__sym ''
  414. echo "$1 is not found"
  415. TLOG " (not found)"
  416. return 1
  417. fi
  418. }
  419. #
  420. # AC_INIT starts the ball rolling
  421. #
  422. # After AC_INIT, fd's 1 and 2 point to config.log
  423. # and fd 5 points to what used to be fd 1
  424. #
  425. AC_INIT () {
  426. __config_files="config.cmd config.sub config.h config.mak config.log"
  427. rm -f $__config_files
  428. __cwd=`pwd`
  429. exec 5>&1 1>$__cwd/config.log 2>&1
  430. AC_CONFIGURE_FOR=__AC_`echo $1 | sed -e 's/\..$//' | $AC_UPPERCASE | tr ' ' '_'`_D
  431. # check to see whether to use echo -n or echo ...\c
  432. #
  433. echo -n hello > $$
  434. echo world >> $$
  435. if grep "helloworld" $$ >/dev/null; then
  436. ac_echo="echo -n"
  437. echo "[echo -n] works"
  438. else
  439. ac_echo="echo"
  440. echo 'hello\c' > $$
  441. echo 'world' >> $$
  442. if grep "helloworld" $$ >/dev/null; then
  443. ac_echo_nonl='\c'
  444. echo "[echo ...\\c] works"
  445. fi
  446. fi
  447. rm -f $$
  448. LOG "Configuring for [$1]"
  449. cat > $__cwd/config.h << EOF
  450. /*
  451. * configuration for $1${2:+" ($2)"}, generated `date`
  452. * by ${LOGNAME:-`whoami`}@`hostname`
  453. */
  454. #ifndef $AC_CONFIGURE_FOR
  455. #define $AC_CONFIGURE_FOR 1
  456. EOF
  457. unset __share
  458. if [ -d $AC_PREFIX/share/man ]; then
  459. for t in 1 2 3 4 5 6 7 8 9; do
  460. if [ -d $AC_PREFIX/share/man/man$t ]; then
  461. __share=/share
  462. elif [ -d $AC_PREFIX/share/man/cat$t ]; then
  463. __share=/share
  464. fi
  465. done
  466. else
  467. __share=
  468. fi
  469. if [ -d $AC_PREFIX/libexec ]; then
  470. __libexec=libexec
  471. else
  472. __libexec=lib
  473. fi
  474. AC_PREFIX=${AC_PREFIX:-/usr/local}
  475. AC_EXECDIR=${AC_EXECDIR:-$AC_PREFIX/bin}
  476. AC_SBINDIR=${AC_SBINDIR:-$AC_PREFIX/sbin}
  477. AC_LIBDIR=${AC_LIBDIR:-$AC_PREFIX/lib}
  478. AC_MANDIR=${AC_MANDIR:-$AC_PREFIX$__share/man}
  479. AC_LIBEXEC=${AC_LIBEXEC:-$AC_PREFIX/$__libexec}
  480. AC_CONFDIR=${AC_CONFDIR:-/etc}
  481. AC_PATH=${WITH_PATH:-$PATH}
  482. AC_PROG_CPP
  483. AC_PROG_INSTALL
  484. ac_os=`uname -s`
  485. _os=`echo $ac_os | $AC_UPPERCASE | sed -e 's/[^A-Z0-9_].*$//'`
  486. AC_DEFINE OS_$_os 1
  487. eval OS_${_os}=1
  488. unset _os
  489. }
  490. #
  491. # AC_LIBRARY checks to see if a given library exists and contains the
  492. # given function.
  493. # usage: AC_LIBRARY function library [alternate ...]
  494. #
  495. AC_LIBRARY() {
  496. SRC=$1
  497. shift
  498. __acllibs=
  499. __aclhdrs=
  500. for x in "$@"; do
  501. case X"$x" in
  502. X-l*) __acllibs="$__acllibs $x" ;;
  503. *) __aclhdrs="$__aclhdrs $x" ;;
  504. esac
  505. done
  506. # first see if the function can be found in any of the
  507. # current libraries
  508. AC_QUIET AC_CHECK_FUNCS $SRC $__aclhdrs && return 0
  509. # then search through the list of libraries
  510. __libs="$LIBS"
  511. for x in $__acllibs; do
  512. LIBS="$__libs $x"
  513. if AC_QUIET AC_CHECK_FUNCS $SRC $__aclhdrs; then
  514. AC_LIBS="$AC_LIBS $x"
  515. return 0
  516. fi
  517. done
  518. return 1
  519. }
  520. #
  521. # AC_PROG_LEX checks to see if LEX exists, and if it's lex or flex.
  522. #
  523. AC_PROG_LEX() {
  524. TLOGN "looking for lex "
  525. DEST=`acLookFor lex`
  526. if [ "$DEST" ]; then
  527. AC_MAK LEX
  528. AC_DEFINE PATH_LEX \"$DEST\"
  529. AC_SUB 'LEX' "$DEST"
  530. echo "lex is $DEST"
  531. else
  532. DEST=`acLookFor flex`
  533. if [ "$DEST" ]; then
  534. AC_MAK FLEX
  535. AC_DEFINE 'LEX' \"$DEST\"
  536. AC_SUB 'LEX', "$DEST"
  537. echo "lex is $DEST"
  538. else
  539. AC_SUB LEX ''
  540. echo "neither lex or flex found"
  541. TLOG " (not found)"
  542. return 1
  543. fi
  544. fi
  545. if AC_LIBRARY yywrap -ll -lfl; then
  546. TLOG "($DEST)"
  547. return 0
  548. fi
  549. TLOG "(no lex library found)"
  550. return 1
  551. }
  552. #
  553. # AC_PROG_YACC checks to see if YACC exists, and if it's bison or
  554. # not.
  555. #
  556. AC_PROG_YACC () {
  557. TLOGN "looking for yacc "
  558. DEST=`acLookFor yacc`
  559. if [ "$DEST" ]; then
  560. AC_MAK YACC
  561. AC_DEFINE PATH_YACC \"$DEST\"
  562. AC_SUB 'YACC' "$DEST"
  563. TLOG "($DEST)"
  564. echo "yacc is $DEST"
  565. else
  566. DEST=`acLookFor bison`
  567. if [ "$DEST" ]; then
  568. AC_MAK BISON
  569. AC_DEFINE 'YACC' \"$DEST\"
  570. AC_SUB 'YACC' "$DEST -y"
  571. echo "yacc is $DEST -y"
  572. TLOG "($DEST -y)"
  573. else
  574. AC_SUB 'YACC' ''
  575. echo "neither yacc or bison found"
  576. TLOG " (not found)"
  577. return 1
  578. fi
  579. fi
  580. return 0
  581. }
  582. #
  583. # AC_PROG looks for a program
  584. #
  585. AC_PROG () {
  586. PN=`basename $1 | $AC_UPPERCASE | tr -dc $AC_UPPER_PAT`
  587. if set | grep -v PROG_$PN >/dev/null; then
  588. TLOGN "looking for $1"
  589. DEST=`acLookFor $1`
  590. if [ "$DEST" ]; then
  591. eval PROG_$PN="$DEST"
  592. AC_SUB $PN $DEST
  593. TLOG " ($DEST)"
  594. return 0
  595. fi
  596. AC_SUB $PN true
  597. TLOG " (not found)"
  598. return 1
  599. fi
  600. }
  601. #
  602. # AC_PROG_LN_S checks to see if ln exists, and, if so, if ln -s works
  603. #
  604. AC_PROG_LN_S () {
  605. test "$AC_FIND_PROG" || AC_PROG_FIND
  606. test "$AC_FIND_PROG" || return 1
  607. TLOGN "looking for \"ln -s\""
  608. DEST=`acLookFor ln`
  609. if [ "$DEST" ]; then
  610. rm -f /tmp/b$$
  611. $DEST -s /tmp/a$$ /tmp/b$$
  612. if [ "`$AC_FIND_PROG /tmp/b$$ -type l -print`" ]; then
  613. TLOG " ($DEST)"
  614. echo "$DEST exists, and ln -s works"
  615. PROG_LN_S="$DEST -s"
  616. AC_SUB 'LN_S' "$DEST -s"
  617. rm -f /tmp/b$$
  618. else
  619. AC_SUB 'LN_S' ''
  620. TLOG " ($DEST exists, but -s does not seem to work)"
  621. echo "$DEST exists, but ln -s doesn't seem to work"
  622. rm -f /tmp/b$$
  623. return 1
  624. fi
  625. else
  626. AC_SUB 'LN_S' ''
  627. echo "ln not found"
  628. TLOG " (not found)"
  629. return 1
  630. fi
  631. }
  632. #
  633. # AC_PROG_FIND looks for the find program and sets the FIND environment
  634. # variable
  635. #
  636. AC_PROG_FIND () {
  637. if test -z "$AC_FIND_PROG"; then
  638. MF_PATH_INCLUDE FIND find
  639. rc=$?
  640. AC_FIND_PROG=$DEST
  641. return $rc
  642. fi
  643. return 0
  644. }
  645. #
  646. # AC_PROG_AWK looks for the awk program and sets the AWK environment
  647. # variable
  648. #
  649. AC_PROG_AWK () {
  650. if test -z "$AC_AWK_PROG"; then
  651. MF_PATH_INCLUDE AWK awk
  652. rc=$?
  653. AC_AWK_PROG=$DEST
  654. return $rc
  655. fi
  656. return 0
  657. }
  658. #
  659. # AC_PROG_SED looks for the sed program and sets the SED environment
  660. # variable
  661. #
  662. AC_PROG_SED () {
  663. if test -z "$AC_SED_PROG"; then
  664. MF_PATH_INCLUDE SED sed
  665. rc=$?
  666. AC_SED_PROG=$DEST
  667. return $rc
  668. fi
  669. return 0
  670. }
  671. #
  672. # AC_HEADER_SYS_WAIT looks for sys/wait.h
  673. #
  674. AC_HEADER_SYS_WAIT () {
  675. AC_CHECK_HEADERS sys/wait.h || return 1
  676. }
  677. #
  678. # AC_TYPE_PID_T checks to see if the pid_t type exists
  679. #
  680. AC_TYPE_PID_T () {
  681. AC_CHECK_TYPE pid_t sys/types.h
  682. return $?
  683. }
  684. #
  685. # AC_C_CONST checks to see if the compiler supports the const keyword
  686. #
  687. AC_C_CONST () {
  688. cat > ngc$$.c << EOF
  689. const char me=1;
  690. EOF
  691. LOGN "checking for \"const\" keyword"
  692. if __MAKEDOTO ngc$$.c; then
  693. rc=0
  694. else
  695. AC_DEFINE 'const' '/**/'
  696. rc=1
  697. fi
  698. __remove ngc$$.c
  699. return $rc
  700. }
  701. #
  702. # AC_C_VOLATILE checks to see if the compiler supports the volatile keyword
  703. #
  704. AC_C_VOLATILE () {
  705. echo 'f() { volatile char me=1; }' > ngc$$.c
  706. LOGN "checking for \"volatile\" keyword"
  707. if __MAKEDOTO ngc$$.c; then
  708. rc=0
  709. else
  710. AC_DEFINE 'volatile' '/**/'
  711. rc=1
  712. fi
  713. __remove ngc$$.c
  714. return $rc
  715. }
  716. #
  717. # AC_C_INLINE checks to see if compiler supports the inline keyword
  718. #
  719. AC_C_INLINE() {
  720. echo 'inline int foo() { return 1; }' > ngc$$.c
  721. LOGN 'Checking for "inline" keyword'
  722. if __MAKEDOTO ngc$$.c; then
  723. rc=0
  724. else
  725. AC_DEFINE inline '/**/'
  726. rc=1
  727. fi
  728. __remove ngc$$.c
  729. return $rc
  730. }
  731. #
  732. # AC_SCALAR_TYPES checks to see if the compiler can generate 2 and 4 byte ints.
  733. #
  734. AC_SCALAR_TYPES () {
  735. rc=1
  736. LOGN "defining WORD & DWORD scalar types"
  737. if AC_QUIET AC_CHECK_HEADERS WinDef.h; then
  738. # windows machine; BYTE, WORD, DWORD already
  739. # defined
  740. echo "#include <WinDef.h>" >> $__cwd/config.h
  741. TLOG " (defined in WinDef.h)"
  742. return 0
  743. fi
  744. cat > ngc$$.c << EOF
  745. #include <stdio.h>
  746. #include <string.h>
  747. int pound_define = 1;
  748. void
  749. say(char *w, char *v)
  750. {
  751. printf(pound_define ? "#define %s %s\n"
  752. : "s:@%s@:%s:g\n", w, v);
  753. }
  754. main(argc, argv)
  755. char **argv;
  756. {
  757. unsigned long v_long;
  758. unsigned int v_int;
  759. unsigned short v_short;
  760. if ( argc > 1 && strcmp(argv[1], "sub") == 0 )
  761. pound_define = 0;
  762. if (sizeof v_long == 4)
  763. say("DWORD", "unsigned long");
  764. else if (sizeof v_int == 4)
  765. say("DWORD", "unsigned int");
  766. else
  767. exit(1);
  768. if (sizeof v_int == 2)
  769. say("WORD", "unsigned int");
  770. else if (sizeof v_short == 2)
  771. say("WORD", "unsigned short");
  772. else
  773. exit(2);
  774. say("BYTE", "unsigned char");
  775. exit(0);
  776. }
  777. EOF
  778. if $AC_CC ngc$$.c -o ngc$$; then
  779. while [ "$1" ]; do
  780. case "$1" in
  781. sub)if ./ngc$$ sub >> $__cwd/config.sub; then
  782. rc=0
  783. fi;;
  784. *) if ./ngc$$ >> $__cwd/config.h; then
  785. rc=0
  786. fi ;;
  787. esac
  788. shift
  789. done
  790. if [ "$rc" != 0 ]; then
  791. if ./ngc$$ >> $__cwd/config.h; then
  792. rc=1
  793. fi
  794. fi
  795. fi
  796. __remove ngc$$ ngc$$.c
  797. case "$rc" in
  798. 0) TLOG "" ;;
  799. *) AC_FAIL " ** FAILED **" ;;
  800. esac
  801. return $rc
  802. }
  803. #
  804. # AC_OUTPUT generates makefiles from makefile.in's
  805. #
  806. AC_OUTPUT () {
  807. cd $__cwd
  808. AC_SUB 'LIBS' "$AC_LIBS"
  809. AC_SUB 'CONFIGURE_FILES' "$__config_files"
  810. AC_SUB 'GENERATED_FILES' "$*"
  811. AC_SUB 'CC' "$AC_CC"
  812. AC_SUB 'CFLAGS' "$AC_CFLAGS"
  813. AC_SUB 'LDFLAGS' "$AC_LDFLAGS"
  814. AC_SUB 'srcdir' "$AC_SRCDIR"
  815. AC_SUB 'prefix' "$AC_PREFIX"
  816. AC_SUB 'exedir' "$AC_EXECDIR"
  817. AC_SUB 'sbindir' "$AC_SBINDIR"
  818. AC_SUB 'libdir' "$AC_LIBDIR"
  819. AC_SUB 'libexec' "$AC_LIBEXEC"
  820. AC_SUB 'confdir' "$AC_CONFDIR"
  821. AC_SUB 'mandir' "$AC_MANDIR"
  822. if echo "$__config_files" | grep -v librarian.sh >/dev/null; then
  823. # write a librarian that works with static libraries
  824. if AC_PROG_LN_S ; then
  825. __dolink=$PROG_LN_S
  826. elif AC_PROG ln; then
  827. __dolink=$PROG_LN
  828. elif AC_PROG cp; then
  829. __dolink=$PROG_CP
  830. else
  831. __dolink=:
  832. fi
  833. AC_PROG ar
  834. AC_PROG ranlib
  835. AC_SUB LD_LIBRARY_PATH HERE
  836. AC
  837. __config_files="$__config_files librarian.sh"
  838. cat > librarian.sh << EOF
  839. #! /bin/sh
  840. #
  841. # Build static libraries, hiding (some) ickiness from the makefile
  842. ACTION=\$1; shift
  843. LIBRARY=\$1; shift
  844. VERSION=\$1; shift
  845. case "\$ACTION" in
  846. make) ${PROG_AR} crv \$LIBRARY.a "\$@"
  847. ${PROG_RANLIB} \$LIBRARY.a
  848. rm -f \$LIBRARY
  849. ${__dolink} \$LIBRARY.a \$LIBRARY
  850. ;;
  851. files) echo "\${LIBRARY}.a"
  852. ;;
  853. install)$PROG_INSTALL -m 644 \${LIBRARY}.a \$1
  854. ;;
  855. esac
  856. EOF
  857. fi
  858. chmod +x librarian.sh
  859. if [ -r config.sub ]; then
  860. test "$AC_SED_PROG" || AC_PROG_SED
  861. test "$AC_SED_PROG" || return 1
  862. echo >> config.h
  863. echo "#endif/* ${AC_CONFIGURE_FOR} */" >> config.h
  864. rm -f config.cmd
  865. Q=\'
  866. cat - > config.cmd << EOF
  867. #! /bin/sh
  868. ${CC:+CC=${Q}${CC}${Q}} ${CFLAGS:+CFLAGS=${Q}${CFLAGS}${Q}} $ac_progname $ac_configure_command
  869. EOF
  870. chmod +x config.cmd
  871. __d=$AC_SRCDIR
  872. for makefile in $*;do
  873. if test -r $__d/${makefile}.in; then
  874. LOG "generating $makefile"
  875. ./config.md `__ac_dirname ./$makefile` 2>/dev/null
  876. $AC_SED_PROG -f config.sub < $__d/${makefile}.in > $makefile
  877. __config_files="$__config_files $makefile"
  878. else
  879. LOG "WARNING: ${makefile}.in does not exist!"
  880. fi
  881. done
  882. unset __d
  883. else
  884. echo
  885. fi
  886. }
  887. #
  888. # AC_CHECK_FLOCK checks to see if flock() exists and if the LOCK_NB argument
  889. # works properly.
  890. #
  891. AC_CHECK_FLOCK() {
  892. AC_CHECK_HEADERS sys/types.h sys/file.h fcntl.h
  893. cat << EOF > ngc$$.c
  894. #include <stdio.h>
  895. #include <sys/file.h>
  896. #include <sys/types.h>
  897. #include <fcntl.h>
  898. main()
  899. {
  900. int x = open("$$.c", O_RDWR, 0666);
  901. int y = open("$$.c", O_RDWR, 0666);
  902. if (flock(x, LOCK_EX) != 0)
  903. exit(1);
  904. if (flock(y, LOCK_EX|LOCK_NB) == 0)
  905. exit(1);
  906. exit(0);
  907. }
  908. EOF
  909. LOGN "checking flock() sanity"
  910. HAS_FLOCK=0
  911. if $AC_CC -o ngc$$ ngc$$.c ; then
  912. if ./flock ; then
  913. LOG " (good)"
  914. HAS_FLOCK=1
  915. AC_DEFINE HAS_FLOCK
  916. else
  917. LOG " (bad)"
  918. fi
  919. else
  920. LOG " (not found)"
  921. fi
  922. __remove ngc$$ ngc$$.c
  923. case "$HAS_FLOCK" in
  924. 0) return 1 ;;
  925. *) return 0 ;;
  926. esac
  927. }
  928. #
  929. # AC_CHECK_RESOLVER finds out whether the berkeley resolver is
  930. # present on this system.
  931. #
  932. AC_CHECK_RESOLVER () {
  933. AC_PROG_CC
  934. TLOGN "looking for the Berkeley resolver library"
  935. __ACR_rc=0
  936. cat > ngc$$.c << EOF
  937. #include <sys/types.h>
  938. #include <netinet/in.h>
  939. #include <arpa/nameser.h>
  940. #include <resolv.h>
  941. main()
  942. {
  943. char bfr[256];
  944. res_init();
  945. res_query("hello", C_IN, T_A, bfr, sizeof bfr);
  946. }
  947. EOF
  948. if $AC_CC -o ngc$$ ngc$$.c; then
  949. TLOG " (found)"
  950. elif $AC_CC -o ngc$$ ngc$$.c -lresolv; then
  951. TLOG " (found, needs -lresolv)"
  952. AC_LIBS="$AC_LIBS -lresolv"
  953. elif $AC_CC -DBIND_8_COMPAT -o ngc$$ ngc$$.c; then
  954. TLOG " (found, needs BIND_8_COMPAT)"
  955. AC_DEFINE BIND_8_COMPAT 1
  956. elif $AC_CC -DBIND_8_COMPAT -o ngc$$ ngc$$.c -lresolv; then
  957. TLOG " (found, needs BIND_8_COMPAT & -lresolv)"
  958. AC_DEFINE BIND_8_COMPAT 1
  959. else
  960. TLOG " (not found)"
  961. __ACR_rc=1
  962. fi
  963. __remove ngc$$ ngc$$.c
  964. return $__ACR_rc
  965. }
  966. #
  967. # AC_CHECK_ALLOCA looks for alloca
  968. #
  969. AC_CHECK_ALLOCA () {
  970. AC_PROG_CC
  971. AC_CHECK_HEADERS stdlib.h
  972. cat - > ngc$$.c << EOF
  973. #if T
  974. # include <alloca.h>
  975. #else
  976. # include <stdlib.h>
  977. #endif
  978. main()
  979. {
  980. alloca(10);
  981. }
  982. EOF
  983. LOGN "looking for the alloca function"
  984. if $AC_CC -DT ngc$$.c -o ngc$$; then
  985. AC_DEFINE 'HAVE_ALLOCA_H' 1
  986. status=0
  987. TLOG " (found in alloca.h)"
  988. elif $AC_CC ngc$$.c -o ngc$$; then
  989. TLOG " (found)"
  990. status=0
  991. else
  992. TLOG " (not found)"
  993. status=1
  994. fi
  995. __remove ngc$$ ngc$$.c
  996. return $status
  997. }
  998. #
  999. # AC_CHECK_BASENAME looks for a copy of basename that does NOT use
  1000. # a local static buffer to hold results in.
  1001. #
  1002. AC_CHECK_BASENAME() {
  1003. TLOGN "looking for a reentrant basename "
  1004. cat > ngc$$.c << EOF
  1005. #include <string.h>
  1006. extern char *basename(char*);
  1007. main()
  1008. {
  1009. char *a = basename("/a/test");
  1010. char *b = basename("/a/nother");
  1011. return (strcmp(a,b) != 0) ? 0 : 1;
  1012. }
  1013. EOF
  1014. if $AC_CC -o ngc$$ ngc$$.c $LIBS; then
  1015. if ./ngc$$; then
  1016. TLOG "(found)"
  1017. AC_DEFINE 'HAVE_BASENAME' 1
  1018. AC_CHECK_HEADERS libgen.h
  1019. else
  1020. TLOG "(broken)"
  1021. fi
  1022. else
  1023. TLOG "(not found)"
  1024. fi
  1025. __remove ngc$$ ngc$$.c
  1026. }
  1027. #
  1028. # AC_COMPILER_PIC checks for the compiler option to produce position independent
  1029. # code. At the moment we assume gcc semantics.
  1030. #
  1031. AC_COMPILER_PIC () {
  1032. AC_PROG_CC
  1033. LOGN "checking for C compiler option to produce PIC "
  1034. echo "int some_variable = 0;" > ngc$$.c
  1035. if $AC_CC -c -fPIC -o ngc$$ ngc$$.c $LIBS; then
  1036. AC_CFLAGS="$AC_CFLAGS -fPIC"
  1037. LOG "(-fPIC)"
  1038. __rc=0
  1039. else
  1040. LOG "(none)"
  1041. __rc=1
  1042. fi
  1043. __remove ngc$$ ngc$$.c
  1044. return $__rc
  1045. }
  1046. # generate a macosX librarian
  1047. #
  1048. __AC_MACOS_LIBRARIAN() {
  1049. AC_SUB LD_LIBRARY_PATH DYLD_LIBRARY_PATH
  1050. __config_files="$__config_files librarian.sh"
  1051. cat > librarian.sh << EOF
  1052. #! /bin/sh
  1053. #
  1054. # Build MacOS shared libraries, hiding (some) ickiness from the makefile
  1055. ACTION=\$1; shift
  1056. LIBRARY=\$1; shift
  1057. eval \`awk -F. '{ printf "MAJOR=%d\n", \$1;
  1058. printf "VERSION=%d.%d.%d\n", \$1, \$2, \$3; }' \$1\`
  1059. shift
  1060. LIBNAME=\$LIBRARY.dylib
  1061. FULLNAME=\$LIBNAME
  1062. case "\$ACTION" in
  1063. make) FLAGS="$AC_CFLAGS -dynamiclib"
  1064. VFLAGS="-current_version \$VERSION -compatibility_version \$MAJOR"
  1065. rm -f \$LIBRARY
  1066. if $AC_CC \$FLAGS \$VFLAGS -o \$FULLNAME "\$@"; then
  1067. $PROG_LN_S \$FULLNAME \$LIBRARY
  1068. fi
  1069. ;;
  1070. files) echo "\$FULLNAME"
  1071. ;;
  1072. install)$PROG_INSTALL -c \$FULLNAME "\$1"
  1073. ;;
  1074. esac
  1075. EOF
  1076. chmod +x librarian.sh
  1077. }
  1078. # Generate an ELF librarian (for Linux, freebsd)
  1079. #
  1080. __AC_ELF_LIBRARIAN() {
  1081. AC_SUB LD_LIBRARY_PATH LD_LIBRARY_PATH
  1082. # -Wl option probably works, but be paranoid anyway
  1083. _VFLAGS="$AC_PICFLAG -shared -Wl,-soname,ngc$$.so.1"
  1084. if $AC_CC $_VFLAGS -o ngc$$.so ngc$$.c; then
  1085. USE_SONAME=T
  1086. fi
  1087. LDCONFIG=`AC_PATH=/sbin:/usr/sbin:/usr/local/sbin acLookFor ldconfig`
  1088. __config_files="$__config_files librarian.sh"
  1089. cat > librarian.sh << EOF
  1090. #! /bin/sh
  1091. #
  1092. # Build ELF shared libraries, hiding (some) ickiness from the makefile
  1093. ACTION=\$1; shift
  1094. LIBRARY=\$1; shift
  1095. eval \`awk -F. '{ printf "MAJOR=%d\n", \$1;
  1096. printf "VERSION=%d.%d.%d\n", \$1, \$2, \$3; }' \$1\`
  1097. shift
  1098. LIBNAME=\$LIBRARY.so
  1099. FULLNAME=\$LIBNAME.\$VERSION
  1100. case "\$ACTION" in
  1101. make) FLAGS="$AC_CFLAGS -shared"
  1102. unset VFLAGS
  1103. test "$USE_SONAME" && VFLAGS="-Wl,-soname,\$LIBNAME.\$MAJOR"
  1104. rm -f \$LIBRARY \$LIBNAME \$LIBNAME.\$MAJOR
  1105. if $AC_CC \$FLAGS \$VFLAGS -o \$FULLNAME "\$@"; then
  1106. $PROG_LN_S \$FULLNAME \$LIBRARY
  1107. $PROG_LN_S \$FULLNAME \$LIBNAME
  1108. $PROG_LN_S \$FULLNAME \$LIBNAME.\$MAJOR
  1109. fi
  1110. ;;
  1111. files) echo "\$FULLNAME" "\$LIBNAME" "\$LIBNAME.\$MAJOR"
  1112. ;;
  1113. install)$PROG_INSTALL -c \$FULLNAME "\$1"
  1114. $PROG_LN_S -f \$FULLNAME \$1/\$LIBNAME.\$MAJOR
  1115. $PROG_LN_S -f \$FULLNAME \$1/\$LIBNAME
  1116. test "$LDCONFIG" && $LDCONFIG "\$1"
  1117. ;;
  1118. esac
  1119. EOF
  1120. chmod +x librarian.sh
  1121. }
  1122. #
  1123. # AC_CC_SHLIBS checks if the C compiler can produce shared libraries
  1124. # and if it can writes a librarian that handles those libraries for us.
  1125. #
  1126. AC_CC_SHLIBS () {
  1127. AC_PROG_CC || AC_FAIL "Need a C compiler to build shared libraries"
  1128. AC_PROG_LN_S || AC_FAIL "Need to be able to make symbolic links for shared libraries"
  1129. AC_PROG_INSTALL || AC_FAIL "Need an install program to install shared libraries"
  1130. LOGN "checking whether the C compiler can build shared libraries "
  1131. echo "int some_variable = 0;" > ngc$$.c
  1132. if uname -a | grep Darwin >/dev/null; then
  1133. # Claims to be macos?
  1134. if $AC_CC $AC_PICFLAG -dynamiclib -o ngc$$.so ngc$$.c; then
  1135. __AC_MACOS_LIBRARIAN
  1136. LOG "(yes; macos dylib)"
  1137. __rc=0
  1138. else
  1139. LOG "(no)"
  1140. __rc=1
  1141. fi
  1142. elif $AC_CC $AC_PICFLAG -shared -o ngc$$.so ngc$$.c; then
  1143. __AC_ELF_LIBRARIAN
  1144. LOG "(yes; -shared)"
  1145. __rc=0
  1146. else
  1147. LOG "(no)"
  1148. __rc=1
  1149. fi
  1150. __remove ngc$$.so ngc$$.c
  1151. return $__rc
  1152. }
  1153. #
  1154. # AC_PROG_INSTALL finds the install program and guesses whether it's a
  1155. # Berkeley or GNU install program
  1156. #
  1157. AC_PROG_INSTALL () {
  1158. DEST=`acLookFor install`
  1159. LOGN "looking for install"
  1160. unset IS_BSD
  1161. if [ "$DEST" ]; then
  1162. # BSD install or GNU install? Let's find out...
  1163. touch /tmp/a$$
  1164. $DEST /tmp/a$$ /tmp/b$$
  1165. if test -r /tmp/a$$; then
  1166. LOG " ($DEST)"
  1167. else
  1168. IS_BSD=1
  1169. LOG " ($DEST) bsd install"
  1170. fi
  1171. rm -f /tmp/a$$ /tmp/b$$
  1172. else
  1173. DEST=`acLookFor ginstall`
  1174. if [ "$DEST" ]; then
  1175. LOG " ($DEST)"
  1176. else
  1177. DEST="false"
  1178. LOG " (not found)"
  1179. fi
  1180. fi
  1181. if [ "$IS_BSD" ]; then
  1182. PROG_INSTALL="$DEST -c"
  1183. else
  1184. PROG_INSTALL="$DEST"
  1185. fi
  1186. AC_SUB 'INSTALL' "$PROG_INSTALL"
  1187. AC_SUB 'INSTALL_PROGRAM' "$PROG_INSTALL -s -m 755"
  1188. AC_SUB 'INSTALL_DATA' "$PROG_INSTALL -m 444"
  1189. # finally build a little directory installer
  1190. # if mkdir -p works, use that, otherwise use install -d,
  1191. # otherwise build a script to do it by hand.
  1192. # in every case, test to see if the directory exists before
  1193. # making it.
  1194. if mkdir -p $$a/b; then
  1195. # I like this method best.
  1196. __mkdir="mkdir -p"
  1197. rmdir $$a/b
  1198. rmdir $$a
  1199. elif $PROG_INSTALL -d $$a/b; then
  1200. __mkdir="$PROG_INSTALL -d"
  1201. rmdir $$a/b
  1202. rmdir $$a
  1203. fi
  1204. __config_files="$__config_files config.md"
  1205. AC_SUB 'INSTALL_DIR' "$__cwd/config.md"
  1206. echo "#! /bin/sh" > $__cwd/config.md
  1207. echo "# script generated" `date` "by configure.sh" >> $__cwd/config.md
  1208. echo >> $__cwd/config.md
  1209. if [ "$__mkdir" ]; then
  1210. echo "test -d \"\$1\" || $__mkdir \"\$1\"" >> $__cwd/config.md
  1211. echo "exit $?" >> $__cwd/config.md
  1212. else
  1213. cat - >> $__cwd/config.md << \EOD
  1214. pieces=`IFS=/; for x in $1; do echo $x; done`
  1215. dir=
  1216. for x in $pieces; do
  1217. dir="$dir$x"
  1218. mkdir $dir || exit 1
  1219. dir="$dir/"
  1220. done
  1221. exit 0
  1222. EOD
  1223. fi
  1224. chmod +x $__cwd/config.md
  1225. }
  1226. #
  1227. # acCheckCPP is a local that runs a C preprocessor with a given set of
  1228. # compiler options
  1229. #
  1230. acCheckCPP () {
  1231. cat > ngc$$.c << EOF
  1232. #define FOO BAR
  1233. FOO
  1234. EOF
  1235. if $1 $2 ngc$$.c > ngc$$.o; then
  1236. if grep -v '#define' ngc$$.o | grep -s BAR >/dev/null; then
  1237. echo "CPP=[$1], CPPFLAGS=[$2]"
  1238. AC_SUB 'CPP' "$1"
  1239. AC_SUB 'CPPFLAGS' "$2"
  1240. rm ngc$$.c ngc$$.o
  1241. return 0
  1242. fi
  1243. fi
  1244. rm ngc$$.c ngc$$.o
  1245. return 1
  1246. }
  1247. #
  1248. # AC_PROG_CPP checks for cpp, then checks to see which CPPFLAGS are needed
  1249. # to run it as a filter.
  1250. #
  1251. AC_PROG_CPP () {
  1252. if [ "$AC_CPP_PROG" ]; then
  1253. DEST=$AC_CPP_PROG
  1254. else
  1255. __ac_path="$AC_PATH"
  1256. AC_PATH="/lib:/usr/lib:${__ac_path:-$ac_default_path}"
  1257. DEST=`acLookFor cpp`
  1258. AC_PATH="$__ac_path"
  1259. fi
  1260. unset fail
  1261. LOGN "Looking for cpp"
  1262. if [ "$DEST" ]; then
  1263. TLOGN " ($DEST)"
  1264. acCheckCPP $DEST "$CPPFLAGS" || \
  1265. acCheckCPP $DEST -traditional-cpp -E || \
  1266. acCheckCPP $DEST -E || \
  1267. acCheckCPP $DEST -traditional-cpp -pipe || \
  1268. acCheckCPP $DEST -pipe || fail=1
  1269. if [ "$fail" ]; then
  1270. AC_FAIL " (can't run cpp as a pipeline)"
  1271. else
  1272. TLOG " ok"
  1273. return 0
  1274. fi
  1275. fi
  1276. AC_FAIL " (not found)"
  1277. }
  1278. #
  1279. # AC_FAIL spits out an error message, then __fail's
  1280. AC_FAIL() {
  1281. LOG "$*"
  1282. $__fail 1
  1283. }
  1284. #
  1285. # AC_SUB writes a substitution into config.sub
  1286. AC_SUB() {
  1287. ( _subst=`echo $2 | sed -e 's/;/\\;/g'`
  1288. echo "s;@$1@;$_subst;g" ) >> $__cwd/config.sub
  1289. }
  1290. #
  1291. # AC_MAK writes a define into config.mak
  1292. AC_MAK() {
  1293. echo "HAVE_$1 = 1" >> $__cwd/config.mak
  1294. }
  1295. #
  1296. # AC_DEFINE adds a #define to config.h
  1297. AC_DEFINE() {
  1298. echo "#define $1 ${2:-1}" >> $__cwd/config.h
  1299. }
  1300. #
  1301. # AC_INCLUDE adds a #include to config.h
  1302. AC_INCLUDE() {
  1303. echo "#include \"$1\"" >> $__cwd/config.h
  1304. }
  1305. #
  1306. # AC_CONFIG adds a configuration setting to all the config files
  1307. AC_CONFIG() {
  1308. AC_DEFINE "PATH_$1" \""$2"\"
  1309. AC_MAK "$1"
  1310. AC_SUB "$1" "$2"
  1311. }
  1312. #
  1313. # AC_QUIET does something quietly
  1314. AC_QUIET() {
  1315. eval $* 5>/dev/null
  1316. }
  1317. AC_TR=`acLookFor tr`
  1318. if [ "$AC_TR" ]; then
  1319. # try posix-style tr
  1320. ABC=`echo abc | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
  1321. if [ "$ABC" = "ABC" ]; then
  1322. AC_UPPERCASE="$AC_TR abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  1323. AC_UPPER_PAT="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  1324. else
  1325. ABC=`echo abc | tr a-z A-Z`
  1326. if [ "$ABC" = "ABC" ]; then
  1327. AC_UPPERCASE="$AC_TR a-z A-Z"
  1328. AC_UPPER_PAT="A-Z"
  1329. else
  1330. ABC=`echo abc | tr '[a-z]' '[A-Z]'`
  1331. if [ "$ABC" = "ABC" ]; then
  1332. AC_UPPERCASE="$AC_TR '[a-z]' '[A-Z]'"
  1333. AC_UPPER_PAT="'[A-Z]'"
  1334. else
  1335. AC_FAIL "$AC_TR cannot translate lowercase to uppercase"
  1336. return 0
  1337. fi
  1338. fi
  1339. fi
  1340. else
  1341. AC_FAIL "configure requires a functional version of tr"
  1342. fi
  1343. while [ $# -gt 0 ]; do
  1344. unset matched
  1345. case X"$1" in
  1346. X--src|X--srcdir)
  1347. AC_SRCDIR=`__ac_dir "$2"`
  1348. _set_srcdir=1
  1349. shift 2;;
  1350. X--src=*|X--srcdir=*)
  1351. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1352. AC_SRCDIR=`__ac_dir "$__d"`
  1353. _set_srcdir=1
  1354. shift 1 ;;
  1355. X--prefix)
  1356. AC_PREFIX=`__ac_dir "$2"`
  1357. _set_prefix=1
  1358. shift 2;;
  1359. X--prefix=*)
  1360. __d=`echo "$1"| sed -e 's/^[^=]*=//'`
  1361. AC_PREFIX=`__ac_dir "$__d"`
  1362. _set_prefix=1
  1363. shift 1;;
  1364. X--confdir)
  1365. AC_CONFDIR=`__ac_dir "$2"`
  1366. _set_confdir=1
  1367. shift 2;;
  1368. X--confdir=*)
  1369. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1370. AC_CONFDIR=`__ac_dir "$__d"`
  1371. _set_confdir=1
  1372. shift 1;;
  1373. X--libexec|X--libexecdir)
  1374. AC_LIBEXEC=`__ac_dir "$2"`
  1375. _set_libexec=1
  1376. shift 2;;
  1377. X--libexec=*|X--libexecdir=*)
  1378. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1379. AC_LIBEXEC=`__ac_dir "$__d"`
  1380. _set_libexec=1
  1381. shift 1;;
  1382. X--lib|X--libdir)
  1383. AC_LIBDIR=`__ac_dir "$2"`
  1384. _set_libdir=1
  1385. shift 2;;
  1386. X--lib=*|X--libdir=*)
  1387. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1388. AC_LIBDIR=`__ac_dir "$__d"`
  1389. _set_libdir=1
  1390. shift 1;;
  1391. X--exec|X--execdir)
  1392. AC_EXECDIR=`__ac_dir "$2"`
  1393. _set_execdir=1
  1394. shift 2;;
  1395. X--exec=*|X--execdir=*)
  1396. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1397. AC_EXECDIR=`__ac_dir "$__d"`
  1398. _set_execdir=1
  1399. shift 1;;
  1400. X--sbin|X--sbindir)
  1401. AC_SBINDIR=`__ac_dir "$2"`
  1402. _set_sbindir=1
  1403. shift 2;;
  1404. X--sbin=*|X--sbindir=*)
  1405. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1406. AC_SBINDIR=`__ac_dir "$__d"`
  1407. _set_sbindir=1
  1408. shift 1;;
  1409. X--man|X--mandir)
  1410. AC_MANDIR=`__ac_dir "$2"`
  1411. _set_mandir=1
  1412. shift 2;;
  1413. X--man=*|X--mandir=*)
  1414. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1415. AC_MANDIR=`__ac_dir "$__d"`
  1416. _set_mandir=1
  1417. shift 1;;
  1418. X--use-*=*)
  1419. _var=`echo "$1"| sed -n 's/^--use-\([A-Za-z][-A-Za-z0-9_]*\)=.*$/\1/p'`
  1420. if [ "$_var" ]; then
  1421. _val=`echo "$1" | sed -e 's/^--use-[^=]*=\(.*\)$/\1/'`
  1422. _v=`echo $_var | $AC_UPPERCASE | tr '-' '_'`
  1423. case X"$_val" in
  1424. X[Yy][Ee][Ss]|X[Tt][Rr][Uu][Ee]) eval USE_${_v}=T ;;
  1425. X[Nn][Oo]|X[Ff][Aa][Ll][Ss][Ee]) eval unset USE_${_v} ;;
  1426. *) echo "Bad value for --use-$_var ; must be yes or no"
  1427. exit 1 ;;
  1428. esac
  1429. else
  1430. echo "Bad option $1. Use --help to show options" 1>&2
  1431. exit 1
  1432. fi
  1433. shift 1 ;;
  1434. X--use-*)
  1435. _var=`echo "$1"|sed -n 's/^--use-\([A-Za-z][-A-Za-z0-9_]*\)$/\1/p'`
  1436. _v=`echo $_var | $AC_UPPERCASE | tr '-' '_'`
  1437. eval USE_${_v}=T
  1438. shift 1;;
  1439. X--with-*=*)
  1440. _var=`echo "$1"| sed -n 's/^--with-\([A-Za-z][-A-Za-z0-9_]*\)=.*$/\1/p'`
  1441. if [ "$_var" ]; then
  1442. _val=`echo "$1" | sed -e 's/^--with-[^=]*=\(.*\)$/\1/'`
  1443. _v=`echo $_var | $AC_UPPERCASE | tr '-' '_'`
  1444. eval WITH_${_v}=\"$_val\"
  1445. else
  1446. echo "Bad option $1. Use --help to show options" 1>&2
  1447. exit 1
  1448. fi
  1449. shift 1 ;;
  1450. X--with-*)
  1451. _var=`echo "$1" | sed -n 's/^--with-\([A-Za-z][A-Za-z0-9_-]*\)$/\1/p'`
  1452. if [ "$_var" ]; then
  1453. _v=`echo $_var | $AC_UPPERCASE | tr '-' '_'`
  1454. eval WITH_${_v}=1
  1455. else
  1456. echo "Bad option $1. Use --help to show options" 1>&2
  1457. exit 1
  1458. fi
  1459. shift 1 ;;
  1460. X--help)
  1461. echo "$ac_standard"
  1462. test "$ac_help" && echo "$ac_help"
  1463. exit 0;;
  1464. *) if [ "$LOCAL_AC_OPTIONS" ]; then
  1465. eval "$LOCAL_AC_OPTIONS"
  1466. else
  1467. ac_error=T
  1468. fi
  1469. if [ "$ac_error" ]; then
  1470. echo "Bad option $1. Use --help to show options" 1>&2
  1471. exit 1
  1472. fi ;;
  1473. esac
  1474. done