From fa620ffc956953b39bb683abb2679bbbfc364915 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 29 Nov 2013 09:01:14 +0100 Subject: build: reimplement the OSS checks using a more declarative approach The OSS checks were a big mess and quite buggy. This reimplementes them using a declarative approach and clearly distinguishing between the various OSS implementations. The code should now almost be auto-documenting. We currently support the following implementations of OSS: * platform-specific (with `sys/soundcard.h`) * SunAudio (default on NetBSD and useable on OpenBSD even if we have sndio support there). * 4Front (default on FreeBSD) Since now each OSS check also checks for the appropriate soundcard header, remove the old soundcard check. Many thanks to @bugmen0t for in depth info about all the BSDs. Check #380 and #359 for more info on this commit. --- wscript | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) (limited to 'wscript') diff --git a/wscript b/wscript index 155968c55b..7e78566945 100644 --- a/wscript +++ b/wscript @@ -116,10 +116,6 @@ iconv support use --disable-iconv.", 'desc': 'w32 priority API', 'deps_any': [ 'os-win32', 'os-cygwin'], 'func': check_true - }, { - 'name': 'soundcard', - 'desc': 'soundcard.h', - 'func': check_headers('soundcard.h', 'sys/soundcard.h') }, { 'name': 'videoio', 'desc': 'videoio.h', @@ -386,10 +382,36 @@ audio_output_features = [ 'desc': 'SDL (1.x)', 'deps_neg': [ 'sdl2' ], 'func': check_pkg_config('sdl') + }, { + 'name': 'oss-audio-native', + 'desc': 'OSS (platform-specific OSS implementation)', + 'func': check_cc(header_name='sys/soundcard.h', + defines=['PATH_DEV_DSP="/dev/dsp"', + 'PATH_DEV_MIXER="/dev/mixer"'], + fragment=load_fragment('oss_audio.c')), + 'groups' : [ 'oss-audio' ] + }, { + 'name': 'oss-audio-sunaudio', + 'desc': 'OSS (emulation on top of SunAudio)', + 'func': check_cc(header_name='soundcard.h', + lib='ossaudio', + defines=['PATH_DEV_DSP="/dev/sound"', + 'PATH_DEV_MIXER="/dev/mixer"'], + fragment=load_fragment('oss_audio_sunaudio.c')), + 'deps_neg': [ 'oss-audio-native' ], + 'groups' : [ 'oss-audio' ] + }, { + 'name': 'oss-audio-4front', + 'desc': 'OSS (implementation from opensound.com)', + 'func': check_oss_4front, + 'deps_neg': [ 'oss-audio-native', 'oss-audio-sunaudio' ], + 'groups' : [ 'oss-audio' ] }, { 'name': '--oss-audio', 'desc': 'OSS audio output', - 'func': check_oss + 'func': check_true, + 'deps_any': [ 'oss-audio-native', 'oss-audio-sunaudio', + 'oss-audio-4front' ] }, { 'name': '--audio-select', 'desc': 'audio select()', @@ -772,6 +794,14 @@ def configure(ctx): ctx.parse_dependencies(scripting_features) + ctx.define('HAVE_SYS_SOUNDCARD_H', + '(HAVE_OSS_AUDIO_NATIVE || HAVE_OSS_AUDIO_4FRONT)', + quote=False) + + ctx.define('HAVE_SOUNDCARD_H', + 'HAVE_OSS_AUDIO_SUNAUDIO', + quote=False) + ctx.load('generators.headers') if not ctx.dependency_satisfied('build-date'): -- cgit v1.2.3