dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.61) AC_INIT([Device::SerialPort],[1.04],[devser-bugs@outflux.net]) AC_REVISION($Revision: 313 $) AC_CONFIG_SRCDIR([SerialPort.xs]) AC_CONFIG_HEADERS([config.h]) AC_PROG_CC AC_PROG_CC_STDC AC_HEADER_STDC AC_ISC_POSIX dnl Find all the possible headers our little friends are hiding in AC_CHECK_HEADERS(sys/ioctl.h) dnl Linux AC_CHECK_HEADERS(termios.h) dnl Linux AC_CHECK_HEADERS(sys/termiox.h) dnl AIX AC_CHECK_HEADERS(sys/termios.h) dnl OpenBSD AC_CHECK_HEADERS(sys/ttycom.h) dnl OpenBSD AC_CHECK_HEADERS(sys/modem.h) dnl HPUX AC_CHECK_HEADERS(IOKit/serial/ioss.h) dnl OSX dnl Actually find all the defines in the suspected headers dnl *** IF YOU MODIFY THESE, YOU MUST MODIFY SerialPort.xs *** AC_LANG(C) for check_define in \ _SC_CLK_TCK \ TIOCMBIS TIOCMBIC TIOCMGET \ CRTSCTS OCRNL ONLCR ECHOKE ECHOCTL \ TIOCM_CAR TIOCM_CD TIOCM_RNG TIOCM_RI TIOCM_CTS TIOCM_DSR \ TIOCMIWAIT TIOCGICOUNT \ TIOCINQ FIONREAD \ TIOCOUTQ \ TIOCSER_TEMT TIOCM_LE \ TIOCSERGETLSR \ TIOCSDTR TIOCCDTR \ TIOCM_RTS TIOCM_DTR \ CTSXON RTSXOFF TCGETX TCSETX \ IOSSIOSPEED \ B0 B50 B75 B110 B134 B150 B200 B300 B600 \ B1200 B1800 B2400 B4800 B9600 B19200 B38400 B57600 \ B115200 B230400 B460800 B500000 B576000 B921600 B1000000 \ B1152000 B1500000 B2000000 B2500000 B3000000 B3500000 B4000000 \ ; do AC_MSG_CHECKING([definition of $check_define]) AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_SYS_IOCTL_H # include #endif #ifdef HAVE_TERMIOS_H # include #endif #ifdef HAVE_SYS_TERMIOX_H # include #endif #ifdef HAVE_SYS_TERMIOS_H # include #endif #ifdef HAVE_SYS_TTYCOM_H # include #endif #ifdef HAVE_SYS_MODEM_H # include #endif #ifdef HAVE_IOKIT_SERIAL_IOSS_H # include #endif ]], [int a=$check_define]) ], [ eval "check_got_$check_define=yes" AC_MSG_RESULT([found]) ], [ eval "check_got_$check_define=no" AC_MSG_RESULT([missing]) ] ) done dnl ************************************** dnl Verify per-usage sanity of the defines dnl ************************************** dnl Can ioctl at all AC_MSG_CHECKING([[serial control via ioctl]]) if test "$check_got_TIOCMBIS" = "yes" && test "$check_got_TIOCMBIC" = "yes"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_MSG_WARN([[Without ioctl support, most serial control functions are missing]]) fi dnl Get/Set RTS AC_MSG_CHECKING([[read/write of RTS signal]]) if test "$check_got_TIOCMBIS" = "yes" && test "$check_got_TIOCMBIC" = "yes" && test "$check_got_TIOCM_RTS" = "yes"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_MSG_WARN([[You will not be able to check or change the RTS line (direct flow control)]]) fi dnl Get/Set DTR AC_MSG_CHECKING([[read/write of DTR signal]]) if test "$check_got_TIOCMBIS" = "yes" && test "$check_got_TIOCMBIC" = "yes" && test "$check_got_TIOCM_DTR" = "yes"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_MSG_WARN([[You will not be able to check or change the DTR line (modem hang up)]]) fi dnl Get modem lines AC_MSG_CHECKING([[read access to modem lines]]) if test "$check_got_TIOCMGET" = "yes"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_MSG_WARN([[You will not be able to check modem status lines (carrier, ring, etc)]]) fi dnl Get Buffer Status AC_MSG_CHECKING([[read access to buffer status]]) if test "$check_got_TIOCINQ" = "yes" && test "$check_got_TIOCOUTQ" = "yes"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_MSG_WARN([[You will not be able to check the serial buffer state (to test for flushes)]]) fi dnl Get Line Status AC_MSG_CHECKING([[read access to serial line status]]) if test "$check_got_TIOCSERGETLSR" = "yes"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_MSG_WARN([[You will not be able to check serial line status (to do full write flush)]]) fi dnl Weird Flow Control Setting AC_MSG_CHECKING([[normal CTS/RTS flow control]]) if test "$check_got_CTSXON" = "yes" && test "$check_got_RTSXOFF" = "yes" && test "$check_got_TCGETX" = "yes" && test "$check_got_TCSETX" = "yes"; then AC_MSG_RESULT([no]) AC_MSG_WARN([[Your system does CTS/RTS flow control strangely. Hopefully, we can work around it]]) else AC_MSG_RESULT([yes]) fi AC_OUTPUT