The ladspa module uses math functions unconditionally which breaks when building with --with-softfloat. Tweak the code to only call the math functions when HAVE_SOFT_FLOAT is not defined.
Signed-off-by: Mike Frysinger vapier@gentoo.org --- src/pcm/pcm_ladspa.c | 23 ++++++++++++++--------- 1 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/src/pcm/pcm_ladspa.c b/src/pcm/pcm_ladspa.c index 5161820..0e9321c 100644 --- a/src/pcm/pcm_ladspa.c +++ b/src/pcm/pcm_ladspa.c @@ -34,7 +34,9 @@
#include <dirent.h> #include <locale.h> +#ifndef HAVE_SOFT_FLOAT #include <math.h> +#endif #include "pcm_local.h" #include "pcm_plugin.h"
@@ -511,36 +513,39 @@ static void snd_pcm_ladspa_get_default_cvalue(const LADSPA_Descriptor * desc, un *val = desc->PortRangeHints[port].LowerBound; break; case LADSPA_HINT_DEFAULT_LOW: - if (LADSPA_IS_HINT_LOGARITHMIC(hdesc)) { +#ifndef HAVE_SOFT_FLOAT + if (LADSPA_IS_HINT_LOGARITHMIC(hdesc)) *val = exp(log(desc->PortRangeHints[port].LowerBound) * 0.75 + log(desc->PortRangeHints[port].UpperBound) * 0.25); - } else { + else +#endif *val = (desc->PortRangeHints[port].LowerBound * 0.75) + (desc->PortRangeHints[port].UpperBound * 0.25); - } break; case LADSPA_HINT_DEFAULT_MIDDLE: - if (LADSPA_IS_HINT_LOGARITHMIC(hdesc)) { +#ifndef HAVE_SOFT_FLOAT + if (LADSPA_IS_HINT_LOGARITHMIC(hdesc)) *val = sqrt(desc->PortRangeHints[port].LowerBound * desc->PortRangeHints[port].UpperBound); - } else { + else +#endif *val = 0.5 * (desc->PortRangeHints[port].LowerBound + desc->PortRangeHints[port].UpperBound); - } break; case LADSPA_HINT_DEFAULT_HIGH: - if (LADSPA_IS_HINT_LOGARITHMIC(hdesc)) { +#ifndef HAVE_SOFT_FLOAT + if (LADSPA_IS_HINT_LOGARITHMIC(hdesc)) *val = exp(log(desc->PortRangeHints[port].LowerBound) * 0.25 + log(desc->PortRangeHints[port].UpperBound) * 0.75); - } else { + else +#endif *val = (desc->PortRangeHints[port].LowerBound * 0.25) + (desc->PortRangeHints[port].UpperBound * 0.75); - } break; case LADSPA_HINT_DEFAULT_MAXIMUM: *val = desc->PortRangeHints[port].UpperBound;