From caa31fcc62f726239f346cb8253918b5b383ffc8 Mon Sep 17 00:00:00 2001 From: Ulf Samuelsson Date: Sat, 31 Jan 2009 10:18:23 +0000 Subject: Workaround for AVR32 compiler issue affecting inlining, causing alsa-lib to break, feedback to AVR32 compiler team will be sent --- .../alsa-lib-1.0.18-avr32-bad-inline.patch | 91 ++++++++++++++++++++++ package/multimedia/alsa-lib/alsa-lib.mk | 12 ++- 2 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 package/multimedia/alsa-lib/alsa-lib-1.0.18-avr32-bad-inline.patch (limited to 'package/multimedia') diff --git a/package/multimedia/alsa-lib/alsa-lib-1.0.18-avr32-bad-inline.patch b/package/multimedia/alsa-lib/alsa-lib-1.0.18-avr32-bad-inline.patch new file mode 100644 index 000000000..568ba40a4 --- /dev/null +++ b/package/multimedia/alsa-lib/alsa-lib-1.0.18-avr32-bad-inline.patch @@ -0,0 +1,91 @@ +diff -urN alsa-lib-1.0.18-0rig//src/pcm/pcm_local.h alsa-lib-1.0.18/src/pcm/pcm_local.h +--- alsa-lib-1.0.18-0rig//src/pcm/pcm_local.h 2009-01-31 11:02:12.000000000 +0100 ++++ alsa-lib-1.0.18/src/pcm/pcm_local.h 2009-01-31 11:03:24.000000000 +0100 +@@ -611,6 +611,13 @@ + snd_pcm_hw_param_t var); + int _snd_pcm_hw_param_set(snd_pcm_hw_params_t *params, + snd_pcm_hw_param_t var, unsigned int val, int dir); ++ ++#if defined(AVR32_INLINE_BUG) ++int _snd_pcm_hw_params_set_format(snd_pcm_hw_params_t *params, ++ snd_pcm_format_t val); ++int _snd_pcm_hw_params_set_subformat(snd_pcm_hw_params_t *params, ++ snd_pcm_subformat_t val); ++#else + static inline int _snd_pcm_hw_params_set_format(snd_pcm_hw_params_t *params, + snd_pcm_format_t val) + { +@@ -624,7 +631,7 @@ + return _snd_pcm_hw_param_set(params, SND_PCM_HW_PARAM_SUBFORMAT, + (unsigned long) val, 0); + } +- ++#endif + int _snd_pcm_hw_param_set_min(snd_pcm_hw_params_t *params, + snd_pcm_hw_param_t var, unsigned int val, int dir); + int _snd_pcm_hw_param_set_max(snd_pcm_hw_params_t *params, +diff -urN alsa-lib-1.0.18-0rig//src/pcm/pcm_route.c alsa-lib-1.0.18/src/pcm/pcm_route.c +--- alsa-lib-1.0.18-0rig//src/pcm/pcm_route.c 2009-01-31 11:02:12.000000000 +0100 ++++ alsa-lib-1.0.18/src/pcm/pcm_route.c 2009-01-31 11:03:18.000000000 +0100 +@@ -26,6 +26,7 @@ + * + */ + ++ + #include + #include + #include "pcm_local.h" +@@ -106,6 +107,23 @@ + + #endif /* DOC_HIDDEN */ + ++ ++#if defined(AVR32_INLINE_BUG) ++int _snd_pcm_hw_params_set_format(snd_pcm_hw_params_t *params, ++ snd_pcm_format_t val) ++{ ++ return _snd_pcm_hw_param_set(params, SND_PCM_HW_PARAM_FORMAT, ++ (unsigned long) val, 0); ++} ++ ++int _snd_pcm_hw_params_set_subformat(snd_pcm_hw_params_t *params, ++ snd_pcm_subformat_t val) ++{ ++ return _snd_pcm_hw_param_set(params, SND_PCM_HW_PARAM_SUBFORMAT, ++ (unsigned long) val, 0); ++} ++#endif ++ + static void snd_pcm_route_convert1_zero(const snd_pcm_channel_area_t *dst_area, + snd_pcm_uframes_t dst_offset, + const snd_pcm_channel_area_t *src_areas ATTRIBUTE_UNUSED, +@@ -483,6 +501,8 @@ + snd_pcm_uframes_t frames, + snd_pcm_route_params_t *params) + { ++#if defined(AVR32_INLINE_BUG) ++#endif + unsigned int dst_channel; + snd_pcm_route_ttable_dst_t *dstp; + const snd_pcm_channel_area_t *dst_area; +@@ -551,8 +571,20 @@ + _snd_pcm_hw_param_set_mask(sparams, SND_PCM_HW_PARAM_ACCESS, + &saccess_mask); + if (route->sformat != SND_PCM_FORMAT_UNKNOWN) { ++#if defined(AVR32_INLINE_BUG) ++/* Start of of problem */ ++#endif + _snd_pcm_hw_params_set_format(sparams, route->sformat); + _snd_pcm_hw_params_set_subformat(sparams, SND_PCM_SUBFORMAT_STD); ++#if 0 ++ _snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_FORMAT, ++ (unsigned long) route->sformat, 0); ++ _snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_SUBFORMAT, ++ (unsigned long) SND_PCM_SUBFORMAT_STD, 0); ++#endif ++#if defined(AVR32_INLINE_BUG) ++/* End of problem */ ++#endif + } + if (route->schannels >= 0) { + _snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_CHANNELS, diff --git a/package/multimedia/alsa-lib/alsa-lib.mk b/package/multimedia/alsa-lib/alsa-lib.mk index b45ac510e..be6b047c5 100644 --- a/package/multimedia/alsa-lib/alsa-lib.mk +++ b/package/multimedia/alsa-lib/alsa-lib.mk @@ -12,9 +12,15 @@ ALSA_LIB_BINARY:=libasound.so.2.0.0 ALSA_LIB_TARGET_BINARY:=usr/lib/$(ALSA_LIB_BINARY) ifeq ($(BR2_arm),y) -ALSA_LIB_ABI:=-mabi=aapcs-linux +ALSA_LIB_ABI+=-mabi=aapcs-linux else -ALSA_LIB_ABI:= +ALSA_LIB_ABI+= +endif + +ifeq ($(BR2_avr32),y) +ALSA_LIB_ABI+=-DAVR32_INLINE_BUG +else +ALSA_LIB_ABI+= endif ifeq ($(BR2_PACKAGE_ALSA_LIB_PYTHON),y) @@ -77,6 +83,8 @@ $(TARGET_DIR)/$(ALSA_LIB_TARGET_BINARY): $(STAGING_DIR)/$(ALSA_LIB_TARGET_BINARY alsa-lib: uclibc $(ALSA_LIB_DEPS) $(TARGET_DIR)/$(ALSA_LIB_TARGET_BINARY) +alsa-lib-unpacked: $(ALSA_LIB_DIR)/.unpacked + alsa-lib-source: $(DL_DIR)/$(ALSA_LIB_SOURCE) alsa-lib-clean: -- cgit v1.2.3