Annotation of embedaddon/readline/examples/rlfe/configure.in, revision 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>