+ LIBS="$LIBS -framework CoreVideo -framework IOKit"
+ ;;
+esac
+
+## we found all the libs and headers that we need for the client applications
+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
+ if test "x$HAVE_PKG_CONFIG" = "xyes" ; then
+ PKG_CHECK_MODULES([UDEV],[libudev],use_udev="yes",AC_MSG_WARN($msg_udev_missing))
+ fi
+
+ ## we need dirent.h on linux too
+ if test "$use_udev" = "yes"; then
+ AC_CHECK_HEADER(dirent.h,,[use_udev="no";AC_MSG_WARN($msg_dirent_missing)])
+ fi
+
+ if test "$use_udev" != "yes"; then
+ use_adapter_detection="no"
+ fi
+
+ ## search for lockdev
+ 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))
+
+ ## search for the RPi API. we need to check a couple of things to see if
+ ## it's recent enough and contains the calls needed for libCEC to operate
+ ## correctly.
+ if test "x$use_rpi" != "xno"; then
+ CPPFLAGS="$CPPFLAGS $RPI_CFLAGS"
+ libs_pre_rpi="$LIBS"
+ LIBS="$LIBS $RPI_LIBS -lvcos -lvchiq_arm"
+
+ check_rpi_cec_service="yes"
+
+ ## check for headers we need
+ AC_CHECK_HEADER(interface/vmcs_host/vc_cec.h,,check_rpi_cec_service="no")
+ AC_CHECK_HEADER(interface/vmcs_host/vc_cecservice.h,,check_rpi_cec_service="no")
+ AC_CHECK_HEADER(interface/vchiq_arm/vchiq_if.h,,check_rpi_cec_service="no")
+ AC_CHECK_HEADER(bcm_host.h,,check_rpi_cec_service="no")
+
+ ## check if the headers contain support for libCEC.
+ ## VC_CECSERVICE_VER needs to be defined
+ AC_MSG_CHECKING([interface/vmcs_host/vc_cec.h compatibility])
+
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <interface/vmcs_host/vc_cecservice.h>
+#include <interface/vchiq_arm/vchiq_if.h>
+#if !defined(VC_CECSERVICE_VER)
+#error RPi headers does not contain libCEC support
+#endif]], [[]])],[AC_MSG_RESULT([yes])],[check_rpi_cec_service="no"; AC_MSG_RESULT([no])])
+
+ ## check if the methods we're using can be found in libbcm_host.so, so we don't use an incompatible version
+ AC_CHECK_LIB(bcm_host,vchi_initialise,,check_rpi_cec_service="no")
+ libs_tmp="$LIBS"
+ AC_CHECK_LIB(bcm_host,vc_vchi_cec_init,,check_rpi_cec_service="no")
+ AC_CHECK_LIB(bcm_host,vc_cec_get_logical_address,,check_rpi_cec_service="no")
+ AC_CHECK_LIB(bcm_host,vc_cec_get_physical_address,,check_rpi_cec_service="no")
+ AC_CHECK_LIB(bcm_host,vc_cec_param2message,,check_rpi_cec_service="no")
+ AC_CHECK_LIB(bcm_host,vc_cec_poll_address,,check_rpi_cec_service="no")
+ AC_CHECK_LIB(bcm_host,vc_cec_register_callback,,check_rpi_cec_service="no")
+ AC_CHECK_LIB(bcm_host,vc_cec_release_logical_address,,check_rpi_cec_service="no")
+ AC_CHECK_LIB(bcm_host,vc_cec_set_passive,,check_rpi_cec_service="no")
+ AC_CHECK_LIB(bcm_host,vcos_init,,check_rpi_cec_service="no")
+ AC_CHECK_LIB(bcm_host,vchiq_initialise,,check_rpi_cec_service="no")
+ AC_CHECK_LIB(bcm_host,vchi_initialise,,check_rpi_cec_service="no")
+ AC_CHECK_LIB(bcm_host,vchi_create_connection,,check_rpi_cec_service="no")
+ AC_CHECK_LIB(bcm_host,bcm_host_init,,check_rpi_cec_service="no")
+ LIBS="$libs_tmp"
+
+ if test "x$check_rpi_cec_service" != "xyes" && test "x$use_rpi" = "xyes"; then
+ AC_MSG_ERROR($msg_rpi_api_missing)
+ elif test "x$check_rpi_cec_service" != "xyes"; then
+ use_rpi="no"
+ LIBS="$libs_pre_rpi"
+ fi
+ fi