summaryrefslogtreecommitdiff
path: root/package
diff options
context:
space:
mode:
Diffstat (limited to 'package')
-rw-r--r--package/adkinstall/Makefile2
-rw-r--r--package/alsa-lib/Makefile3
-rw-r--r--package/bcm2835-firmware/Makefile5
-rw-r--r--package/bcm2835-vc/Makefile5
-rw-r--r--package/bcm2835-vc/patches/patch-interface_vcos_pthreads_vcos_platform_h12
-rw-r--r--package/bcm2835-vc/patches/patch-interface_vcos_pthreads_vcos_pthreads_c11
-rw-r--r--package/bcm2835-vc/patches/patch-interface_vmcs_host_linux_vcfilesys_c22
-rw-r--r--package/boost/Makefile7
-rw-r--r--package/eglibc/Makefile1
-rw-r--r--package/ffmpeg/Makefile6
-rw-r--r--package/ffmpeg/patches/patch-libavcodec_arm_Makefile12
-rw-r--r--package/ffmpeg/patches/patch-libavcodec_arm_fft_init_arm_c25
-rw-r--r--package/ffmpeg/src/libavcodec/arm/synth_filter_vfp.S206
-rw-r--r--package/glibc/Makefile1
-rw-r--r--package/libid3tag/Makefile2
-rw-r--r--package/libid3tag/patches/patch-compat_gperf13
-rw-r--r--package/libid3tag/patches/patch-genre_dat22
-rw-r--r--package/libid3tag/patches/patch-genre_dat_in11
-rw-r--r--package/libid3tag/patches/patch-parse_c12
-rw-r--r--package/libid3tag/patches/patch-utf16_c21
-rw-r--r--package/libmad/Makefile26
-rw-r--r--package/libmad/patches/patch-fixed_h44
-rw-r--r--package/libmad/patches/patch-imdct_l_arm_S11
-rw-r--r--package/libmad/patches/patch-layer12_c173
-rw-r--r--package/libmad/patches/patch-layer3_c15
-rw-r--r--package/libmpeg2/Makefile2
-rw-r--r--package/libmpeg2/patches/patch-configure11
-rw-r--r--package/libvpx/Makefile15
-rw-r--r--package/libvpx/patches/patch-build_make_configure_sh6
-rw-r--r--package/libx264/Makefile5
-rw-r--r--package/libx264/patches/patch-Makefile11
-rw-r--r--package/libx264/patches/patch-configure12
-rw-r--r--package/libx264/patches/patch-configure.orig14
-rw-r--r--package/madplay/Makefile6
-rw-r--r--package/mpd/Makefile10
-rw-r--r--package/mpd/files/mpd.conf3
-rw-r--r--package/mpd/files/mpd.init4
-rw-r--r--package/mpd/patches/patch-src_decoder_ffmpeg_decoder_plugin_c130
-rw-r--r--package/oprofile/Makefile2
-rw-r--r--package/pcc-libs/Makefile2
-rw-r--r--package/pcc/Makefile2
-rw-r--r--package/sdl/patches/patch-include_SDL_config_h311
-rw-r--r--package/util-linux/Makefile2
43 files changed, 845 insertions, 371 deletions
diff --git a/package/adkinstall/Makefile b/package/adkinstall/Makefile
index 8cea27683..9d5d74cfd 100644
--- a/package/adkinstall/Makefile
+++ b/package/adkinstall/Makefile
@@ -11,6 +11,8 @@ PKG_SECTION:= base
PKG_DEPENDS:= parted sfdisk mke2fs
PKG_URL:= http://openadk.org/
+PKG_ARCH_DEPENDS:= !m68k
+
WRKDIST= ${WRKDIR}/${PKG_NAME}-${PKG_VERSION}
NO_DISTFILES:= 1
diff --git a/package/alsa-lib/Makefile b/package/alsa-lib/Makefile
index 01d5fee2e..3be639ffa 100644
--- a/package/alsa-lib/Makefile
+++ b/package/alsa-lib/Makefile
@@ -24,8 +24,7 @@ $(eval $(call PKG_template,ALSA_LIB,alsa-lib,${PKG_VERSION}-${PKG_RELEASE},${PKG
$(eval $(call PKG_template,ALSA_LIB_DEV,alsa-lib-dev,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_ALSA_LIB_DEV},${PKGSC_ALSA_LIB_DEV}))
TARGET_CPPFLAGS+= -D_POSIX_C_SOURCE=1
-CONFIGURE_ARGS+= --disable-python \
- --without-versioned
+CONFIGURE_ARGS+= --disable-python
alsa-lib-install:
${INSTALL_DIR} ${IDIR_ALSA_LIB}/usr/lib ${IDIR_ALSA_LIB}/usr/share/alsa
diff --git a/package/bcm2835-firmware/Makefile b/package/bcm2835-firmware/Makefile
index 565064dda..f88910535 100644
--- a/package/bcm2835-firmware/Makefile
+++ b/package/bcm2835-firmware/Makefile
@@ -4,9 +4,10 @@
include ${TOPDIR}/rules.mk
PKG_NAME:= bcm2835-firmware
-PKG_VERSION:= 0.3
+# actually 5113ce63be622e50c1b3ec309798e5d091d219ac from 12.10.2013
+PKG_VERSION:= 0.4
PKG_RELEASE:= 1
-PKG_MD5SUM:= c05d3ceac71e884a95d7731cc2b5f39f
+PKG_MD5SUM:= e7f4caa11f26d5af07ae45128b2ac328
PKG_DESCR:= firmware for raspberry pi (bcm2835)
PKG_SECTION:= base
PKG_SITES:= http://openadk.org/distfiles/
diff --git a/package/bcm2835-vc/Makefile b/package/bcm2835-vc/Makefile
index 1251ce8d3..97c818199 100644
--- a/package/bcm2835-vc/Makefile
+++ b/package/bcm2835-vc/Makefile
@@ -13,11 +13,8 @@ PKG_SECTION:= base
PKG_DEPENDS:= libpthread
PKG_SITES:= http://openadk.org/distfiles/
-PKG_LIBC_DEPENDS:= eglibc glibc
PKG_SYSTEM_DEPENDS:= raspberry-pi
-PKG_SUBPKGS:= BCM2835_VC
-
include ${TOPDIR}/mk/package.mk
$(eval $(call PKG_template,BCM2835_VC,bcm2835-vc,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
@@ -25,7 +22,7 @@ $(eval $(call PKG_template,BCM2835_VC,bcm2835-vc,${PKG_VERSION}-${PKG_RELEASE},$
CONFIG_STYLE:= manual
do-configure:
- (cd $(WRKBUILD) && cmake .)
+ (cd $(WRKBUILD) && cmake -DCMAKE_SYSTEM_NAME=Linux .)
bcm2835-vc-install:
$(INSTALL_DIR) ${IDIR_BCM2835_VC}/opt/vc/{bin,lib}
diff --git a/package/bcm2835-vc/patches/patch-interface_vcos_pthreads_vcos_platform_h b/package/bcm2835-vc/patches/patch-interface_vcos_pthreads_vcos_platform_h
new file mode 100644
index 000000000..95b5d480b
--- /dev/null
+++ b/package/bcm2835-vc/patches/patch-interface_vcos_pthreads_vcos_platform_h
@@ -0,0 +1,12 @@
+--- bcm2835-vc-0.3.orig/interface/vcos/pthreads/vcos_platform.h 2013-09-27 14:22:08.000000000 +0200
++++ bcm2835-vc-0.3/interface/vcos/pthreads/vcos_platform.h 2013-10-13 20:20:55.000000000 +0200
+@@ -120,9 +120,6 @@ typedef struct
+
+ #define VCOS_ONCE_INIT PTHREAD_ONCE_INIT
+
+-#if defined(__arm__) && !defined(_HAVE_TIMER_T) && !defined(ANDROID)
+-typedef __timer_t timer_t;
+-#endif
+ typedef struct VCOS_TIMER_T
+ {
+ pthread_t thread; /**< id of the timer thread */
diff --git a/package/bcm2835-vc/patches/patch-interface_vcos_pthreads_vcos_pthreads_c b/package/bcm2835-vc/patches/patch-interface_vcos_pthreads_vcos_pthreads_c
new file mode 100644
index 000000000..583fe04f3
--- /dev/null
+++ b/package/bcm2835-vc/patches/patch-interface_vcos_pthreads_vcos_pthreads_c
@@ -0,0 +1,11 @@
+--- bcm2835-vc-0.3.orig/interface/vcos/pthreads/vcos_pthreads.c 2013-09-27 14:22:08.000000000 +0200
++++ bcm2835-vc-0.3/interface/vcos/pthreads/vcos_pthreads.c 2013-10-14 19:44:50.000000000 +0200
+@@ -580,7 +580,7 @@ const char ** vcos_get_argv(void)
+ */
+ uint32_t _vcos_get_ticks_per_second(void)
+ {
+- return HZ;
++ return 100;
+ }
+
+ VCOS_STATUS_T vcos_once(VCOS_ONCE_T *once_control,
diff --git a/package/bcm2835-vc/patches/patch-interface_vmcs_host_linux_vcfilesys_c b/package/bcm2835-vc/patches/patch-interface_vmcs_host_linux_vcfilesys_c
new file mode 100644
index 000000000..c5419c90d
--- /dev/null
+++ b/package/bcm2835-vc/patches/patch-interface_vmcs_host_linux_vcfilesys_c
@@ -0,0 +1,22 @@
+--- bcm2835-vc-0.3.orig/interface/vmcs_host/linux/vcfilesys.c 2013-09-27 14:22:08.000000000 +0200
++++ bcm2835-vc-0.3/interface/vmcs_host/linux/vcfilesys.c 2013-10-14 20:10:02.000000000 +0200
+@@ -49,10 +49,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
+ #include <ctype.h>
+ #include <limits.h>
+
+-#if !defined(ANDROID) && !defined( __USE_FILE_OFFSET64 )
+-#error "__USE_FILE_OFFSET64 isn't defined"
+-#endif
+-
+ #include "interface/vcos/vcos.h"
+
+ /* Some hackery to prevent a clash with the Linux type of the same name */
+@@ -916,7 +912,7 @@ int vc_hostfs_set_attr(const char *path,
+
+ if (pathbuf)
+ {
+- __mode_t mode = 0;
++ mode_t mode = 0;
+ struct stat sb;
+
+ backslash_to_slash(pathbuf);
diff --git a/package/boost/Makefile b/package/boost/Makefile
index d0ac60891..93f5fba55 100644
--- a/package/boost/Makefile
+++ b/package/boost/Makefile
@@ -9,15 +9,14 @@ PKG_RELEASE:= 2
PKG_MD5SUM:= efbfbff5a85a9330951f243d0a46e4b9
PKG_DESCR:= boost C++ library
PKG_SECTION:= libs
-PKG_BUILDDEP:= gettext-tiny
PKG_URL:= http://www.boost.org/
PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=boost/}
+PKG_ARCH_DEPENDS:= !avr32
+
DISTFILES:= boost_1_54_0.tar.gz
WRKDIST= ${WRKDIR}/${PKG_NAME}_1_54_0
-PKG_LIBC_DEPENDS:= eglibc glibc musl
-
PKG_SUBPKGS:= BOOST BOOST_DEV
PKGSD_BOOST_DEV:= boost header files
PKGSC_BOOST_DEV:= devel
@@ -61,6 +60,8 @@ CONFIGURE_ARGS += \
--build=$(GNU_HOST_NAME) \
--prefix=${WRKINST}/usr \
+CONFIGURE_ARGS+=--without-locale
+
ifneq (${ADK_PACKAGE_BOOST_IOSTREAMS},)
CONFIGURE_ARGS += -sNO_BZIP2=1 -sZLIB_INCLUDE=${STAGING_DIR}/usr/include -sZLIB_LIBPATH=${STAGING_DIR}/usr/lib
else
diff --git a/package/eglibc/Makefile b/package/eglibc/Makefile
index 3261ba314..98c6b2de9 100644
--- a/package/eglibc/Makefile
+++ b/package/eglibc/Makefile
@@ -3,7 +3,6 @@
include $(TOPDIR)/rules.mk
include $(TOPDIR)/toolchain/eglibc/Makefile.inc
-include $(TOPDIR)/toolchain/eglibc/Makefile.multilib
PKG_DESCR:= embedded GNU C library
PKG_SECTION:= base
diff --git a/package/ffmpeg/Makefile b/package/ffmpeg/Makefile
index 131d1856a..9c4cea01c 100644
--- a/package/ffmpeg/Makefile
+++ b/package/ffmpeg/Makefile
@@ -4,16 +4,16 @@
include ${TOPDIR}/rules.mk
PKG_NAME:= ffmpeg
-PKG_VERSION:= 2.0.1
+PKG_VERSION:= 2.0.2
PKG_RELEASE:= 2
-PKG_MD5SUM:= dd71a1baedb2daa3e4d21e0651daa918
+PKG_MD5SUM:= 6c5cfed204d8a108325d1fc439ab734a
PKG_DESCR:= record, convert and stream audio & video
PKG_SECTION:= libs
PKG_FDEPENDS:= libpthread
PKG_URL:= http://www.ffmpeg.org/
PKG_SITES:= http://www.ffmpeg.org/releases/
-PKG_ARCH_DEPENDS:= !cris
+PKG_ARCH_DEPENDS:= !avr32 !cris
PKG_SUBPKGS:= LIBFFMPEG FFSERVER FFPROBE FFMPEG
#PKGSD_FFPLAY:= ffmpeg based video player
diff --git a/package/ffmpeg/patches/patch-libavcodec_arm_Makefile b/package/ffmpeg/patches/patch-libavcodec_arm_Makefile
new file mode 100644
index 000000000..f504f60f9
--- /dev/null
+++ b/package/ffmpeg/patches/patch-libavcodec_arm_Makefile
@@ -0,0 +1,12 @@
+--- ffmpeg-2.0.1.orig/libavcodec/arm/Makefile 2013-08-11 01:23:24.000000000 +0200
++++ ffmpeg-2.0.1/libavcodec/arm/Makefile 2013-10-14 17:47:19.000000000 +0200
+@@ -52,7 +52,8 @@ ARMV6-OBJS-$(CONFIG_VP8_DECODER) +
+ arm/vp8dsp_init_armv6.o \
+ arm/vp8dsp_armv6.o
+
+-VFP-OBJS-$(HAVE_ARMV6) += arm/fmtconvert_vfp.o
++VFP-OBJS-$(HAVE_ARMV6) += arm/fmtconvert_vfp.o \
++ arm/synth_filter_vfp.o
+
+ NEON-OBJS += arm/fmtconvert_neon.o
+
diff --git a/package/ffmpeg/patches/patch-libavcodec_arm_fft_init_arm_c b/package/ffmpeg/patches/patch-libavcodec_arm_fft_init_arm_c
new file mode 100644
index 000000000..dc562a061
--- /dev/null
+++ b/package/ffmpeg/patches/patch-libavcodec_arm_fft_init_arm_c
@@ -0,0 +1,25 @@
+--- ffmpeg-2.0.2.orig/libavcodec/arm/fft_init_arm.c 2013-10-08 19:52:31.000000000 +0200
++++ ffmpeg-2.0.2/libavcodec/arm/fft_init_arm.c 2013-10-16 12:59:04.000000000 +0200
+@@ -32,6 +32,12 @@ void ff_mdct_calc_neon(FFTContext *s, FF
+
+ void ff_rdft_calc_neon(struct RDFTContext *s, FFTSample *z);
+
++void ff_synth_filter_float_vfp(FFTContext *imdct,
++ float *synth_buf_ptr, int *synth_buf_offset,
++ float synth_buf2[32], const float window[512],
++ float out[32], const float in[32],
++ float scale);
++
+ void ff_synth_filter_float_neon(FFTContext *imdct,
+ float *synth_buf_ptr, int *synth_buf_offset,
+ float synth_buf2[32], const float window[512],
+@@ -71,6 +77,9 @@ av_cold void ff_synth_filter_init_arm(Sy
+ {
+ int cpu_flags = av_get_cpu_flags();
+
++ if (have_vfp(cpu_flags))
++ s->synth_filter_float = ff_synth_filter_float_vfp;
++
+ if (have_neon(cpu_flags))
+ s->synth_filter_float = ff_synth_filter_float_neon;
+ }
diff --git a/package/ffmpeg/src/libavcodec/arm/synth_filter_vfp.S b/package/ffmpeg/src/libavcodec/arm/synth_filter_vfp.S
new file mode 100644
index 000000000..451fe5ce9
--- /dev/null
+++ b/package/ffmpeg/src/libavcodec/arm/synth_filter_vfp.S
@@ -0,0 +1,206 @@
+/*
+ * Copyright (c) 2013 RISC OS Open Ltd
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Author: Ben Avison <bavison@riscosopen.org>
+ */
+
+#include "libavutil/arm/asm.S"
+
+IMDCT .req r0
+ORIG_P_SB .req r1
+P_SB_OFF .req r2
+I .req r0
+P_SB2_UP .req r1
+OLDFPSCR .req r2
+P_SB2_DN .req r3
+P_WIN_DN .req r4
+P_OUT_DN .req r5
+P_SB .req r6
+J_WRAP .req r7
+P_WIN_UP .req r12
+P_OUT_UP .req r14
+
+SCALE .req s0
+SBUF_DAT_REV0 .req s4
+SBUF_DAT_REV1 .req s5
+SBUF_DAT_REV2 .req s6
+SBUF_DAT_REV3 .req s7
+VA0 .req s8
+VA3 .req s11
+VB0 .req s12
+VB3 .req s15
+VC0 .req s8
+VC3 .req s11
+VD0 .req s12
+VD3 .req s15
+SBUF_DAT0 .req s16
+SBUF_DAT1 .req s17
+SBUF_DAT2 .req s18
+SBUF_DAT3 .req s19
+SBUF_DAT_ALT0 .req s20
+SBUF_DAT_ALT1 .req s21
+SBUF_DAT_ALT2 .req s22
+SBUF_DAT_ALT3 .req s23
+WIN_DN_DAT0 .req s24
+WIN_UP_DAT0 .req s28
+
+
+.macro inner_loop half, tail, head
+ .if (OFFSET & (64*4)) == 0 @ even numbered call
+ SBUF_DAT_THIS0 .req SBUF_DAT0
+ SBUF_DAT_THIS1 .req SBUF_DAT1
+ SBUF_DAT_THIS2 .req SBUF_DAT2
+ SBUF_DAT_THIS3 .req SBUF_DAT3
+ .ifnc "\head",""
+ vldr d8, [P_SB, #OFFSET] @ d8 = SBUF_DAT
+ vldr d9, [P_SB, #OFFSET+8]
+ .endif
+ .else
+ SBUF_DAT_THIS0 .req SBUF_DAT_ALT0
+ SBUF_DAT_THIS1 .req SBUF_DAT_ALT1
+ SBUF_DAT_THIS2 .req SBUF_DAT_ALT2
+ SBUF_DAT_THIS3 .req SBUF_DAT_ALT3
+ .ifnc "\head",""
+ vldr d10, [P_SB, #OFFSET] @ d10 = SBUF_DAT_ALT
+ vldr d11, [P_SB, #OFFSET+8]
+ .endif
+ .endif
+ .ifnc "\tail",""
+ .ifc "\half","ab"
+ vmls.f VA0, SBUF_DAT_REV0, WIN_DN_DAT0 @ all operands treated as vectors
+ .else
+ vmla.f VD0, SBUF_DAT_REV0, WIN_DN_DAT0 @ all operands treated as vectors
+ .endif
+ .endif
+ .ifnc "\head",""
+ vldr d14, [P_WIN_UP, #OFFSET] @ d14 = WIN_UP_DAT
+ vldr d15, [P_WIN_UP, #OFFSET+8]
+ vldr d12, [P_WIN_DN, #OFFSET] @ d12 = WIN_DN_DAT
+ vldr d13, [P_WIN_DN, #OFFSET+8]
+ vmov SBUF_DAT_REV3, SBUF_DAT_THIS0
+ vmov SBUF_DAT_REV2, SBUF_DAT_THIS1
+ vmov SBUF_DAT_REV1, SBUF_DAT_THIS2
+ vmov SBUF_DAT_REV0, SBUF_DAT_THIS3
+ .ifc "\half","ab"
+ vmla.f VB0, SBUF_DAT_THIS0, WIN_UP_DAT0
+ .else
+ vmla.f VC0, SBUF_DAT_THIS0, WIN_UP_DAT0
+ .endif
+ teq J_WRAP, #J
+ bne 2f @ strongly predictable, so better than cond exec in this case
+ sub P_SB, P_SB, #512*4
+2:
+ .set J, J - 64
+ .set OFFSET, OFFSET + 64*4
+ .endif
+ .unreq SBUF_DAT_THIS0
+ .unreq SBUF_DAT_THIS1
+ .unreq SBUF_DAT_THIS2
+ .unreq SBUF_DAT_THIS3
+.endm
+
+
+/* void ff_synth_filter_float_vfp(FFTContext *imdct,
+ * float *synth_buf_ptr, int *synth_buf_offset,
+ * float synth_buf2[32], const float window[512],
+ * float out[32], const float in[32], float scale)
+ */
+function ff_synth_filter_float_vfp, export=1
+ push {r3-r7,lr}
+ vpush {s16-s31}
+ ldr lr, [P_SB_OFF]
+ add a2, ORIG_P_SB, lr, LSL #2 @ calculate synth_buf to pass to imdct_half
+ mov P_SB, a2 @ and keep a copy for ourselves
+ bic J_WRAP, lr, #63 @ mangled to make testing for wrap easier in inner loop
+ sub lr, lr, #32
+ and lr, lr, #512-32
+ str lr, [P_SB_OFF] @ rotate offset, modulo buffer size, ready for next call
+ ldr a3, [sp, #(16+6+2)*4] @ fetch in from stack, to pass to imdct_half
+VFP vmov s16, SCALE @ imdct_half is free to corrupt s0, but it contains one of our arguments in hardfp case
+ bl ff_imdct_half_c
+VFP vmov SCALE, s16
+
+ vmrs OLDFPSCR, FPSCR
+ ldr lr, =0x03030000 @ RunFast mode, short vectors of length 4, stride 1
+ vmsr FPSCR, lr
+ ldr P_SB2_DN, [sp, #16*4]
+ ldr P_WIN_DN, [sp, #(16+6+0)*4]
+ ldr P_OUT_DN, [sp, #(16+6+1)*4]
+NOVFP vldr SCALE, [sp, #(16+6+3)*4]
+
+#define IMM_OFF_SKEW 956 /* also valid immediate constant when you add 16*4 */
+ add P_SB, P_SB, #IMM_OFF_SKEW @ so we can use -ve offsets to use full immediate offset range
+ add P_SB2_UP, P_SB2_DN, #16*4
+ add P_WIN_UP, P_WIN_DN, #16*4+IMM_OFF_SKEW
+ add P_OUT_UP, P_OUT_DN, #16*4
+ add P_SB2_DN, P_SB2_DN, #16*4
+ add P_WIN_DN, P_WIN_DN, #12*4+IMM_OFF_SKEW
+ add P_OUT_DN, P_OUT_DN, #16*4
+ mov I, #4
+1:
+ vldmia P_SB2_UP!, {VB0-VB3}
+ vldmdb P_SB2_DN!, {VA0-VA3}
+ .set J, 512 - 64
+ .set OFFSET, -IMM_OFF_SKEW
+ inner_loop ab,, head
+ .rept 7
+ inner_loop ab, tail, head
+ .endr
+ inner_loop ab, tail
+ add P_WIN_UP, P_WIN_UP, #4*4
+ sub P_WIN_DN, P_WIN_DN, #4*4
+ vmul.f VB0, VB0, SCALE @ SCALE treated as scalar
+ add P_SB, P_SB, #(512+4)*4
+ subs I, I, #1
+ vmul.f VA0, VA0, SCALE
+ vstmia P_OUT_UP!, {VB0-VB3}
+ vstmdb P_OUT_DN!, {VA0-VA3}
+ bne 1b
+
+ add P_SB2_DN, P_SB2_DN, #(16+28-12)*4
+ sub P_SB2_UP, P_SB2_UP, #(16+16)*4
+ add P_WIN_DN, P_WIN_DN, #(32+16+28-12)*4
+ mov I, #4
+1:
+ vldr.d d4, zero @ d4 = VC0
+ vldr.d d5, zero
+ vldr.d d6, zero @ d6 = VD0
+ vldr.d d7, zero
+ .set J, 512 - 64
+ .set OFFSET, -IMM_OFF_SKEW
+ inner_loop cd,, head
+ .rept 7
+ inner_loop cd, tail, head
+ .endr
+ inner_loop cd, tail
+ add P_WIN_UP, P_WIN_UP, #4*4
+ sub P_WIN_DN, P_WIN_DN, #4*4
+ add P_SB, P_SB, #(512+4)*4
+ subs I, I, #1
+ vstmia P_SB2_UP!, {VC0-VC3}
+ vstmdb P_SB2_DN!, {VD0-VD3}
+ bne 1b
+
+ vmsr FPSCR, OLDFPSCR
+ vpop {s16-s31}
+ pop {r3-r7,pc}
+endfunc
+
+ .align 3
+zero: .word 0, 0
diff --git a/package/glibc/Makefile b/package/glibc/Makefile
index 7f0a1f8c7..a03a5c8bd 100644
--- a/package/glibc/Makefile
+++ b/package/glibc/Makefile
@@ -7,7 +7,6 @@ TARGET_CFLAGS:= $(filter-out -fstack-protector,$(TARGET_CFLAGS))
TARGET_CFLAGS:= $(filter-out -flto,$(TARGET_CFLAGS))
include $(TOPDIR)/toolchain/glibc/Makefile.inc
-include $(TOPDIR)/toolchain/glibc/Makefile.multilib
PKG_DESCR:= GNU C library
PKG_SECTION:= base
diff --git a/package/libid3tag/Makefile b/package/libid3tag/Makefile
index 972daf556..d2819bf9f 100644
--- a/package/libid3tag/Makefile
+++ b/package/libid3tag/Makefile
@@ -5,7 +5,7 @@ include ${TOPDIR}/rules.mk
PKG_NAME:= libid3tag
PKG_VERSION:= 0.15.1b
-PKG_RELEASE:= 1
+PKG_RELEASE:= 2
PKG_MD5SUM:= e5808ad997ba32c498803822078748c3
PKG_DESCR:= an ID3 tag manipulation library
PKG_SECTION:= libs
diff --git a/package/libid3tag/patches/patch-compat_gperf b/package/libid3tag/patches/patch-compat_gperf
new file mode 100644
index 000000000..a70837638
--- /dev/null
+++ b/package/libid3tag/patches/patch-compat_gperf
@@ -0,0 +1,13 @@
+--- libid3tag-0.15.1b.orig/compat.gperf 2004-01-23 10:41:32.000000000 +0100
++++ libid3tag-0.15.1b/compat.gperf 2013-10-16 12:34:31.000000000 +0200
+@@ -236,6 +236,10 @@ int id3_compat_fixup(struct id3_tag *tag
+
+ encoding = id3_parse_uint(&data, 1);
+ string = id3_parse_string(&data, end - data, encoding, 0);
++ if (!string)
++ {
++ continue;
++ }
+
+ if (id3_ucs4_length(string) < 4) {
+ free(string);
diff --git a/package/libid3tag/patches/patch-genre_dat b/package/libid3tag/patches/patch-genre_dat
new file mode 100644
index 000000000..6b727397b
--- /dev/null
+++ b/package/libid3tag/patches/patch-genre_dat
@@ -0,0 +1,22 @@
+--- libid3tag-0.15.1b.orig/genre.dat 2004-02-17 03:34:39.000000000 +0100
++++ libid3tag-0.15.1b/genre.dat 2013-10-16 12:34:37.000000000 +0200
+@@ -277,8 +277,8 @@ static id3_ucs4_t const genre_PUNK_ROCK[
+ { 'P', 'u', 'n', 'k', ' ', 'R', 'o', 'c', 'k', 0 };
+ static id3_ucs4_t const genre_DRUM_SOLO[] =
+ { 'D', 'r', 'u', 'm', ' ', 'S', 'o', 'l', 'o', 0 };
+-static id3_ucs4_t const genre_A_CAPPELLA[] =
+- { 'A', ' ', 'C', 'a', 'p', 'p', 'e', 'l', 'l', 'a', 0 };
++static id3_ucs4_t const genre_A_CAPELLA[] =
++ { 'A', ' ', 'C', 'a', 'p', 'e', 'l', 'l', 'a', 0 };
+ static id3_ucs4_t const genre_EURO_HOUSE[] =
+ { 'E', 'u', 'r', 'o', '-', 'H', 'o', 'u', 's', 'e', 0 };
+ static id3_ucs4_t const genre_DANCE_HALL[] =
+@@ -452,7 +452,7 @@ static id3_ucs4_t const *const genre_tab
+ genre_DUET,
+ genre_PUNK_ROCK,
+ genre_DRUM_SOLO,
+- genre_A_CAPPELLA,
++ genre_A_CAPELLA,
+ genre_EURO_HOUSE,
+ genre_DANCE_HALL,
+ genre_GOA,
diff --git a/package/libid3tag/patches/patch-genre_dat_in b/package/libid3tag/patches/patch-genre_dat_in
new file mode 100644
index 000000000..592fd6746
--- /dev/null
+++ b/package/libid3tag/patches/patch-genre_dat_in
@@ -0,0 +1,11 @@
+--- libid3tag-0.15.1b.orig/genre.dat.in 2004-01-23 10:41:32.000000000 +0100
++++ libid3tag-0.15.1b/genre.dat.in 2013-10-16 12:34:37.000000000 +0200
+@@ -153,7 +153,7 @@ Freestyle
+ Duet
+ Punk Rock
+ Drum Solo
+-A Cappella
++A Capella
+ Euro-House
+ Dance Hall
+ Goa
diff --git a/package/libid3tag/patches/patch-parse_c b/package/libid3tag/patches/patch-parse_c
new file mode 100644
index 000000000..6e09c5e26
--- /dev/null
+++ b/package/libid3tag/patches/patch-parse_c
@@ -0,0 +1,12 @@
+--- libid3tag-0.15.1b.orig/parse.c 2004-01-23 10:41:32.000000000 +0100
++++ libid3tag-0.15.1b/parse.c 2013-10-16 12:34:31.000000000 +0200
+@@ -165,6 +165,9 @@ id3_ucs4_t *id3_parse_string(id3_byte_t
+ case ID3_FIELD_TEXTENCODING_UTF_8:
+ ucs4 = id3_utf8_deserialize(ptr, length);
+ break;
++ default:
++ /* FIXME: Unknown encoding! Print warning? */
++ return NULL;
+ }
+
+ if (ucs4 && !full) {
diff --git a/package/libid3tag/patches/patch-utf16_c b/package/libid3tag/patches/patch-utf16_c
new file mode 100644
index 000000000..1466ebdf7
--- /dev/null
+++ b/package/libid3tag/patches/patch-utf16_c
@@ -0,0 +1,21 @@
+--- libid3tag-0.15.1b.orig/utf16.c 2004-01-23 10:41:32.000000000 +0100
++++ libid3tag-0.15.1b/utf16.c 2013-10-16 12:34:27.000000000 +0200
+@@ -282,5 +282,18 @@ id3_ucs4_t *id3_utf16_deserialize(id3_by
+
+ free(utf16);
+
++ if (end == *ptr && length % 2 != 0)
++ {
++ /* We were called with a bogus length. It should always
++ * be an even number. We can deal with this in a few ways:
++ * - Always give an error.
++ * - Try and parse as much as we can and
++ * - return an error if we're called again when we
++ * already tried to parse everything we can.
++ * - tell that we parsed it, which is what we do here.
++ */
++ (*ptr)++;
++ }
++
+ return ucs4;
+ }
diff --git a/package/libmad/Makefile b/package/libmad/Makefile
index 58faf3463..eed9882bc 100644
--- a/package/libmad/Makefile
+++ b/package/libmad/Makefile
@@ -5,7 +5,7 @@ include ${TOPDIR}/rules.mk
PKG_NAME:= libmad
PKG_VERSION:= 0.15.1b
-PKG_RELEASE:= 2
+PKG_RELEASE:= 4
PKG_MD5SUM:= 1be543bc30c56fb6bea1d7bf6a64e66c
PKG_DESCR:= An high-quality MPEG audio decoding library
PKG_SECTION:= libs
@@ -21,17 +21,25 @@ include ${TOPDIR}/mk/package.mk
$(eval $(call PKG_template,LIBMAD,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,LIBMAD_DEV,libmad-dev,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIBMAD_DEV},${PKGSC_LIBMAD_DEV}))
-#FIXME
-XAKE_FLAGS+= GCC_HONOUR_COPTS=s
-
FPM:=default
ifeq (${ARCH},i386)
FPM:=intel
endif
-# MIPS optimization is broken for gcc 4.4 (removed h constraint)
-#ifeq (${ARCH},mips)
-#FPM:=mips
-#endif
+ifeq (${ARCH},arm)
+FPM:=arm
+endif
+ifeq (${ARCH},mips)
+FPM:=mips
+endif
+ifeq (${ARCH},ppc)
+FPM:=ppc
+endif
+ifeq (${ARCH},sparc)
+FPM:=sparc
+endif
+ifeq (${ARCH},x86_64)
+FPM:=64bit
+endif
CONFIGURE_ARG