Restructure of mono.sln and build properties to better fix static/dynamic library...
[mono.git] / support / serial.c
index 4b8014bb6d9bb4f685e26ed33f25449bf7a6bbb3..5e3d732c005170bbcd4052841fad7dc3b27b342c 100644 (file)
@@ -21,7 +21,7 @@
 #include <sys/ioctl.h>
 
 /* This is for ASYNC_*, serial_struct on linux */
-#if defined(__linux__)
+#if defined(HAVE_LINUX_SERIAL_H)
 #include <linux/serial.h>
 #endif
 
 #endif
 
 /* sys/time.h (for timeval) is required when using osx 10.3 (but not 10.4) */
-#ifdef __APPLE__
+/* IOKit is a private framework in iOS, so exclude there */
+#if defined(__APPLE__) && !defined(HOST_IOS) && !defined(HOST_WATCHOS) && !defined(HOST_APPLETVOS)
+#define HAVE_IOKIT 1
+#endif
+
+#if defined(HAVE_IOKIT)
 #include <sys/time.h>
 #include <IOKit/IOKitLib.h>
 #include <IOKit/serial/IOSerialKeys.h>
@@ -170,6 +175,11 @@ discard_buffer (int fd, gboolean input)
 gint32
 get_bytes_in_buffer (int fd, gboolean input)
 {
+#if defined(__HAIKU__)
+       /* FIXME: Haiku doesn't support TIOCOUTQ nor FIONREAD on fds */
+       return -1;
+#define TIOCOUTQ 0
+#endif
        gint32 retval;
 
        if (ioctl (fd, input ? FIONREAD : TIOCOUTQ, &retval) == -1) {
@@ -383,7 +393,7 @@ set_attributes (int fd, int baud_rate, MonoParity parity, int dataBits, MonoStop
                if (cfsetospeed (&newtio, baud_rate) < 0 || cfsetispeed (&newtio, baud_rate) < 0)
                        return FALSE;
        } else {
-#if __linux__ || __APPLE__
+#if __linux__ || defined(HAVE_IOKIT)
 
                /* On Linux to set a custom baud rate, we must set the
                 * "standard" baud_rate to 38400.   On Apple we set it purely
@@ -400,7 +410,7 @@ set_attributes (int fd, int baud_rate, MonoParity parity, int dataBits, MonoStop
                return FALSE;
 
        if (custom_baud_rate == TRUE){
-#if defined(__linux__)
+#if defined(HAVE_LINUX_SERIAL_H)
                struct serial_struct ser;
 
                if (ioctl (fd, TIOCGSERIAL, &ser) < 0)
@@ -416,7 +426,7 @@ set_attributes (int fd, int baud_rate, MonoParity parity, int dataBits, MonoStop
                {
                        return FALSE;
                }
-#elif __APPLE__
+#elif defined(HAVE_IOKIT)
                speed_t speed = baud_rate;
                if (ioctl(fd, IOSSIOSPEED, &speed) == -1)
                        return FALSE;