diff --git a/daemon/bin/osxmain.cpp b/daemon/bin/osxmain.cpp
index c98b101ffe330fe3f3040491b0c278a57fb6be35..f147f806036f8977dc1666592d57f480ac8a4fef 100644
--- a/daemon/bin/osxmain.cpp
+++ b/daemon/bin/osxmain.cpp
@@ -151,7 +151,7 @@ static int osxTests()
         .config_ev_handlers = {},
         .pres_ev_handlers = {}
 #ifdef RING_VIDEO
-        .video_ev_handlers = {}
+        ,.video_ev_handlers = {}
 #endif
     };
 
diff --git a/daemon/configure.ac b/daemon/configure.ac
index ea7a9546138b2a6fdcf9b8fc0e43cbd5fba869a9..2dd38575ed4151aec9afeda1b2094f1684812ac9 100644
--- a/daemon/configure.ac
+++ b/daemon/configure.ac
@@ -364,7 +364,10 @@ AS_IF([test "x$enable_video" != "xno"],
       [
         AC_DEFINE(RING_VIDEO, [], [Video support enabled])
         AM_CONDITIONAL(RING_VIDEO, true)
-        PKG_CHECK_MODULES(UDEV, libudev,, AC_MSG_ERROR([Missing libudev development files]))
+        AS_IF([test "$SYS" = linux],[
+            PKG_CHECK_MODULES(UDEV, libudev,, AC_MSG_ERROR([Missing libudev development files]))
+        ],[
+        ])
     ],
     [
      AM_CONDITIONAL(RING_VIDEO, false)
diff --git a/daemon/src/Makefile.am b/daemon/src/Makefile.am
index 0b475ed79a02eb0be5bf909fb1c07513ee817d59..cb9a23f615b120ca971f3d9dda4097fc643b4617 100644
--- a/daemon/src/Makefile.am
+++ b/daemon/src/Makefile.am
@@ -1,8 +1,13 @@
 include ../globals.mak
 
+RING_VIDEO_LIBS=
+
 if RING_VIDEO
-RING_VIDEO_LIBS=./media/video/libvideo.la \
-			   ./media/video/v4l2/libv4l2.la
+RING_VIDEO_LIBS+=./media/video/libvideo.la
+if HAVE_LINUX
+RING_VIDEO_LIBS+= \
+                ./media/video/v4l2/libv4l2.la
+endif
 endif
 
 if BUILD_INSTANT_MESSAGING
diff --git a/daemon/src/media/Makefile.am b/daemon/src/media/Makefile.am
index b245d41e7d7b2f1a53fe1fd7c1777b1678e77b18..3e587e4ef1fc45632c44c58ba63fcbe2b96fd33a 100644
--- a/daemon/src/media/Makefile.am
+++ b/daemon/src/media/Makefile.am
@@ -36,7 +36,3 @@ libmedia_la_LDFLAGS = @LIBAVCODEC_LIBS@ @LIBAVFORMAT_LIBS@ @LIBAVDEVICE_LIBS@ @L
 AM_CFLAGS=@LIBAVCODEC_CFLAGS@ @LIBAVFORMAT_CFLAGS@ @LIBAVDEVICE_CFLAGS@ @LIBSWSCALE_CFLAGS@
 
 AM_CXXFLAGS=@LIBAVCODEC_CFLAGS@ @LIBAVFORMAT_CFLAGS@ @LIBAVDEVICE_CFLAGS@ @LIBSWSCALE_CFLAGS@
-
-if RING_VIDEO
-AM_CXXFLAGS += @UDEV_CFLAGS@
-endif
diff --git a/daemon/src/media/video/Makefile.am b/daemon/src/media/video/Makefile.am
index 899fc5ea936d8280455ff7b09cbc5b8ef074b607..c638ece1280d4870ca7dbb40065b8be0f3d4d0c7 100644
--- a/daemon/src/media/video/Makefile.am
+++ b/daemon/src/media/video/Makefile.am
@@ -1,6 +1,10 @@
 include $(top_srcdir)/globals.mak
 
-SUBDIRS=v4l2 test
+SUBDIRS= test
+
+if HAVE_LINUX
+SUBDIRS+=v4l2
+endif
 
 noinst_LTLIBRARIES = libvideo.la
 libvideo_la_SOURCES = \
@@ -18,5 +22,5 @@ libvideo_la_SOURCES = \
 
 libvideo_la_LIBADD = @LIBAVCODEC_LIBS@ @LIBAVFORMAT_LIBS@ @LIBAVDEVICE_LIBS@ @LIBSWSCALE_LIBS@ @LIBAVUTIL_LIBS@
 
-AM_CXXFLAGS=@LIBAVCODEC_CFLAGS@ @LIBAVFORMAT_CFLAGS@ @LIBAVDEVICE_CFLAGS@ @LIBSWSCALE_CFLAGS@ @UDEV_CFLAGS@
+AM_CXXFLAGS=@LIBAVCODEC_CFLAGS@ @LIBAVFORMAT_CFLAGS@ @LIBAVDEVICE_CFLAGS@ @LIBSWSCALE_CFLAGS@
 AM_CFLAGS=@LIBAVCODEC_CFLAGS@ @LIBAVFORMAT_CFLAGS@ @LIBAVDEVICE_CFLAGS@ @LIBSWSCALE_CFLAGS@
diff --git a/daemon/src/media/video/v4l2/Makefile.am b/daemon/src/media/video/v4l2/Makefile.am
index e77b30e517c1570d93cd608cc4bf96e2f4a0ade8..99339d30508420d98aece34613f5c4b785398f5e 100644
--- a/daemon/src/media/video/v4l2/Makefile.am
+++ b/daemon/src/media/video/v4l2/Makefile.am
@@ -6,4 +6,5 @@ libv4l2_la_SOURCES = \
 	video_device_impl.cpp \
 	video_device_monitor_impl.cpp
 
+AM_CXXFLAGS = @UDEV_CFLAGS@
 libv4l2_la_LIBADD = @UDEV_LIBS@
diff --git a/daemon/src/media/video/video_rtp_session.h b/daemon/src/media/video/video_rtp_session.h
index 705670d6cd8b3d184f454a3ae017e49161360b89..03e548ca094c0c4f54f10397e5dfaff154934735 100644
--- a/daemon/src/media/video/video_rtp_session.h
+++ b/daemon/src/media/video/video_rtp_session.h
@@ -78,19 +78,19 @@ private:
     void startReceiver();
 
     // all public methods must be locked internally before use
-    std::recursive_mutex mutex_ = {};
+    std::recursive_mutex mutex_;
 
-    std::unique_ptr<SocketPair> socketPair_ = nullptr;
-    std::unique_ptr<VideoSender> sender_ = nullptr;
-    std::unique_ptr<VideoReceiveThread> receiveThread_ = nullptr;
+    std::unique_ptr<SocketPair> socketPair_;
+    std::unique_ptr<VideoSender> sender_;
+    std::unique_ptr<VideoReceiveThread> receiveThread_;
     std::map<std::string, std::string> txArgs_;
-    std::map<std::string, std::string> rxArgs_ = {};
+    std::map<std::string, std::string> rxArgs_;
     bool sending_ = false;
     bool receiving_ = false;
     const std::string callID_;
-    Conference* conference_ = nullptr;
-    std::shared_ptr<VideoMixer> videoMixer_ = nullptr;
-    std::shared_ptr<VideoFrameActiveWriter> videoLocal_ = nullptr;
+    Conference* conference_;
+    std::shared_ptr<VideoMixer> videoMixer_;
+    std::shared_ptr<VideoFrameActiveWriter> videoLocal_;
 };
 
 }} // namespace ring::video