diff options
author | bugmen0t <@> | 2013-12-07 16:58:22 +0100 |
---|---|---|
committer | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2013-12-07 17:04:34 +0100 |
commit | 20d1fc132e7226b2c9d313d51c6c56b1c12a7e7b (patch) | |
tree | 2e1f1ae3fb51941eef9483f38426ddc184e9b7d9 | |
parent | a066dae19e83ef08187a612f8a2c474dff38c2d4 (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.py | 7 | ||||
-rw-r--r-- | wscript | 14 |
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") @@ -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', |