]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Add support for OpenBSD compilation
authorMike Brady <mike@openbsd.localdomain>
Fri, 9 Feb 2018 21:11:39 +0000 (21:11 +0000)
committerMike Brady <mike@openbsd.localdomain>
Fri, 9 Feb 2018 21:11:39 +0000 (21:11 +0000)
Makefile.am
common.c
common.h
configure.ac
definitions.h
player.c
shairport.c

index 4d774433178470c0eaa61450c15bf69cede6a043..45f3b53907eb5899a1fc45dedc26ea1ca0c9ce67 100644 (file)
@@ -9,9 +9,13 @@ shairport_sync_SOURCES = shairport.c rtsp.c mdns.c mdns_external.c common.c rtp.
 AM_CFLAGS = -Wno-multichar -DSYSCONFDIR=\"$(sysconfdir)\"
 if BUILD_FOR_FREEBSD
   AM_CPPFLAGS = -I/usr/local/include -Wno-multichar -DSYSCONFDIR=\"$(sysconfdir)\" -O2
+else
+if BUILD_FOR_OPENBSD
+  AM_CPPFLAGS = -I/usr/local/include -Wno-multichar -DSYSCONFDIR=\"$(sysconfdir)\"
 else
   AM_CPPFLAGS = -Wno-multichar -DSYSCONFDIR=\"$(sysconfdir)\"
 endif
+endif
 
 if USE_APPLE_ALAC
   shairport_sync_SOURCES += apple_alac.cpp
index b854d8395ce6f8779a9e069d50920a94085780c9..03ede87737add75b3b09312e1e34ae5abde7ee69 100644 (file)
--- a/common.c
+++ b/common.c
@@ -759,7 +759,7 @@ double vol2attn(double vol, long max_db, long min_db) {
 
 uint64_t get_absolute_time_in_fp() {
   uint64_t time_now_fp;
-#ifdef COMPILE_FOR_LINUX_AND_FREEBSD_AND_CYGWIN
+#ifdef COMPILE_FOR_LINUX_AND_FREEBSD_AND_CYGWIN_AND_OPENBSD
   struct timespec tn;
   // can't use CLOCK_MONOTONIC_RAW as it's not implemented in OpenWrt
   clock_gettime(CLOCK_MONOTONIC, &tn);
index 22ebacc45727d4d8bfadcffd94bbd4e2d94ea3cc..89e1525956eab21d23d13af06ba4026a50e68a8a 100644 (file)
--- a/common.h
+++ b/common.h
 #include "definitions.h"
 #include "mdns.h"
 
-#if defined(__APPLE__) && defined(__MACH__)
-/* Apple OSX and iOS (Darwin). ------------------------------ */
-#include <TargetConditionals.h>
-#if TARGET_OS_MAC == 1
-/* OSX */
-#define COMPILE_FOR_OSX 1
-#endif
-#endif
-
-#if defined(__linux__) || defined(__FreeBSD__) || defined(__CYGWIN__)
-/* Linux and FreeBSD */
-#define COMPILE_FOR_LINUX_AND_FREEBSD_AND_CYGWIN 1
-#endif
-
 // struct sockaddr_in6 is bigger than struct sockaddr. derp
 #ifdef AF_INET6
 #define SOCKADDR struct sockaddr_storage
index f788b2a55ed3fccbad76d1ecc20db2bc0995383e..dec61a387ce07c086e6aa489f3331aeae192eace 100644 (file)
@@ -28,7 +28,13 @@ if test "x${with_os}" = xlinux -o "x${with_os}" = xfreebsd ; then
  AC_CHECK_LIB([rt],[clock_gettime], , AC_MSG_ERROR(librt needed))
 fi
 
-AM_CONDITIONAL([BUILD_FOR_FREEBSD], [test "x${with_os}" = xfreebsd ])
+if test "x${with_os}" = xopenbsd ; then
+ AC_CHECK_LIB([c],[clock_gettime], , AC_MSG_ERROR(libc needed))
+fi
+
+ AM_CONDITIONAL([BUILD_FOR_FREEBSD], [test "x${with_os}" = xfreebsd ])
+
+AM_CONDITIONAL([BUILD_FOR_OPENBSD], [test "x${with_os}" = xopenbsd ])
 
 ##### Some build systems are not fully using pkg-config, so we can use the flag ${with_pkg_config} on a case-by-case basis
 ##### to control how to deal with them
index e705144cf08794497fdea322284325900175e0b1..02b09eb8b762b6b9e1229fea77701bc1bac2bc8c 100644 (file)
@@ -19,9 +19,8 @@
 #endif
 #endif
 
-#if defined(__linux__) || defined(__FreeBSD__) || defined(__CYGWIN__)
-/* Linux and FreeBSD */
-#define COMPILE_FOR_LINUX_AND_FREEBSD_AND_CYGWIN 1
+#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__CYGWIN__)
+#define COMPILE_FOR_LINUX_AND_FREEBSD_AND_CYGWIN_AND_OPENBSD 1
 #endif
 
 // struct sockaddr_in6 is bigger than struct sockaddr. derp
index 8641d1da610b7a4b83a75a013aca1b1a282c0dfe..fb617770a104da3c0e52a215dea1c544901e74a7 100644 (file)
--- a/player.c
+++ b/player.c
@@ -1120,7 +1120,7 @@ static abuf_t *buffer_get_frame(rtsp_conn_info *conn) {
       time_to_wait_for_wakeup_fp *= 4 * 352;      // four full 352-frame packets
       time_to_wait_for_wakeup_fp /= 3;            // four thirds of a packet time
 
-#ifdef COMPILE_FOR_LINUX_AND_FREEBSD_AND_CYGWIN
+#ifdef COMPILE_FOR_LINUX_AND_FREEBSD_AND_CYGWIN_AND_OPENBSD
       uint64_t time_of_wakeup_fp = local_time_now + time_to_wait_for_wakeup_fp;
       uint64_t sec = time_of_wakeup_fp >> 32;
       uint64_t nsec = ((time_of_wakeup_fp & 0xffffffff) * 1000000000) >> 32;
@@ -1384,7 +1384,7 @@ static void *player_thread_func(void *arg) {
   if (rc)
     debug(1, "Error initialising vol_mutex.");
 // set the flowcontrol condition variable to wait on a monotonic clock
-#ifdef COMPILE_FOR_LINUX_AND_FREEBSD_AND_CYGWIN
+#ifdef COMPILE_FOR_LINUX_AND_FREEBSD_AND_CYGWIN_AND_OPENBSD
   pthread_condattr_t attr;
   pthread_condattr_init(&attr);
   pthread_condattr_setclock(&attr, CLOCK_MONOTONIC); // can't do this in OS X, and don't need it.
index 758b67c3876f48d7502fbe2ebe336c3fc4dfb9d4..5107592e0ec807d41d70ac4e51a20c12ff617dd8 100644 (file)
@@ -2,7 +2,7 @@
  * Shairport, an Apple Airplay receiver
  * Copyright (c) James Laird 2013
  * All rights reserved.
- * Modifications (c) Mike Brady 2014--2017
+ * Modifications (c) Mike Brady 2014--2018
  *
  * Permission is hereby granted, free of charge, to any person
  * obtaining a copy of this software and associated documentation
@@ -31,6 +31,7 @@
 #include <libconfig.h>
 #include <libgen.h>
 #include <memory.h>
+#include <sys/socket.h>
 #include <net/if.h>
 #include <popt.h>
 #include <stdio.h>