diff options
author | SASANO Takayoshi <uaa@uaa.org.uk> | 2022-07-10 11:03:00 +0900 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2022-10-17 13:11:29 +0200 |
commit | b33ef3f73d632f54c27138e585030c50d76f47aa (patch) | |
tree | 96ced43d54b58c020fc12a776bc77c65cca7868f | |
parent | e288ca7c29d9372e68c9704becdaf9261b30c9bf (diff) | |
download | alsa-lib-b33ef3f73d632f54c27138e585030c50d76f47aa.tar.gz |
add NetBSD/OpenBSD build support (except test/)
Fixes: https://github.com/alsa-project/alsa-lib/pull/250
Signed-off-by: SASANO Takayoshi <uaa@uaa.org.uk>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | include/bswap.h | 5 | ||||
-rw-r--r-- | include/local.h | 8 | ||||
-rw-r--r-- | include/sound/type_compat.h | 20 | ||||
-rw-r--r-- | include/sound/uapi/asoc.h | 2 | ||||
-rw-r--r-- | src/async.c | 10 | ||||
-rw-r--r-- | src/conf.c | 2 | ||||
-rw-r--r-- | src/pcm/pcm.c | 2 | ||||
-rw-r--r-- | src/pcm/pcm_direct.c | 4 | ||||
-rw-r--r-- | src/pcm/pcm_mmap.c | 2 | ||||
-rw-r--r-- | src/seq/seq_midi_event.c | 2 | ||||
-rw-r--r-- | src/shmarea.c | 3 | ||||
-rw-r--r-- | src/ucm/parser.c | 2 | ||||
-rw-r--r-- | src/ucm/ucm_exec.c | 5 |
14 files changed, 52 insertions, 17 deletions
diff --git a/configure.ac b/configure.ac index 864df1d0..9a9eda9b 100644 --- a/configure.ac +++ b/configure.ac @@ -335,7 +335,7 @@ else fi dnl Check for headers -AC_CHECK_HEADERS([endian.h sys/endian.h sys/shm.h]) +AC_CHECK_HEADERS([endian.h sys/endian.h sys/shm.h malloc.h]) dnl Check for resmgr support... AC_MSG_CHECKING(for resmgr support) diff --git a/include/bswap.h b/include/bswap.h index 4e5b3e2a..e590124c 100644 --- a/include/bswap.h +++ b/include/bswap.h @@ -27,6 +27,11 @@ #define bswap_16 bswap16 #define bswap_32 bswap32 #define bswap_64 bswap64 +#elif defined(__OpenBSD__) +#include <sys/endian.h> +#define bswap_16 swap16 +#define bswap_32 swap32 +#define bswap_64 swap64 #elif defined (__sun) #include <sys/byteorder.h> #define bswap_16 BSWAP_16 diff --git a/include/local.h b/include/local.h index 268a9ff1..151e3fd4 100644 --- a/include/local.h +++ b/include/local.h @@ -34,6 +34,9 @@ #include <endian.h> #elif defined(HAVE_SYS_ENDIAN_H) #include <sys/endian.h> +#else +#error Header defining endianness not defined +#endif #ifndef __BYTE_ORDER #define __BYTE_ORDER BYTE_ORDER #endif @@ -43,9 +46,6 @@ #ifndef __BIG_ENDIAN #define __BIG_ENDIAN BIG_ENDIAN #endif -#else -#error Header defining endianness not defined -#endif #include <stdarg.h> #include <poll.h> #include <sys/types.h> @@ -85,6 +85,8 @@ #define versionsort64 versionsort #define alphasort64 alphasort #define ino64_t ino_t +#define fstat64 fstat +#define stat64 stat #endif #define _snd_config_iterator list_head diff --git a/include/sound/type_compat.h b/include/sound/type_compat.h index b994ccfe..0c424efc 100644 --- a/include/sound/type_compat.h +++ b/include/sound/type_compat.h @@ -3,7 +3,7 @@ #ifndef DOC_HIDDEN #include <stdint.h> -#ifdef __linux__ +#if defined(__linux__) #include <linux/types.h> #else typedef uint8_t __u8; @@ -15,8 +15,14 @@ typedef int16_t __s16; typedef int32_t __s32; typedef int64_t __s64; +#if defined(__sun) +#include <sys/byteorder.h> +#define __cpu_to_le32 LE_32(x) +#define __cpu_to_be32 BE_32(x) +#define __cpu_to_le16 LE_16(x) +#define __cpu_to_be16 BE_16(x) +#else #include <endian.h> -#include <byteswap.h> #if __BYTE_ORDER == __LITTLE_ENDIAN #define __cpu_to_le32(x) (x) #define __cpu_to_be32(x) bswap_32(x) @@ -28,20 +34,12 @@ typedef int64_t __s64; #define __cpu_to_le16(x) bswap_16(x) #define __cpu_to_be16(x) (x) #endif +#endif #define __le32_to_cpu __cpu_to_le32 #define __be32_to_cpu __cpu_to_be32 #define __le16_to_cpu __cpu_to_le16 #define __be16_to_cpu __cpu_to_be16 - -#define __le64 __u64 -#define __le32 __u32 -#define __le16 __u16 -#define __le8 __u8 -#define __be64 __u64 -#define __be32 __u32 -#define __be16 __u16 -#define __be8 __u8 #endif #ifndef __kernel_long_t diff --git a/include/sound/uapi/asoc.h b/include/sound/uapi/asoc.h index f32c5697..3903f2f4 100644 --- a/include/sound/uapi/asoc.h +++ b/include/sound/uapi/asoc.h @@ -16,7 +16,9 @@ #ifndef __LINUX_UAPI_SND_ASOC_H #define __LINUX_UAPI_SND_ASOC_H +#if defined(__linux__) #include <linux/types.h> +#endif /* * Maximum number of channels topology kcontrol can represent. diff --git a/src/async.c b/src/async.c index e6a8b5f2..8e8481b5 100644 --- a/src/async.c +++ b/src/async.c @@ -54,6 +54,15 @@ static LIST_HEAD(snd_async_handlers); static void snd_async_handler(int signo ATTRIBUTE_UNUSED, siginfo_t *siginfo, void *context ATTRIBUTE_UNUSED) { +#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__OpenBSD__) + /* siginfo_t does not have si_fd */ + struct list_head *i; + list_for_each(i, &snd_async_handlers) { + snd_async_handler_t *h = list_entry(i, snd_async_handler_t, glist); + if (h->callback) + h->callback(h); + } +#else int fd; struct list_head *i; //assert(siginfo->si_code == SI_SIGIO); @@ -66,6 +75,7 @@ static void snd_async_handler(int signo ATTRIBUTE_UNUSED, siginfo_t *siginfo, vo if (h->fd == fd && h->callback) h->callback(h); } +#endif } /** @@ -4115,7 +4115,7 @@ static int config_file_load(snd_config_t *root, const char *fn, int errors) if (!S_ISDIR(st.st_mode)) return config_file_open(root, fn); #ifndef DOC_HIDDEN -#if defined(_GNU_SOURCE) && !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__sun) && !defined(ANDROID) +#if defined(_GNU_SOURCE) && !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__sun) && !defined(ANDROID) #define SORTFUNC versionsort64 #else #define SORTFUNC alphasort64 diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c index 9aec52d1..927aa055 100644 --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -660,7 +660,9 @@ playback devices. #include <stdio.h> #include <string.h> +#if HAVE_MALLOC_H #include <malloc.h> +#endif #include <stdarg.h> #include <signal.h> #include <ctype.h> diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c index 39b82b96..c16956f1 100644 --- a/src/pcm/pcm_direct.c +++ b/src/pcm/pcm_direct.c @@ -44,12 +44,16 @@ * */ +#if !defined(__OpenBSD__) union semun { int val; /* Value for SETVAL */ struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */ unsigned short *array; /* Array for GETALL, SETALL */ +#if defined(__linux__) struct seminfo *__buf; /* Buffer for IPC_INFO (Linux specific) */ +#endif }; +#endif /* * FIXME: diff --git a/src/pcm/pcm_mmap.c b/src/pcm/pcm_mmap.c index 9cbaae05..dcd5c77e 100644 --- a/src/pcm/pcm_mmap.c +++ b/src/pcm/pcm_mmap.c @@ -20,7 +20,9 @@ #include "config.h" #include <stdio.h> +#if HAVE_MALLOC_H #include <malloc.h> +#endif #include <string.h> #include <poll.h> #include <sys/mman.h> diff --git a/src/seq/seq_midi_event.c b/src/seq/seq_midi_event.c index 5a12a18c..df09bde3 100644 --- a/src/seq/seq_midi_event.c +++ b/src/seq/seq_midi_event.c @@ -28,7 +28,9 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#if HAVE_MALLOC_H #include <malloc.h> +#endif #include "local.h" #ifndef DOC_HIDDEN diff --git a/src/shmarea.c b/src/shmarea.c index 18937d9e..b566c79e 100644 --- a/src/shmarea.c +++ b/src/shmarea.c @@ -24,7 +24,10 @@ #ifdef HAVE_SYS_SHM_H #include <stdio.h> +#include <stdlib.h> +#if HAVE_MALLOC_H #include <malloc.h> +#endif #include <string.h> #include <errno.h> #include <poll.h> diff --git a/src/ucm/parser.c b/src/ucm/parser.c index 9e62fa9f..56d67e50 100644 --- a/src/ucm/parser.c +++ b/src/ucm/parser.c @@ -2907,7 +2907,7 @@ int uc_mgr_scan_master_configs(const char **_list[]) snprintf(filename, sizeof(filename), "%s/ucm2/conf.virt.d", snd_config_topdir()); -#if defined(_GNU_SOURCE) && !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__sun) && !defined(ANDROID) +#if defined(_GNU_SOURCE) && !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__sun) && !defined(ANDROID) #define SORTFUNC versionsort64 #else #define SORTFUNC alphasort64 diff --git a/src/ucm/ucm_exec.c b/src/ucm/ucm_exec.c index fffff55c..d5251fab 100644 --- a/src/ucm/ucm_exec.c +++ b/src/ucm/ucm_exec.c @@ -33,6 +33,11 @@ #include <limits.h> #include <dirent.h> +#if defined(__NetBSD__) || defined(__OpenBSD__) +#include <signal.h> +extern char **environ; +#endif + static pthread_mutex_t fork_lock = PTHREAD_MUTEX_INITIALIZER; /* |