From: Mike Brady Date: Fri, 9 Feb 2018 21:11:39 +0000 (+0000) Subject: Add support for OpenBSD compilation X-Git-Tag: 3.2d29~74 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=283e4930e85fcd3a7bbff03ac2349ddf019eb07d;p=thirdparty%2Fshairport-sync.git Add support for OpenBSD compilation --- diff --git a/Makefile.am b/Makefile.am index 4d774433..45f3b539 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 diff --git a/common.c b/common.c index b854d839..03ede877 100644 --- 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); diff --git a/common.h b/common.h index 22ebacc4..89e15259 100644 --- a/common.h +++ b/common.h @@ -12,20 +12,6 @@ #include "definitions.h" #include "mdns.h" -#if defined(__APPLE__) && defined(__MACH__) -/* Apple OSX and iOS (Darwin). ------------------------------ */ -#include -#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 diff --git a/configure.ac b/configure.ac index f788b2a5..dec61a38 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/definitions.h b/definitions.h index e705144c..02b09eb8 100644 --- a/definitions.h +++ b/definitions.h @@ -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 diff --git a/player.c b/player.c index 8641d1da..fb617770 100644 --- 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. diff --git a/shairport.c b/shairport.c index 758b67c3..5107592e 100644 --- a/shairport.c +++ b/shairport.c @@ -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 #include #include +#include #include #include #include