aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar bugmen0t <@>2013-12-07 16:58:22 +0100
committerGravatar Stefano Pigozzi <stefano.pigozzi@gmail.com>2013-12-07 17:04:34 +0100
commit20d1fc132e7226b2c9d313d51c6c56b1c12a7e7b (patch)
tree2e1f1ae3fb51941eef9483f38426ddc184e9b7d9
parenta066dae19e83ef08187a612f8a2c474dff38c2d4 (diff)
build: prefer 4Front OSS to native implementations
If sys/soundcard.h is actually linux/soundcard.h then it supports only OSSv3 API. This may happen when OSSLIBDIR == /usr while forgetting to replace sys/soundcard.h from glibc. However, after fa620ff waf prefers native implementation which is inferior on Linux. To fix try making waf prefer oss-audio-4front. It's quite unusual to have 4Front OSS installed where native implementation is superior, anyway. Signed-off-by: bugmen0t <@> Make the false positives path also undef the 4Front define. Signed-off-by: Stefano Pigozzi <stefano.pigozzi@gmail.com> Fixes #396
-rw-r--r--waftools/checks/custom.py7
-rw-r--r--wscript14
2 files changed, 14 insertions, 7 deletions
diff --git a/waftools/checks/custom.py b/waftools/checks/custom.py
index 09a5c01018..1b698ec086 100644
--- a/waftools/checks/custom.py
+++ b/waftools/checks/custom.py
@@ -1,3 +1,4 @@
+from waftools.inflectors import DependencyInflector
from waftools.checks.generic import *
from waflib import Utils
import os
@@ -84,6 +85,12 @@ def __get_osslibdir():
def check_oss_4front(ctx, dependency_identifier):
oss_libdir = __get_osslibdir()
+ # avoid false positive from native sys/soundcard.h
+ if not oss_libdir:
+ defkey = DependencyInflector(dependency_identifier).define_key()
+ ctx.undefine(defkey)
+ return False
+
soundcard_h = os.path.join(oss_libdir, "include/sys/soundcard.h")
include_dir = os.path.join(oss_libdir, "include")
diff --git a/wscript b/wscript
index 290cbbe2fe..0da79b484c 100644
--- a/wscript
+++ b/wscript
@@ -383,12 +383,18 @@ audio_output_features = [
'deps_neg': [ 'sdl2' ],
'func': check_pkg_config('sdl')
}, {
+ 'name': 'oss-audio-4front',
+ 'desc': 'OSS (implementation from opensound.com)',
+ 'func': check_oss_4front,
+ 'groups' : [ 'oss-audio' ]
+ }, {
'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')),
+ 'deps_neg': [ 'oss-audio-4front' ],
'groups' : [ 'oss-audio' ]
}, {
'name': 'oss-audio-sunaudio',
@@ -398,13 +404,7 @@ audio_output_features = [
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' ],
+ 'deps_neg': [ 'oss-audio-4front', 'oss-audio-native' ],
'groups' : [ 'oss-audio' ]
}, {
'name': '--oss-audio',