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>