Revision: 41169
          http://brlcad.svn.sourceforge.net/brlcad/?rev=41169&view=rev
Author:   starseeker
Date:     2010-10-29 14:01:33 +0000 (Fri, 29 Oct 2010)

Log Message:
-----------
Expand serial port check and add flag to results.

Modified Paths:
--------------
    brlcad/branches/cmake/src/other/tcl/CMake/CheckSystemFunctionality.cmake

Modified: 
brlcad/branches/cmake/src/other/tcl/CMake/CheckSystemFunctionality.cmake
===================================================================
--- brlcad/branches/cmake/src/other/tcl/CMake/CheckSystemFunctionality.cmake    
2010-10-29 07:07:05 UTC (rev 41168)
+++ brlcad/branches/cmake/src/other/tcl/CMake/CheckSystemFunctionality.cmake    
2010-10-29 14:01:33 UTC (rev 41169)
@@ -243,7 +243,7 @@
 
 
 MACRO(TERMIOS_TERMIO_SGTTY)
-       SET(TERMIOS_SRC "
+       SET(TERMIOS_SRC_1 "
        #include <termios.h>
        int main() {
        struct termios t;
@@ -255,7 +255,22 @@
                return 1;
        }
        ")
-       SET(TERMIO_SRC "
+       SET(TERMIOS_SRC_2 "
+       #include <termios.h>
+       #include <errno.h>
+
+       int main() {
+       struct termios t;
+       if (tcgetattr(0, &t) == 0
+               || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+               cfsetospeed(&t, 0);
+               t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
+               return 0;
+               }
+               return 1;
+               }
+       ")
+       SET(TERMIO_SRC_1 "
        #include <termio.h>
        int main() {
        struct termio t;
@@ -266,7 +281,21 @@
                return 1;
        }
    ")
-       SET(SGTTY_SRC "
+       SET(TERMIO_SRC_2 "
+       #include <termio.h>
+       #include <errno.h>
+
+       int main() {
+       struct termio t;
+       if (ioctl(0, TCGETA, &t) == 0
+               || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+               t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
+               return 0;
+               }
+               return 1;
+               }
+       ")
+       SET(SGTTY_SRC_1 "
        #include <sgtty.h>
        int main() {
        struct sgttyb t;
@@ -278,13 +307,51 @@
                return 1;
        }
        ")
-       CHECK_C_SOURCE_RUNS("${TERMIOS_SRC}" HAVE_TERMIOS)
+       SET(SGTTY_SRC_2 "
+       #include <sgtty.h>
+       #include <errno.h>
+
+       int main() {
+       struct sgttyb t;
+       if (ioctl(0, TIOCGETP, &t) == 0
+               || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+               t.sg_ospeed = 0;
+               t.sg_flags |= ODDP | EVENP | RAW;
+               return 0;
+               }
+               return 1;
+               }
+       ")
+       CHECK_C_SOURCE_RUNS("${TERMIOS_SRC_1}" HAVE_TERMIOS)
        IF(NOT HAVE_TERMIOS)
-               CHECK_C_SOURCE_RUNS("${TERMIO_SRC}" HAVE_TERMIO)
+               CHECK_C_SOURCE_RUNS("${TERMIO_SRC_1}" HAVE_TERMIO)
        ENDIF(NOT HAVE_TERMIOS)
        IF(NOT HAVE_TERMIO AND NOT HAVE_TERMIOS)
-               CHECK_C_SOURCE_RUNS("${SGTTY_SRC}" HAVE_SGTTY)
+               CHECK_C_SOURCE_RUNS("${SGTTY_SRC_1}" HAVE_SGTTY)
        ENDIF(NOT HAVE_TERMIO AND NOT HAVE_TERMIOS)
+       IF(NOT HAVE_TERMIO AND NOT HAVE_TERMIOS AND NOT HAVE_SGTTY)
+               CHECK_C_SOURCE_RUNS("${TERMIOS_SRC_2}" HAVE_TERMIOS)
+               IF(NOT HAVE_TERMIOS)
+                       CHECK_C_SOURCE_RUNS("${TERMIO_SRC_2}" HAVE_TERMIO)
+               ENDIF(NOT HAVE_TERMIOS)
+               IF(NOT HAVE_TERMIO AND NOT HAVE_TERMIOS)
+                       CHECK_C_SOURCE_RUNS("${SGTTY_SRC_2}" HAVE_SGTTY)
+               ENDIF(NOT HAVE_TERMIO AND NOT HAVE_TERMIOS)
+       ENDIF(NOT HAVE_TERMIO AND NOT HAVE_TERMIOS AND NOT HAVE_SGTTY)
+
+       IF(HAVE_TERMIOS)
+               SET(${CFLAGS_NAME}_CFLAGS "${${CFLAGS_NAME}_CFLAGS} 
-DUSE_TERMIOS=1" CACHE STRING "TCL CFLAGS" FORCE)
+       ELSE(HAVE_TERMIOS)
+               IF(HAVE_TERMIO)
+                       SET(${CFLAGS_NAME}_CFLAGS "${${CFLAGS_NAME}_CFLAGS} 
-DUSE_TERMIO=1" CACHE STRING "TCL CFLAGS" FORCE)
+               ELSE(HAVE_TERMIO)
+                       IF(HAVE_SGTTY)
+                               SET(${CFLAGS_NAME}_CFLAGS 
"${${CFLAGS_NAME}_CFLAGS} -DUSE_SGTTY=1" CACHE STRING "TCL CFLAGS" FORCE)
+                       ENDIF(HAVE_SGTTY)
+               ENDIF(HAVE_TERMIO)
+       ENDIF(HAVE_TERMIOS)
+
+
 ENDMACRO(TERMIOS_TERMIO_SGTTY)
 
 MACRO(CHECK_FD_SET_IN_TYPES_D)


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to