make liblockdev optional
authorLars Op den Kamp <lars@opdenkamp.eu>
Thu, 6 Dec 2012 22:58:56 +0000 (23:58 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Thu, 6 Dec 2012 22:58:56 +0000 (23:58 +0100)
configure.ac
src/lib/platform/posix/serialport.cpp

index 9512a1eb8877ca7a5b4f8ae11ed4268bf1c11c74..b1796775b2f7a4b83c46793a2a9fa9b1b7ea9959 100644 (file)
@@ -23,7 +23,7 @@ msg_pthread_missing="required library 'pthread' is missing"
 msg_dl_missing="required library 'dl' is missing"
 msg_udev_missing="library 'udev' is missing - adapter detection will not be available"
 msg_dirent_missing="dirent.h header is missing - adapter detection will not be available"
-msg_lockdev_missing="required library 'liblockdev' is missing"
+msg_lockdev_missing="library 'liblockdev' is missing"
 msg_rpi_api_missing="Raspberry Pi API not found or incompatible with libCEC"
 msg_rpi_will_check="will check for RPi support"
 msg_rpi_unsupported_target="will not check for RPi support (unsupported cpu: ${host_cpu})"
@@ -129,6 +129,7 @@ libs_client="$LIBS"
 ## search for udev, lockdev and the RPi API, only required by libCEC
 use_udev="no"
 use_adapter_detection="yes"
+use_lockdev="no"
 case "${host}" in
   *-*-linux*)
     ## search for udev if pkg-config was found
@@ -146,8 +147,9 @@ case "${host}" in
     fi
 
     ## search for lockdev
-    AC_CHECK_HEADER(lockdev.h,,AC_MSG_ERROR($msg_lockdev_missing))
-    AC_CHECK_LIB(lockdev,dev_unlock,,AC_MSG_ERROR($msg_lockdev_missing))
+    use_lockdev="yes"
+    AC_CHECK_HEADER(lockdev.h,,[use_lockdev="no";AC_MSG_WARN($msg_lockdev_missing)])
+    AC_CHECK_LIB(lockdev,dev_unlock,,[use_lockdev="no";AC_MSG_WARN($msg_lockdev_missing)])
 
     AC_CHECK_HEADER(time.h,,AC_MSG_ERROR($msg_required_header_missing))
     AC_CHECK_HEADER(sys/prctl.h,,AC_MSG_ERROR($msg_required_header_missing))
@@ -219,6 +221,10 @@ LIB_INFO="$LIB_INFO 'P8 USB'"
 AC_DEFINE([HAVE_P8_USB],[1],[Define to 1 to include support for the Pulse-Eight USB-CEC Adapter])
 AM_CONDITIONAL(USE_P8_USB, true)
 
+if test "x$use_lockdev" = "xyes"; then
+  AC_DEFINE([HAVE_LOCKDEV],[1],[Define to 1 if liblockdev is installed])
+fi
+
 ## mark adapter detection as available if the required deps were found
 if test "x$use_adapter_detection" = "xyes"; then
   ## mark udev as available if it was found
index 0089521caa370ae6a929f0a0f92459435da28416..f067ac45a873f42203755de6bd95cb9787fa9ce4 100644 (file)
 #define IUCLC  0
 #endif
 #else
+#ifdef HAVE_LOCKDEV
 #include <lockdev.h>
 #endif
+#endif
 
 using namespace std;
 using namespace PLATFORM;
 
 inline bool RemoveLock(const char *strDeviceName)
 {
-  #if !defined(__APPLE__) && !defined(__FreeBSD__)
+  #if !defined(__APPLE__) && !defined(__FreeBSD__) && defined(HAVE_LOCKDEV)
   return dev_unlock(strDeviceName, 0) == 0;
   #else
   void *tmp = (void*)strDeviceName; // silence unused warning
@@ -125,7 +127,7 @@ bool CSerialSocket::Open(uint64_t iTimeoutMs /* = 0 */)
     return false;
   }
 
-  #if !defined(__APPLE__) && !defined(__FreeBSD__)
+  #if !defined(__APPLE__) && !defined(__FreeBSD__) && defined(HAVE_LOCKDEV)
   if (dev_lock(m_strName.c_str()) != 0)
   {
     m_strError = "Couldn't lock the serial port";