Annotation of embedaddon/readline/examples/rlfe/configure.in, revision 1.1.1.1

1.1       misho       1: dnl Process this file with autoconf to produce a configure script.
                      2: 
                      3: AC_INIT(rlfe.c)
                      4: AC_CONFIG_HEADER(config.h)
                      5: VERSION=0.4
                      6: AC_SUBST(VERSION)
                      7: 
                      8: dnl
                      9: dnl Define some useful macros
                     10: dnl
                     11: AC_DEFUN([AC_PROGRAM_SOURCE],
                     12: [AC_REQUIRE([AC_PROG_CPP])AC_PROVIDE([$0])cat > conftest.c <<EOF
                     13: #include "confdefs.h"
                     14: [$1]
                     15: _CUT_HERE_
                     16: [$2]
                     17: EOF
                     18: eval "$ac_cpp conftest.c 2>&5 | sed -e '1,/_CUT_HERE_/d' -e 's/ //g' > conftest.out"
                     19: . ./conftest.out
                     20: rm -f conftest*
                     21: ])dnl
                     22: dnl
                     23: define(AC_NOTE,
                     24: [echo "$1" 1>&AC_FD_MSG
                     25: ])dnl
                     26: 
                     27: old_CFLAGS="$CFLAGS"
                     28: AC_PROG_CC
                     29: AC_PROG_CPP
                     30: AC_PROG_GCC_TRADITIONAL
                     31: AC_ISC_POSIX
                     32: 
                     33: AC_TRY_RUN(main(){exit(0);},,[
                     34: if test $CC != cc ; then
                     35: AC_NOTE(Your $CC failed - restarting with CC=cc)
                     36: AC_NOTE()
                     37: CC=cc
                     38: export CC
                     39: exec $0 $configure_args
                     40: fi
                     41: ])
                     42: 
                     43: AC_TRY_RUN(main(){exit(0);},,
                     44: exec 5>&2
                     45: eval $ac_link
                     46: AC_NOTE(CC=$CC; CFLAGS=$CFLAGS; LIBS=$LIBS;)
                     47: AC_NOTE($ac_compile)
                     48: AC_MSG_ERROR(Can't run the compiler - sorry))
                     49: 
                     50: AC_TRY_RUN([
                     51: main()
                     52: {
                     53:   int __something_strange_();
                     54:   __something_strange_(0);
                     55: }
                     56: ],AC_MSG_ERROR(Your compiler does not set the exit status - sorry))
                     57: 
                     58: AC_PROG_AWK
                     59: 
                     60: if test -f etc/toolcheck; then
                     61: AC_CHECKING(for buggy tools)
                     62: sh etc/toolcheck 1>&AC_FD_MSG
                     63: fi
                     64: 
                     65: dnl
                     66: dnl    ****  special unix variants  ****
                     67: dnl
                     68: 
                     69: AC_CHECKING(for System V)
                     70: AC_TRY_COMPILE(
                     71: [#include <sys/types.h>
                     72: #include <signal.h>
                     73: #include <fcntl.h>], [int x = SIGCHLD | FNDELAY;], , AC_DEFINE(SYSV))
                     74: 
                     75: AC_CHECKING(for Solaris 2.x)
                     76: AC_EGREP_CPP(yes,
                     77: [#if defined(SVR4) && defined(sun)
                     78:   yes
                     79: #endif
                     80: ], LIBS="$LIBS -lsocket -lnsl -lkstat")
                     81: 
                     82: dnl
                     83: dnl    ****  select()  ****
                     84: dnl
                     85: 
                     86: AC_CHECKING(select)
                     87: AC_TRY_LINK(,[select(0, 0, 0, 0, 0);],, 
                     88: LIBS="$LIBS -lnet -lnsl"
                     89: AC_CHECKING(select with $LIBS)
                     90: AC_TRY_LINK(,[select(0, 0, 0, 0, 0);],, 
                     91: AC_MSG_ERROR(!!! no select - no screen))
                     92: )
                     93: dnl
                     94: dnl    ****  check the select implementation ****
                     95: dnl
                     96: 
                     97: AC_CHECKING(select return value)
                     98: AC_TRY_RUN([
                     99: #include <sys/types.h>
                    100: #include <sys/stat.h>
                    101: #include <fcntl.h>
                    102: 
                    103: char *nam = "/tmp/conftest$$";
                    104: 
                    105: #ifdef NAMEDPIPE
                    106: 
                    107: #ifndef O_NONBLOCK
                    108: #define O_NONBLOCK O_NDELAY
                    109: #endif
                    110: #ifndef S_IFIFO
                    111: #define S_IFIFO 0010000
                    112: #endif
                    113: 
                    114: 
                    115: main()
                    116: {
                    117: #ifdef FD_SET
                    118:   fd_set f;
                    119: #else
                    120:   int f;
                    121: #endif
                    122: 
                    123: #ifdef __FreeBSD__
                    124: /* From Andrew A. Chernov (ache@astral.msk.su):
                    125:  * opening RDWR fifo fails in BSD 4.4, but select return values are
                    126:  * right.
                    127:  */
                    128:   exit(0);
                    129: #endif
                    130:   (void)alarm(5);
                    131: #ifdef POSIX
                    132:   if (mkfifo(nam, 0777))
                    133: #else
                    134:   if (mknod(nam, S_IFIFO|0777, 0))
                    135: #endif
                    136:     exit(1);
                    137:   close(0);
                    138:   if (open(nam, O_RDWR | O_NONBLOCK))
                    139:     exit(1);
                    140:   if (write(0, "TEST", 4) == -1)
                    141:     exit(1);
                    142: 
                    143: #else
                    144: 
                    145: #include <sys/types.h>
                    146: #include <sys/socket.h>
                    147: #include <sys/un.h>
                    148: 
                    149: main()
                    150: {
                    151:   int s1, s2, l;
                    152:   struct sockaddr_un a;
                    153: #ifdef FD_SET
                    154:   fd_set f;
                    155: #else
                    156:   int f;
                    157: #endif
                    158: 
                    159:   (void)alarm(5);
                    160:   if ((s1 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
                    161:     exit(1);
                    162:   a.sun_family = AF_UNIX;
                    163:   strcpy(a.sun_path, nam);
                    164:   (void) unlink(nam);
                    165:   if (bind(s1, (struct sockaddr *) &a, strlen(nam)+2) == -1)
                    166:     exit(1);
                    167:   if (listen(s1, 2))
                    168:     exit(1);
                    169:   if (fork() == 0)
                    170:     {
                    171:       if ((s2 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
                    172:        kill(getppid(), 3);
                    173:       (void)connect(s2, (struct sockaddr *)&a, strlen(nam) + 2);
                    174:       if (write(s2, "HELLO", 5) == -1)
                    175:        kill(getppid(), 3);
                    176:       exit(0);
                    177:     }
                    178:   l = sizeof(a);
                    179:   close(0);
                    180:   if (accept(s1, (struct sockaddr *)&a, &l))
                    181:     exit(1);
                    182: #endif
                    183: 
                    184: 
                    185: #ifdef FD_SET
                    186:   FD_SET(0, &f);
                    187: #else
                    188:   f = 1;
                    189: #endif
                    190:   if (select(1, &f, 0, 0, 0) == -1)
                    191:     exit(1);
                    192:   if (select(1, &f, &f, 0, 0) != 2)
                    193:     exit(1);
                    194:   exit(0);
                    195: }
                    196: ],AC_NOTE(- select is ok),
                    197: AC_NOTE(- select can't count) AC_DEFINE(SELECT_BROKEN))
                    198: 
                    199: dnl
                    200: dnl    ****  termcap or terminfo  ****
                    201: dnl
                    202: AC_CHECKING(for tgetent)
                    203: AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
                    204: olibs="$LIBS"
                    205: LIBS="-lcurses $olibs"
                    206: AC_CHECKING(libcurses)
                    207: AC_TRY_LINK(,[
                    208: #ifdef __hpux
                    209: __sorry_hpux_libcurses_is_totally_broken_in_10_10();
                    210: #else
                    211: tgetent((char *)0, (char *)0);
                    212: #endif
                    213: ],,
                    214: LIBS="-ltermcap $olibs"
                    215: AC_CHECKING(libtermcap)
                    216: AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
                    217: LIBS="-ltermlib $olibs"
                    218: AC_CHECKING(libtermlib)
                    219: AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
                    220: LIBS="-lncurses $olibs"
                    221: AC_CHECKING(libncurses)
                    222: AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
                    223: AC_MSG_ERROR(!!! no tgetent - no screen))))))
                    224: 
                    225: AC_TRY_RUN([
                    226: extern char *tgoto();
                    227: main()
                    228: {
                    229:  exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
                    230: }], AC_NOTE(- you use the termcap database),
                    231: AC_NOTE(- you use the terminfo database) AC_DEFINE(TERMINFO))
                    232: AC_CHECKING(ospeed)
                    233: AC_TRY_LINK(extern short ospeed;,ospeed=5;,,AC_DEFINE(NEED_OSPEED))
                    234: 
                    235: dnl
                    236: dnl    ****  PTY specific things  ****
                    237: dnl
                    238: AC_CHECKING(for /dev/ptc)
                    239: if test -r /dev/ptc; then
                    240: AC_DEFINE(HAVE_DEV_PTC)
                    241: fi
                    242: 
                    243: AC_CHECKING(for SVR4 ptys)
                    244: sysvr4ptys=
                    245: if test -c /dev/ptmx ; then
                    246: AC_TRY_LINK([],[ptsname(0);grantpt(0);unlockpt(0);],[AC_DEFINE(HAVE_SVR4_PTYS)
                    247: sysvr4ptys=1])
                    248: fi
                    249: 
                    250: AC_CHECK_FUNCS(getpt)
                    251: 
                    252: dnl check for openpty()
                    253: if test -z "$sysvr4ptys"; then
                    254: AC_CHECK_FUNCS(openpty,,
                    255: [AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY)] [LIBS="$LIBS -lutil"])])
                    256: fi
                    257: 
                    258: AC_CHECKING(for ptyranges)
                    259: if test -d /dev/ptym ; then
                    260: pdir='/dev/ptym'
                    261: else
                    262: pdir='/dev'
                    263: fi
                    264: dnl SCO uses ptyp%d
                    265: AC_EGREP_CPP(yes,
                    266: [#ifdef M_UNIX
                    267:    yes;
                    268: #endif
                    269: ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
                    270: dnl if test -c /dev/ptyp19; then
                    271: dnl ptys=`echo /dev/ptyp??`
                    272: dnl else
                    273: dnl ptys=`echo $pdir/pty??`
                    274: dnl fi
                    275: if test "$ptys" != "$pdir/pty??" ; then
                    276: p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
                    277: p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
                    278: AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
                    279: AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
                    280: fi
                    281: 
                    282: dnl    ****  pty mode/group handling ****
                    283: dnl
                    284: dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
                    285: AC_ARG_WITH(pty-mode, [  --with-pty-mode=mode    default mode for ptys], [ ptymode="${withval}" ])
                    286: AC_ARG_WITH(pty-group, [  --with-pty-group=group  default group for ptys], [ ptygrp="${withval}" ])
                    287: test -n "$ptymode" || ptymode=0620
                    288: if test -n "$ptygrp" ; then
                    289: AC_DEFINE_UNQUOTED(PTYMODE, $ptymode)
                    290: AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
                    291: else
                    292: 
                    293: AC_CHECKING(default tty permissions/group)
                    294: rm -f conftest_grp
                    295: AC_TRY_RUN([
                    296: #include <sys/types.h>
                    297: #include <sys/stat.h>
                    298: #include <stdio.h>
                    299: main()
                    300: {
                    301:   struct stat sb;
                    302:   char *x,*ttyname();
                    303:   int om, m;
                    304:   FILE *fp;
                    305: 
                    306:   if (!(x = ttyname(0))) exit(1);
                    307:   if (stat(x, &sb)) exit(1);
                    308:   om = sb.st_mode;
                    309:   if (om & 002) exit(0);
                    310:   m = system("mesg y");
                    311:   if (m == -1 || m == 127) exit(1);
                    312:   if (stat(x, &sb)) exit(1);
                    313:   m = sb.st_mode;
                    314:   if (chmod(x, om)) exit(1);
                    315:   if (m & 002) exit(0);
                    316:   if (sb.st_gid == getgid()) exit(1);
                    317:   if (!(fp=fopen("conftest_grp", "w")))
                    318:     exit(1);
                    319:   fprintf(fp, "%d\n", sb.st_gid);
                    320:   fclose(fp);
                    321:   exit(0);
                    322: }
                    323: ],[
                    324:     if test -f conftest_grp; then
                    325:        ptygrp=`cat conftest_grp`
                    326:        AC_NOTE([- pty mode: $ptymode, group: $ptygrp])
                    327:        AC_DEFINE_UNQUOTED(PTYMODE, $ptymode)
                    328:        AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
                    329:     else
                    330:        AC_NOTE(- ptys are world accessable)
                    331:     fi
                    332: ],[
                    333:     WRITEPATH=''
                    334:     XTERMPATH=''
                    335:     AC_PATH_PROG(WRITEPATH, write)
                    336:     AC_PATH_PROG(XTERMPATH, xterm)
                    337:     found=
                    338:     if test -n "$WRITEPATH$XTERMPATH"; then
                    339:       findfollow=
                    340:       lsfollow=
                    341:       found=`find $WRITEPATH $XTERMPATH -follow -print 2>/dev/null`
                    342:       if test -n "$found"; then
                    343:        findfollow=-follow
                    344:        lsfollow=L
                    345:       fi
                    346:       if test -n "$XTERMPATH"; then
                    347:        ptygrpn=`ls -l$lsfollow $XTERMPATH | sed -n -e 1p | $AWK '{print $4}'`
                    348:        if test tty != "$ptygrpn"; then
                    349:          XTERMPATH=
                    350:        fi
                    351:       fi
                    352:     fi
                    353:     if test -n "$WRITEPATH$XTERMPATH"; then
                    354:       found=`find $WRITEPATH $XTERMPATH $findfollow -perm -2000 -print` 
                    355:       if test -n "$found"; then
                    356:        ptygrp=`ls -ln$lsfollow $found | sed -n -e 1p | $AWK '{print $4}'`
                    357:        AC_NOTE([- pty mode: $ptymode, group: $ptygrp])
                    358:        AC_DEFINE_UNQUOTED(PTYMODE, $ptymode)
                    359:        AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
                    360:       else
                    361:        AC_NOTE(- ptys are world accessable)
                    362:       fi
                    363:     else
                    364:       AC_NOTE(- can't determine - assume ptys are world accessable)
                    365:     fi
                    366:   ]
                    367: )
                    368: rm -f conftest_grp
                    369: fi
                    370: 
                    371: dnl
                    372: dnl    ****  signal handling  ****
                    373: dnl
                    374: if test -n "$posix" ; then
                    375: 
                    376: dnl POSIX has reliable signals with void return type.
                    377: AC_NOTE(assuming posix signal definition)
                    378: AC_DEFINE(SIGVOID)
                    379: 
                    380: else
                    381: 
                    382: AC_CHECKING(return type of signal handlers)
                    383: AC_TRY_COMPILE(
                    384: [#include <sys/types.h>
                    385: #include <signal.h>
                    386: #ifdef signal
                    387: #undef signal
                    388: #endif
                    389: extern void (*signal ()) ();], [int i;], AC_DEFINE(SIGVOID))
                    390: AC_CHECKING(sigset)
                    391: AC_TRY_LINK([
                    392: #include <sys/types.h>
                    393: #include <signal.h>
                    394: ],[
                    395: #ifdef SIGVOID
                    396: sigset(0, (void (*)())0);
                    397: #else
                    398: sigset(0, (int (*)())0);
                    399: #endif
                    400: ], AC_DEFINE(USESIGSET))
                    401: AC_CHECKING(signal implementation)
                    402: AC_TRY_RUN([
                    403: #include <sys/types.h>
                    404: #include <signal.h>
                    405: 
                    406: #ifndef SIGCLD
                    407: #define SIGCLD SIGCHLD
                    408: #endif
                    409: #ifdef USESIGSET
                    410: #define signal sigset
                    411: #endif
                    412: 
                    413: int got;
                    414: 
                    415: #ifdef SIGVOID
                    416: void
                    417: #endif
                    418: hand()
                    419: {
                    420:   got++;
                    421: }
                    422: 
                    423: main()
                    424: {
                    425:   /* on hpux we use sigvec to get bsd signals */
                    426: #ifdef __hpux
                    427:   (void)signal(SIGCLD, hand);
                    428:   kill(getpid(), SIGCLD);
                    429:   kill(getpid(), SIGCLD);
                    430:   if (got < 2)
                    431:     exit(1);
                    432: #endif
                    433:   exit(0);
                    434: }
                    435: ],,AC_DEFINE(SYSVSIGS))
                    436: 
                    437: fi
                    438: 
                    439: AC_CHECK_HEADERS(sys/stropts.h sys/wait.h sgtty.h sys/select.h)
                    440: AC_CHECK_HEADERS(term.h)
                    441: 
                    442: AC_OUTPUT(Makefile)

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