]> sigrok.org Git - libserialport.git/commitdiff
Fix building on OSX and Linux.
authorMartin Ling <redacted>
Sat, 2 Nov 2013 19:14:36 +0000 (19:14 +0000)
committerUwe Hermann <redacted>
Thu, 14 Nov 2013 23:42:37 +0000 (00:42 +0100)
configure.ac
serialport.c

index a12de6dcf5e51908f25f6ba2d2efd74e47074119..31e54bb8cfa308e0d406d5eba81f14b78df411c1 100644 (file)
@@ -31,6 +31,8 @@ AC_INIT([libserialport], [sp_package_version], [martin-libserialport@earth.li],
 AC_CONFIG_MACRO_DIR([autostuff])
 AC_CONFIG_AUX_DIR([autostuff])
 
+AC_CANONICAL_TARGET
+
 # We require at least automake 1.11 (needed for 'silent rules').
 AM_INIT_AUTOMAKE([1.11 -Wall -Werror])
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
@@ -77,6 +79,18 @@ AC_SUBST(SP_LIB_LDFLAGS)
 # These are already checked: inttypes.h stdint.h stdlib.h string.h unistd.h.
 AC_CHECK_HEADERS([sys/types.h sys/stat.h fcntl.h termios.h sys/ioctl.h errno.h])
 
+case $target_os in
+*linux*)
+       PKG_CHECK_MODULES([libudev], [libudev >= 0],
+               [CFLAGS="$CFLAGS $libudev_CFLAGS"; LIBS="$LIBS $libudev_LIBS"],
+               [AC_MSG_ERROR([libudev.h not found])])
+       ;;
+*darwin*)
+       LDFLAGS="$LDFLAGS -Wl,-framework -Wl,IOKit -Wl,-framework -Wl,CoreFoundation"
+       AC_CHECK_HEADER(IOKit/IOKitLib.h, [], [AC_MSG_ERROR([IOKit/IOKitLib.h not found])])
+       ;;
+esac
+
 # Checks for typedefs, structures, and compiler characteristics.
 AC_C_INLINE
 AC_TYPE_SIZE_T
index 20a4afba25bf6b64e99269323d7b85b12debb442..e8de069fb9d1d34d344bf943f86b70aba016dc70 100644 (file)
@@ -34,8 +34,9 @@
 #include <sys/ioctl.h>
 #endif
 #ifdef __APPLE__
-#include <IOKitLib.h>
-#include <serial/IOSerialKeys.h>
+#include <IOKit/IOKitLib.h>
+#include <IOKit/serial/IOSerialKeys.h>
+#include <sys/syslimits.h>
 #endif
 #ifdef __linux__
 #include "libudev.h"
@@ -148,7 +149,7 @@ out_close:
        if (!(list = sp_list_new()))
                goto out;
 
-       while (port = IOIteratorNext(iter)) {
+       while ((port = IOIteratorNext(iter))) {
                cf_path = IORegistryEntryCreateCFProperty(port,
                                CFSTR(kIOCalloutDeviceKey), kCFAllocatorDefault, 0);
                if (cf_path) {