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
This commit is contained in:
bugmen0t 2013-12-07 16:58:22 +01:00 committed by Stefano Pigozzi
parent a066dae19e
commit 20d1fc132e
2 changed files with 14 additions and 7 deletions

View File

@ -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")

14
wscript
View File

@ -382,6 +382,11 @@ audio_output_features = [
'desc': 'SDL (1.x)',
'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)',
@ -389,6 +394,7 @@ audio_output_features = [
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',