summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--waftools/checks/custom.py59
-rw-r--r--waftools/fragments/oss_audio.c6
-rw-r--r--waftools/fragments/oss_audio_header.c13
-rw-r--r--waftools/fragments/oss_audio_sunaudio.c6
-rw-r--r--wscript40
5 files changed, 55 insertions, 69 deletions
diff --git a/waftools/checks/custom.py b/waftools/checks/custom.py
index 6247d00353..fee56134b4 100644
--- a/waftools/checks/custom.py
+++ b/waftools/checks/custom.py
@@ -1,6 +1,8 @@
from waftools.checks.generic import *
+from waflib import Utils
+import os
-__all__ = ["check_pthreads", "check_iconv", "check_lua", "check_oss"]
+__all__ = ["check_pthreads", "check_iconv", "check_lua", "check_oss_4front"]
pthreads_program = load_fragment('pthreads.c')
@@ -72,56 +74,23 @@ def check_lua(ctx, dependency_identifier):
return True
return False
-# from here on there is the OSS check.. just stop reading here unless you want
-# to die inside a little
-def __fail_oss_check__(ctx):
- ctx.define('PATH_DEV_DSP', '')
- ctx.define('PATH_DEV_MIXER', '')
- return False
-
-def __get_osslibdir__():
- from waflib import Utils
+def __get_osslibdir():
cmd = ['sh', '-c', '. /etc/oss.conf && echo $OSSLIBDIR']
p = Utils.subprocess.Popen(cmd, stdin=Utils.subprocess.PIPE,
stdout=Utils.subprocess.PIPE,
stderr=Utils.subprocess.PIPE)
return p.communicate()[0].decode().rstrip()
-def __get_osscflags__():
- import os
- osscflags = ''
- osslibdir = __get_osslibdir__()
- if osslibdir:
- ossincdir = os.path.join(osslibdir, 'include')
- soundcard_h = os.path.join(ossincdir, 'sys', 'soundcard.h')
- if os.path.exists(soundcard_h):
- osscflags = '-I{0}'.format(ossincdir)
- return osscflags
-
-def __check_oss_headers__(ctx, dependency_identifier):
- fn = check_cc(fragment=load_fragment('oss_audio_header.c'),
- use='soundcard', cflags=__get_osscflags__())
- fn(ctx, dependency_identifier)
- return True
-
-def __check_oss_bsd__(ctxdependency_identifier):
- # add the oss audio library through a check
- ctx.define('PATH_DEV_DSP', '/dev/sound')
- if check_cc(lib='ossaudio')(ctx, dependency_identifier):
- return True
- else:
- return __fail_oss_check__(ctx)
+def check_oss_4front(ctx, dependency_identifier):
+ oss_libdir = __get_osslibdir()
-def check_oss(ctx, dependency_identifier):
- func = check_cc(fragment=load_fragment('oss_audio.c'), use='soundcard',
- cflags=__get_osscflags__())
- if func(ctx, dependency_identifier):
- ctx.define('PATH_DEV_DSP', '/dev/dsp')
- ctx.define('PATH_DEV_MIXER', '/dev/mixer')
+ soundcard_h = os.path.join(oss_libdir, "include/sys/soundcard.h")
+ include_dir = os.path.join(oss_libdir, "include")
- if ctx.env.DEST_OS in ['openbsd', 'netbsd']:
- return __check_oss_bsd_library__(ctx, dependency_identifier)
- else:
- return __check_oss_headers__(ctx, dependency_identifier)
+ fn = check_cc(header_name=soundcard_h,
+ defines=['PATH_DEV_DSP="/dev/dsp"',
+ 'PATH_DEV_MIXER="/dev/mixer"'],
+ cflags='-I{0}'.format(include_dir),
+ fragment=load_fragment('oss_audio.c'))
- return __fail_oss_check__(ctx)
+ return fn(ctx, dependency_identifier)
diff --git a/waftools/fragments/oss_audio.c b/waftools/fragments/oss_audio.c
index e23979da97..c1a5488f97 100644
--- a/waftools/fragments/oss_audio.c
+++ b/waftools/fragments/oss_audio.c
@@ -1,10 +1,4 @@
-#if HAVE_SOUNDCARD_H
-#include <soundcard.h>
-#endif
-
-#if HAVE_SYS_SOUNDCARD_H
#include <sys/soundcard.h>
-#endif
int main(int argc, char **argv) {
return SNDCTL_DSP_SETFRAGMENT;
diff --git a/waftools/fragments/oss_audio_header.c b/waftools/fragments/oss_audio_header.c
deleted file mode 100644
index 980eb69215..0000000000
--- a/waftools/fragments/oss_audio_header.c
+++ /dev/null
@@ -1,13 +0,0 @@
-#if HAVE_SOUNDCARD_H
-#include <soundcard.h>
-#endif
-
-#if HAVE_SYS_SOUNDCARD_H
-#include <sys/soundcard.h>
-#endif
-
-#ifdef OPEN_SOUND_SYSTEM
-int main(void) {{ return 0; }}
-#else
-#error Not the real thing
-#endif
diff --git a/waftools/fragments/oss_audio_sunaudio.c b/waftools/fragments/oss_audio_sunaudio.c
new file mode 100644
index 0000000000..d5208f558c
--- /dev/null
+++ b/waftools/fragments/oss_audio_sunaudio.c
@@ -0,0 +1,6 @@
+#include <soundcard.h>
+
+int main(int argc, char **argv) {
+ return SNDCTL_DSP_SETFRAGMENT;
+}
+
diff --git a/wscript b/wscript
index 155968c55b..7e78566945 100644
--- a/wscript
+++ b/wscript
@@ -117,10 +117,6 @@ iconv support use --disable-iconv.",
'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',
'func': check_headers('sys/videoio.h')
@@ -387,9 +383,35 @@ audio_output_features = [
'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'):