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.

1723 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. cat > ngc$$.c << EOF
  736. #include <stdio.h>
  737. #include <string.h>
  738. int pound_define = 1;
  739. void
  740. say(char *w, char *v)
  741. {
  742. printf(pound_define ? "#define %s %s\n"
  743. : "s:@%s@:%s:g\n", w, v);
  744. }
  745. main(argc, argv)
  746. char **argv;
  747. {
  748. unsigned long v_long;
  749. unsigned int v_int;
  750. unsigned short v_short;
  751. if ( argc > 1 && strcmp(argv[1], "sub") == 0 )
  752. pound_define = 0;
  753. if (sizeof v_long == 4)
  754. say("DWORD", "unsigned long");
  755. else if (sizeof v_int == 4)
  756. say("DWORD", "unsigned int");
  757. else
  758. exit(1);
  759. if (sizeof v_int == 2)
  760. say("WORD", "unsigned int");
  761. else if (sizeof v_short == 2)
  762. say("WORD", "unsigned short");
  763. else
  764. exit(2);
  765. say("BYTE", "unsigned char");
  766. exit(0);
  767. }
  768. EOF
  769. rc=1
  770. LOGN "defining WORD & DWORD scalar types"
  771. if $AC_CC ngc$$.c -o ngc$$; then
  772. while [ "$1" ]; do
  773. case "$1" in
  774. sub)if ./ngc$$ sub >> $__cwd/config.sub; then
  775. rc=0
  776. fi;;
  777. *) if ./ngc$$ >> $__cwd/config.h; then
  778. rc=0
  779. fi ;;
  780. esac
  781. shift
  782. done
  783. if [ "$rc" != 0 ]; then
  784. if ./ngc$$ >> $__cwd/config.h; then
  785. rc=1
  786. fi
  787. fi
  788. fi
  789. __remove ngc$$ ngc$$.c
  790. case "$rc" in
  791. 0) TLOG "" ;;
  792. *) AC_FAIL " ** FAILED **" ;;
  793. esac
  794. }
  795. #
  796. # AC_OUTPUT generates makefiles from makefile.in's
  797. #
  798. AC_OUTPUT () {
  799. cd $__cwd
  800. AC_SUB 'LIBS' "$AC_LIBS"
  801. AC_SUB 'CONFIGURE_FILES' "$__config_files"
  802. AC_SUB 'GENERATED_FILES' "$*"
  803. AC_SUB 'CC' "$AC_CC"
  804. AC_SUB 'CFLAGS' "$AC_CFLAGS"
  805. AC_SUB 'LDFLAGS' "$AC_LDFLAGS"
  806. AC_SUB 'srcdir' "$AC_SRCDIR"
  807. AC_SUB 'prefix' "$AC_PREFIX"
  808. AC_SUB 'exedir' "$AC_EXECDIR"
  809. AC_SUB 'sbindir' "$AC_SBINDIR"
  810. AC_SUB 'libdir' "$AC_LIBDIR"
  811. AC_SUB 'libexec' "$AC_LIBEXEC"
  812. AC_SUB 'confdir' "$AC_CONFDIR"
  813. AC_SUB 'mandir' "$AC_MANDIR"
  814. if echo "$__config_files" | grep -v librarian.sh >/dev/null; then
  815. # write a librarian that works with static libraries
  816. if AC_PROG_LN_S ; then
  817. __dolink=$PROG_LN_S
  818. elif AC_PROG ln; then
  819. __dolink=$PROG_LN
  820. elif AC_PROG cp; then
  821. __dolink=$PROG_CP
  822. else
  823. __dolink=:
  824. fi
  825. AC_PROG ar
  826. AC_PROG ranlib
  827. AC_SUB LD_LIBRARY_PATH HERE
  828. AC
  829. __config_files="$__config_files librarian.sh"
  830. cat > librarian.sh << EOF
  831. #! /bin/sh
  832. #
  833. # Build static libraries, hiding (some) ickiness from the makefile
  834. ACTION=\$1; shift
  835. LIBRARY=\$1; shift
  836. VERSION=\$1; shift
  837. case "\$ACTION" in
  838. make) ${PROG_AR} crv \$LIBRARY.a "\$@"
  839. ${PROG_RANLIB} \$LIBRARY.a
  840. rm -f \$LIBRARY
  841. ${__dolink} \$LIBRARY.a \$LIBRARY
  842. ;;
  843. files) echo "\${LIBRARY}.a"
  844. ;;
  845. install)$PROG_INSTALL -m 644 \${LIBRARY}.a \$1
  846. ;;
  847. esac
  848. EOF
  849. fi
  850. chmod +x librarian.sh
  851. if [ -r config.sub ]; then
  852. test "$AC_SED_PROG" || AC_PROG_SED
  853. test "$AC_SED_PROG" || return 1
  854. echo >> config.h
  855. echo "#endif/* ${AC_CONFIGURE_FOR} */" >> config.h
  856. rm -f config.cmd
  857. Q=\'
  858. cat - > config.cmd << EOF
  859. #! /bin/sh
  860. ${CC:+CC=${Q}${CC}${Q}} ${CFLAGS:+CFLAGS=${Q}${CFLAGS}${Q}} $ac_progname $ac_configure_command
  861. EOF
  862. chmod +x config.cmd
  863. __d=$AC_SRCDIR
  864. for makefile in $*;do
  865. if test -r $__d/${makefile}.in; then
  866. LOG "generating $makefile"
  867. ./config.md `__ac_dirname ./$makefile` 2>/dev/null
  868. $AC_SED_PROG -f config.sub < $__d/${makefile}.in > $makefile
  869. __config_files="$__config_files $makefile"
  870. else
  871. LOG "WARNING: ${makefile}.in does not exist!"
  872. fi
  873. done
  874. unset __d
  875. else
  876. echo
  877. fi
  878. }
  879. #
  880. # AC_CHECK_FLOCK checks to see if flock() exists and if the LOCK_NB argument
  881. # works properly.
  882. #
  883. AC_CHECK_FLOCK() {
  884. AC_CHECK_HEADERS sys/types.h sys/file.h fcntl.h
  885. cat << EOF > ngc$$.c
  886. #include <stdio.h>
  887. #include <sys/file.h>
  888. #include <sys/types.h>
  889. #include <fcntl.h>
  890. main()
  891. {
  892. int x = open("$$.c", O_RDWR, 0666);
  893. int y = open("$$.c", O_RDWR, 0666);
  894. if (flock(x, LOCK_EX) != 0)
  895. exit(1);
  896. if (flock(y, LOCK_EX|LOCK_NB) == 0)
  897. exit(1);
  898. exit(0);
  899. }
  900. EOF
  901. LOGN "checking flock() sanity"
  902. HAS_FLOCK=0
  903. if $AC_CC -o ngc$$ ngc$$.c ; then
  904. if ./flock ; then
  905. LOG " (good)"
  906. HAS_FLOCK=1
  907. AC_DEFINE HAS_FLOCK
  908. else
  909. LOG " (bad)"
  910. fi
  911. else
  912. LOG " (not found)"
  913. fi
  914. __remove ngc$$ ngc$$.c
  915. case "$HAS_FLOCK" in
  916. 0) return 1 ;;
  917. *) return 0 ;;
  918. esac
  919. }
  920. #
  921. # AC_CHECK_RESOLVER finds out whether the berkeley resolver is
  922. # present on this system.
  923. #
  924. AC_CHECK_RESOLVER () {
  925. AC_PROG_CC
  926. TLOGN "looking for the Berkeley resolver library"
  927. __ACR_rc=0
  928. cat > ngc$$.c << EOF
  929. #include <sys/types.h>
  930. #include <netinet/in.h>
  931. #include <arpa/nameser.h>
  932. #include <resolv.h>
  933. main()
  934. {
  935. char bfr[256];
  936. res_init();
  937. res_query("hello", C_IN, T_A, bfr, sizeof bfr);
  938. }
  939. EOF
  940. if $AC_CC -o ngc$$ ngc$$.c; then
  941. TLOG " (found)"
  942. elif $AC_CC -o ngc$$ ngc$$.c -lresolv; then
  943. TLOG " (found, needs -lresolv)"
  944. AC_LIBS="$AC_LIBS -lresolv"
  945. elif $AC_CC -DBIND_8_COMPAT -o ngc$$ ngc$$.c; then
  946. TLOG " (found, needs BIND_8_COMPAT)"
  947. AC_DEFINE BIND_8_COMPAT 1
  948. elif $AC_CC -DBIND_8_COMPAT -o ngc$$ ngc$$.c -lresolv; then
  949. TLOG " (found, needs BIND_8_COMPAT & -lresolv)"
  950. AC_DEFINE BIND_8_COMPAT 1
  951. else
  952. TLOG " (not found)"
  953. __ACR_rc=1
  954. fi
  955. __remove ngc$$ ngc$$.c
  956. return $__ACR_rc
  957. }
  958. #
  959. # AC_CHECK_ALLOCA looks for alloca
  960. #
  961. AC_CHECK_ALLOCA () {
  962. AC_PROG_CC
  963. AC_CHECK_HEADERS stdlib.h
  964. cat - > ngc$$.c << EOF
  965. #if T
  966. # include <alloca.h>
  967. #else
  968. # include <stdlib.h>
  969. #endif
  970. main()
  971. {
  972. alloca(10);
  973. }
  974. EOF
  975. LOGN "looking for the alloca function"
  976. if $AC_CC -DT ngc$$.c -o ngc$$; then
  977. AC_DEFINE 'HAVE_ALLOCA_H' 1
  978. status=0
  979. TLOG " (found in alloca.h)"
  980. elif $AC_CC ngc$$.c -o ngc$$; then
  981. TLOG " (found)"
  982. status=0
  983. else
  984. TLOG " (not found)"
  985. status=1
  986. fi
  987. __remove ngc$$ ngc$$.c
  988. return $status
  989. }
  990. #
  991. # AC_CHECK_BASENAME looks for a copy of basename that does NOT use
  992. # a local static buffer to hold results in.
  993. #
  994. AC_CHECK_BASENAME() {
  995. TLOGN "looking for a reentrant basename "
  996. cat > ngc$$.c << EOF
  997. #include <string.h>
  998. extern char *basename(char*);
  999. main()
  1000. {
  1001. char *a = basename("/a/test");
  1002. char *b = basename("/a/nother");
  1003. return (strcmp(a,b) != 0) ? 0 : 1;
  1004. }
  1005. EOF
  1006. if $AC_CC -o ngc$$ ngc$$.c $LIBS; then
  1007. if ./ngc$$; then
  1008. TLOG "(found)"
  1009. AC_DEFINE 'HAVE_BASENAME' 1
  1010. AC_CHECK_HEADERS libgen.h
  1011. else
  1012. TLOG "(broken)"
  1013. fi
  1014. else
  1015. TLOG "(not found)"
  1016. fi
  1017. __remove ngc$$ ngc$$.c
  1018. }
  1019. #
  1020. # AC_COMPILER_PIC checks for the compiler option to produce position independent
  1021. # code. At the moment we assume gcc semantics.
  1022. #
  1023. AC_COMPILER_PIC () {
  1024. AC_PROG_CC
  1025. LOGN "checking for C compiler option to produce PIC "
  1026. echo "int some_variable = 0;" > ngc$$.c
  1027. if $AC_CC -c -fPIC -o ngc$$ ngc$$.c $LIBS; then
  1028. AC_CFLAGS="$AC_CFLAGS -fPIC"
  1029. LOG "(-fPIC)"
  1030. __rc=0
  1031. else
  1032. LOG "(none)"
  1033. __rc=1
  1034. fi
  1035. __remove ngc$$ ngc$$.c
  1036. return $__rc
  1037. }
  1038. # generate a macosX librarian
  1039. #
  1040. __AC_MACOS_LIBRARIAN() {
  1041. AC_SUB LD_LIBRARY_PATH DYLD_LIBRARY_PATH
  1042. __config_files="$__config_files librarian.sh"
  1043. cat > librarian.sh << EOF
  1044. #! /bin/sh
  1045. #
  1046. # Build MacOS shared libraries, hiding (some) ickiness from the makefile
  1047. ACTION=\$1; shift
  1048. LIBRARY=\$1; shift
  1049. eval \`awk -F. '{ printf "MAJOR=%d\n", \$1;
  1050. printf "VERSION=%d.%d.%d\n", \$1, \$2, \$3; }' \$1\`
  1051. shift
  1052. LIBNAME=\$LIBRARY.dylib
  1053. FULLNAME=\$LIBNAME
  1054. case "\$ACTION" in
  1055. make) FLAGS="$AC_CFLAGS -dynamiclib"
  1056. VFLAGS="-current_version \$VERSION -compatibility_version \$MAJOR"
  1057. rm -f \$LIBRARY
  1058. if $AC_CC \$FLAGS \$VFLAGS -o \$FULLNAME "\$@"; then
  1059. $PROG_LN_S \$FULLNAME \$LIBRARY
  1060. fi
  1061. ;;
  1062. files) echo "\$FULLNAME"
  1063. ;;
  1064. install)$PROG_INSTALL -c \$FULLNAME "\$1"
  1065. ;;
  1066. esac
  1067. EOF
  1068. chmod +x librarian.sh
  1069. }
  1070. # Generate an ELF librarian (for Linux, freebsd)
  1071. #
  1072. __AC_ELF_LIBRARIAN() {
  1073. AC_SUB LD_LIBRARY_PATH LD_LIBRARY_PATH
  1074. # -Wl option probably works, but be paranoid anyway
  1075. _VFLAGS="$AC_PICFLAG -shared -Wl,-soname,ngc$$.so.1"
  1076. if $AC_CC $_VFLAGS -o ngc$$.so ngc$$.c; then
  1077. USE_SONAME=T
  1078. fi
  1079. LDCONFIG=`AC_PATH=/sbin:/usr/sbin:/usr/local/sbin acLookFor ldconfig`
  1080. __config_files="$__config_files librarian.sh"
  1081. cat > librarian.sh << EOF
  1082. #! /bin/sh
  1083. #
  1084. # Build ELF shared libraries, hiding (some) ickiness from the makefile
  1085. ACTION=\$1; shift
  1086. LIBRARY=\$1; shift
  1087. eval \`awk -F. '{ printf "MAJOR=%d\n", \$1;
  1088. printf "VERSION=%d.%d.%d\n", \$1, \$2, \$3; }' \$1\`
  1089. shift
  1090. LIBNAME=\$LIBRARY.so
  1091. FULLNAME=\$LIBNAME.\$VERSION
  1092. case "\$ACTION" in
  1093. make) FLAGS="$AC_CFLAGS -shared"
  1094. unset VFLAGS
  1095. test "$USE_SONAME" && VFLAGS="-Wl,-soname,\$LIBNAME.\$MAJOR"
  1096. rm -f \$LIBRARY \$LIBNAME \$LIBNAME.\$MAJOR
  1097. if $AC_CC \$FLAGS \$VFLAGS -o \$FULLNAME "\$@"; then
  1098. $PROG_LN_S \$FULLNAME \$LIBRARY
  1099. $PROG_LN_S \$FULLNAME \$LIBNAME
  1100. $PROG_LN_S \$FULLNAME \$LIBNAME.\$MAJOR
  1101. fi
  1102. ;;
  1103. files) echo "\$FULLNAME" "\$LIBNAME" "\$LIBNAME.\$MAJOR"
  1104. ;;
  1105. install)$PROG_INSTALL -c \$FULLNAME "\$1"
  1106. $PROG_LN_S -f \$FULLNAME \$1/\$LIBNAME.\$MAJOR
  1107. $PROG_LN_S -f \$FULLNAME \$1/\$LIBNAME
  1108. test "$LDCONFIG" && $LDCONFIG "\$1"
  1109. ;;
  1110. esac
  1111. EOF
  1112. chmod +x librarian.sh
  1113. }
  1114. #
  1115. # AC_CC_SHLIBS checks if the C compiler can produce shared libraries
  1116. # and if it can writes a librarian that handles those libraries for us.
  1117. #
  1118. AC_CC_SHLIBS () {
  1119. AC_PROG_CC || AC_FAIL "Need a C compiler to build shared libraries"
  1120. AC_PROG_LN_S || AC_FAIL "Need to be able to make symbolic links for shared libraries"
  1121. AC_PROG_INSTALL || AC_FAIL "Need an install program to install shared libraries"
  1122. LOGN "checking whether the C compiler can build shared libraries "
  1123. echo "int some_variable = 0;" > ngc$$.c
  1124. if uname -a | grep Darwin >/dev/null; then
  1125. # Claims to be macos?
  1126. if $AC_CC $AC_PICFLAG -dynamiclib -o ngc$$.so ngc$$.c; then
  1127. __AC_MACOS_LIBRARIAN
  1128. LOG "(yes; macos dylib)"
  1129. __rc=0
  1130. else
  1131. LOG "(no)"
  1132. __rc=1
  1133. fi
  1134. elif $AC_CC $AC_PICFLAG -shared -o ngc$$.so ngc$$.c; then
  1135. __AC_ELF_LIBRARIAN
  1136. LOG "(yes; -shared)"
  1137. __rc=0
  1138. else
  1139. LOG "(no)"
  1140. __rc=1
  1141. fi
  1142. __remove ngc$$.so ngc$$.c
  1143. return $__rc
  1144. }
  1145. #
  1146. # AC_PROG_INSTALL finds the install program and guesses whether it's a
  1147. # Berkeley or GNU install program
  1148. #
  1149. AC_PROG_INSTALL () {
  1150. DEST=`acLookFor install`
  1151. LOGN "looking for install"
  1152. unset IS_BSD
  1153. if [ "$DEST" ]; then
  1154. # BSD install or GNU install? Let's find out...
  1155. touch /tmp/a$$
  1156. $DEST /tmp/a$$ /tmp/b$$
  1157. if test -r /tmp/a$$; then
  1158. LOG " ($DEST)"
  1159. else
  1160. IS_BSD=1
  1161. LOG " ($DEST) bsd install"
  1162. fi
  1163. rm -f /tmp/a$$ /tmp/b$$
  1164. else
  1165. DEST=`acLookFor ginstall`
  1166. if [ "$DEST" ]; then
  1167. LOG " ($DEST)"
  1168. else
  1169. DEST="false"
  1170. LOG " (not found)"
  1171. fi
  1172. fi
  1173. if [ "$IS_BSD" ]; then
  1174. PROG_INSTALL="$DEST -c"
  1175. else
  1176. PROG_INSTALL="$DEST"
  1177. fi
  1178. AC_SUB 'INSTALL' "$PROG_INSTALL"
  1179. AC_SUB 'INSTALL_PROGRAM' "$PROG_INSTALL -s -m 755"
  1180. AC_SUB 'INSTALL_DATA' "$PROG_INSTALL -m 444"
  1181. # finally build a little directory installer
  1182. # if mkdir -p works, use that, otherwise use install -d,
  1183. # otherwise build a script to do it by hand.
  1184. # in every case, test to see if the directory exists before
  1185. # making it.
  1186. if mkdir -p $$a/b; then
  1187. # I like this method best.
  1188. __mkdir="mkdir -p"
  1189. rmdir $$a/b
  1190. rmdir $$a
  1191. elif $PROG_INSTALL -d $$a/b; then
  1192. __mkdir="$PROG_INSTALL -d"
  1193. rmdir $$a/b
  1194. rmdir $$a
  1195. fi
  1196. __config_files="$__config_files config.md"
  1197. AC_SUB 'INSTALL_DIR' "$__cwd/config.md"
  1198. echo "#! /bin/sh" > $__cwd/config.md
  1199. echo "# script generated" `date` "by configure.sh" >> $__cwd/config.md
  1200. echo >> $__cwd/config.md
  1201. if [ "$__mkdir" ]; then
  1202. echo "test -d \"\$1\" || $__mkdir \"\$1\"" >> $__cwd/config.md
  1203. echo "exit $?" >> $__cwd/config.md
  1204. else
  1205. cat - >> $__cwd/config.md << \EOD
  1206. pieces=`IFS=/; for x in $1; do echo $x; done`
  1207. dir=
  1208. for x in $pieces; do
  1209. dir="$dir$x"
  1210. mkdir $dir || exit 1
  1211. dir="$dir/"
  1212. done
  1213. exit 0
  1214. EOD
  1215. fi
  1216. chmod +x $__cwd/config.md
  1217. }
  1218. #
  1219. # acCheckCPP is a local that runs a C preprocessor with a given set of
  1220. # compiler options
  1221. #
  1222. acCheckCPP () {
  1223. cat > ngc$$.c << EOF
  1224. #define FOO BAR
  1225. FOO
  1226. EOF
  1227. if $1 $2 ngc$$.c > ngc$$.o; then
  1228. if grep -v '#define' ngc$$.o | grep -s BAR >/dev/null; then
  1229. echo "CPP=[$1], CPPFLAGS=[$2]"
  1230. AC_SUB 'CPP' "$1"
  1231. AC_SUB 'CPPFLAGS' "$2"
  1232. rm ngc$$.c ngc$$.o
  1233. return 0
  1234. fi
  1235. fi
  1236. rm ngc$$.c ngc$$.o
  1237. return 1
  1238. }
  1239. #
  1240. # AC_PROG_CPP checks for cpp, then checks to see which CPPFLAGS are needed
  1241. # to run it as a filter.
  1242. #
  1243. AC_PROG_CPP () {
  1244. if [ "$AC_CPP_PROG" ]; then
  1245. DEST=$AC_CPP_PROG
  1246. else
  1247. __ac_path="$AC_PATH"
  1248. AC_PATH="/lib:/usr/lib:${__ac_path:-$ac_default_path}"
  1249. DEST=`acLookFor cpp`
  1250. AC_PATH="$__ac_path"
  1251. fi
  1252. unset fail
  1253. LOGN "Looking for cpp"
  1254. if [ "$DEST" ]; then
  1255. TLOGN " ($DEST)"
  1256. acCheckCPP $DEST "$CPPFLAGS" || \
  1257. acCheckCPP $DEST -traditional-cpp -E || \
  1258. acCheckCPP $DEST -E || \
  1259. acCheckCPP $DEST -traditional-cpp -pipe || \
  1260. acCheckCPP $DEST -pipe || fail=1
  1261. if [ "$fail" ]; then
  1262. AC_FAIL " (can't run cpp as a pipeline)"
  1263. else
  1264. TLOG " ok"
  1265. return 0
  1266. fi
  1267. fi
  1268. AC_FAIL " (not found)"
  1269. }
  1270. #
  1271. # AC_FAIL spits out an error message, then __fail's
  1272. AC_FAIL() {
  1273. LOG "$*"
  1274. $__fail 1
  1275. }
  1276. #
  1277. # AC_SUB writes a substitution into config.sub
  1278. AC_SUB() {
  1279. ( _subst=`echo $2 | sed -e 's/;/\\;/g'`
  1280. echo "s;@$1@;$_subst;g" ) >> $__cwd/config.sub
  1281. }
  1282. #
  1283. # AC_MAK writes a define into config.mak
  1284. AC_MAK() {
  1285. echo "HAVE_$1 = 1" >> $__cwd/config.mak
  1286. }
  1287. #
  1288. # AC_DEFINE adds a #define to config.h
  1289. AC_DEFINE() {
  1290. echo "#define $1 ${2:-1}" >> $__cwd/config.h
  1291. }
  1292. #
  1293. # AC_INCLUDE adds a #include to config.h
  1294. AC_INCLUDE() {
  1295. echo "#include \"$1\"" >> $__cwd/config.h
  1296. }
  1297. #
  1298. # AC_CONFIG adds a configuration setting to all the config files
  1299. AC_CONFIG() {
  1300. AC_DEFINE "PATH_$1" \""$2"\"
  1301. AC_MAK "$1"
  1302. AC_SUB "$1" "$2"
  1303. }
  1304. #
  1305. # AC_QUIET does something quietly
  1306. AC_QUIET() {
  1307. eval $* 5>/dev/null
  1308. }
  1309. AC_TR=`acLookFor tr`
  1310. if [ "$AC_TR" ]; then
  1311. # try posix-style tr
  1312. ABC=`echo abc | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
  1313. if [ "$ABC" = "ABC" ]; then
  1314. AC_UPPERCASE="$AC_TR abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  1315. AC_UPPER_PAT="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  1316. else
  1317. ABC=`echo abc | tr a-z A-Z`
  1318. if [ "$ABC" = "ABC" ]; then
  1319. AC_UPPERCASE="$AC_TR a-z A-Z"
  1320. AC_UPPER_PAT="A-Z"
  1321. else
  1322. ABC=`echo abc | tr '[a-z]' '[A-Z]'`
  1323. if [ "$ABC" = "ABC" ]; then
  1324. AC_UPPERCASE="$AC_TR '[a-z]' '[A-Z]'"
  1325. AC_UPPER_PAT="'[A-Z]'"
  1326. else
  1327. AC_FAIL "$AC_TR cannot translate lowercase to uppercase"
  1328. return 0
  1329. fi
  1330. fi
  1331. fi
  1332. else
  1333. AC_FAIL "configure requires a functional version of tr"
  1334. fi
  1335. while [ $# -gt 0 ]; do
  1336. unset matched
  1337. case X"$1" in
  1338. X--src|X--srcdir)
  1339. AC_SRCDIR=`__ac_dir "$2"`
  1340. _set_srcdir=1
  1341. shift 2;;
  1342. X--src=*|X--srcdir=*)
  1343. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1344. AC_SRCDIR=`__ac_dir "$__d"`
  1345. _set_srcdir=1
  1346. shift 1 ;;
  1347. X--prefix)
  1348. AC_PREFIX=`__ac_dir "$2"`
  1349. _set_prefix=1
  1350. shift 2;;
  1351. X--prefix=*)
  1352. __d=`echo "$1"| sed -e 's/^[^=]*=//'`
  1353. AC_PREFIX=`__ac_dir "$__d"`
  1354. _set_prefix=1
  1355. shift 1;;
  1356. X--confdir)
  1357. AC_CONFDIR=`__ac_dir "$2"`
  1358. _set_confdir=1
  1359. shift 2;;
  1360. X--confdir=*)
  1361. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1362. AC_CONFDIR=`__ac_dir "$__d"`
  1363. _set_confdir=1
  1364. shift 1;;
  1365. X--libexec|X--libexecdir)
  1366. AC_LIBEXEC=`__ac_dir "$2"`
  1367. _set_libexec=1
  1368. shift 2;;
  1369. X--libexec=*|X--libexecdir=*)
  1370. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1371. AC_LIBEXEC=`__ac_dir "$__d"`
  1372. _set_libexec=1
  1373. shift 1;;
  1374. X--lib|X--libdir)
  1375. AC_LIBDIR=`__ac_dir "$2"`
  1376. _set_libdir=1
  1377. shift 2;;
  1378. X--lib=*|X--libdir=*)
  1379. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1380. AC_LIBDIR=`__ac_dir "$__d"`
  1381. _set_libdir=1
  1382. shift 1;;
  1383. X--exec|X--execdir)
  1384. AC_EXECDIR=`__ac_dir "$2"`
  1385. _set_execdir=1
  1386. shift 2;;
  1387. X--exec=*|X--execdir=*)
  1388. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1389. AC_EXECDIR=`__ac_dir "$__d"`
  1390. _set_execdir=1
  1391. shift 1;;
  1392. X--sbin|X--sbindir)
  1393. AC_SBINDIR=`__ac_dir "$2"`
  1394. _set_sbindir=1
  1395. shift 2;;
  1396. X--sbin=*|X--sbindir=*)
  1397. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1398. AC_SBINDIR=`__ac_dir "$__d"`
  1399. _set_sbindir=1
  1400. shift 1;;
  1401. X--man|X--mandir)
  1402. AC_MANDIR=`__ac_dir "$2"`
  1403. _set_mandir=1
  1404. shift 2;;
  1405. X--man=*|X--mandir=*)
  1406. __d=`echo "$1" | sed -e 's/^[^=]*=//'`
  1407. AC_MANDIR=`__ac_dir "$__d"`
  1408. _set_mandir=1
  1409. shift 1;;
  1410. X--use-*=*)
  1411. _var=`echo "$1"| sed -n 's/^--use-\([A-Za-z][-A-Za-z0-9_]*\)=.*$/\1/p'`
  1412. if [ "$_var" ]; then
  1413. _val=`echo "$1" | sed -e 's/^--use-[^=]*=\(.*\)$/\1/'`
  1414. _v=`echo $_var | $AC_UPPERCASE | tr '-' '_'`
  1415. case X"$_val" in
  1416. X[Yy][Ee][Ss]|X[Tt][Rr][Uu][Ee]) eval USE_${_v}=T ;;
  1417. X[Nn][Oo]|X[Ff][Aa][Ll][Ss][Ee]) eval unset USE_${_v} ;;
  1418. *) echo "Bad value for --use-$_var ; must be yes or no"
  1419. exit 1 ;;
  1420. esac
  1421. else
  1422. echo "Bad option $1. Use --help to show options" 1>&2
  1423. exit 1
  1424. fi
  1425. shift 1 ;;
  1426. X--use-*)
  1427. _var=`echo "$1"|sed -n 's/^--use-\([A-Za-z][-A-Za-z0-9_]*\)$/\1/p'`
  1428. _v=`echo $_var | $AC_UPPERCASE | tr '-' '_'`
  1429. eval USE_${_v}=T
  1430. shift 1;;
  1431. X--with-*=*)
  1432. _var=`echo "$1"| sed -n 's/^--with-\([A-Za-z][-A-Za-z0-9_]*\)=.*$/\1/p'`
  1433. if [ "$_var" ]; then
  1434. _val=`echo "$1" | sed -e 's/^--with-[^=]*=\(.*\)$/\1/'`
  1435. _v=`echo $_var | $AC_UPPERCASE | tr '-' '_'`
  1436. eval WITH_${_v}=\"$_val\"
  1437. else
  1438. echo "Bad option $1. Use --help to show options" 1>&2
  1439. exit 1
  1440. fi
  1441. shift 1 ;;
  1442. X--with-*)
  1443. _var=`echo "$1" | sed -n 's/^--with-\([A-Za-z][A-Za-z0-9_-]*\)$/\1/p'`
  1444. if [ "$_var" ]; then
  1445. _v=`echo $_var | $AC_UPPERCASE | tr '-' '_'`
  1446. eval WITH_${_v}=1
  1447. else
  1448. echo "Bad option $1. Use --help to show options" 1>&2
  1449. exit 1
  1450. fi
  1451. shift 1 ;;
  1452. X--help)
  1453. echo "$ac_standard"
  1454. test "$ac_help" && echo "$ac_help"
  1455. exit 0;;
  1456. *) if [ "$LOCAL_AC_OPTIONS" ]; then
  1457. eval "$LOCAL_AC_OPTIONS"
  1458. else
  1459. ac_error=T
  1460. fi
  1461. if [ "$ac_error" ]; then
  1462. echo "Bad option $1. Use --help to show options" 1>&2
  1463. exit 1
  1464. fi ;;
  1465. esac
  1466. done