diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2198d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libmad-0.15.1b.tar.gz diff --git a/.libmad.metadata b/.libmad.metadata new file mode 100644 index 0000000..9f77c52 --- /dev/null +++ b/.libmad.metadata @@ -0,0 +1 @@ +cac19cd00e1a907f3150cc040ccc077783496d76 SOURCES/libmad-0.15.1b.tar.gz diff --git a/SOURCES/Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff b/SOURCES/Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff new file mode 100644 index 0000000..4641510 --- /dev/null +++ b/SOURCES/Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff @@ -0,0 +1,34 @@ +From: Dave Martin +Subject: "rsc" doesnt exist anymore in thumb2 + +diff --git a/fixed.h b/fixed.h +index 4b58abf..ba4bc26 100644 +--- a/fixed.h ++++ b/fixed.h +@@ -275,12 +275,25 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y) + : "+r" (lo), "+r" (hi) \ + : "%r" (x), "r" (y)) + ++#ifdef __thumb__ ++/* In Thumb-2, the RSB-immediate instruction is only allowed with a zero ++ operand. If needed this code can also support Thumb-1 ++ (simply append "s" to the end of the second two instructions). */ ++# define MAD_F_MLN(hi, lo) \ ++ asm ("rsbs %0, %0, #0\n\t" \ ++ "sbc %1, %1, %1\n\t" \ ++ "sub %1, %1, %2" \ ++ : "+&r" (lo), "=&r" (hi) \ ++ : "r" (hi) \ ++ : "cc") ++#else /* ! __thumb__ */ + # define MAD_F_MLN(hi, lo) \ + asm ("rsbs %0, %2, #0\n\t" \ + "rsc %1, %3, #0" \ +- : "=r" (lo), "=r" (hi) \ ++ : "=&r" (lo), "=r" (hi) \ + : "0" (lo), "1" (hi) \ + : "cc") ++#endif /* __thumb__ */ + + # define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ diff --git a/SOURCES/libmad-0.15.1b-cflags-O2.patch b/SOURCES/libmad-0.15.1b-cflags-O2.patch new file mode 100644 index 0000000..61b4b13 --- /dev/null +++ b/SOURCES/libmad-0.15.1b-cflags-O2.patch @@ -0,0 +1,12 @@ +diff -Naur libmad-0.15.1b-orig/configure.ac libmad-0.15.1b/configure.ac +--- libmad-0.15.1b-orig/configure.ac 2007-07-01 12:58:13.000000000 -0600 ++++ libmad-0.15.1b/configure.ac 2007-07-01 12:59:13.000000000 -0600 +@@ -105,7 +105,7 @@ + shift + ;; + -O2) +- optimize="-O" ++ optimize="-O2" + shift + ;; + -fomit-frame-pointer) diff --git a/SOURCES/libmad-0.15.1b-cflags.patch b/SOURCES/libmad-0.15.1b-cflags.patch new file mode 100644 index 0000000..2ec44e3 --- /dev/null +++ b/SOURCES/libmad-0.15.1b-cflags.patch @@ -0,0 +1,146 @@ +diff -Naur libmad-0.15.1b-orig/configure.ac libmad-0.15.1b/configure.ac +--- libmad-0.15.1b-orig/configure.ac 2007-06-30 20:22:31.000000000 -0600 ++++ libmad-0.15.1b/configure.ac 2007-06-30 20:25:31.000000000 -0600 +@@ -122,74 +122,74 @@ + esac + done + +-if test "$GCC" = yes +-then +- if test -z "$arch" +- then +- case "$host" in +- i386-*) ;; +- i?86-*) arch="-march=i486" ;; +- arm*-empeg-*) arch="-march=armv4 -mtune=strongarm1100" ;; +- armv4*-*) arch="-march=armv4 -mtune=strongarm" ;; +- powerpc-*) ;; +- mips*-agenda-*) arch="-mcpu=vr4100" ;; +- mips*-luxsonor-*) arch="-mips1 -mcpu=r3000 -Wa,-m4010" ;; +- esac +- fi +- +- case "$optimize" in +- -O|"-O "*) +- optimize="-O" +- optimize="$optimize -fforce-mem" +- optimize="$optimize -fforce-addr" +- : #x optimize="$optimize -finline-functions" +- : #- optimize="$optimize -fstrength-reduce" +- optimize="$optimize -fthread-jumps" +- optimize="$optimize -fcse-follow-jumps" +- optimize="$optimize -fcse-skip-blocks" +- : #x optimize="$optimize -frerun-cse-after-loop" +- : #x optimize="$optimize -frerun-loop-opt" +- : #x optimize="$optimize -fgcse" +- optimize="$optimize -fexpensive-optimizations" +- optimize="$optimize -fregmove" +- : #* optimize="$optimize -fdelayed-branch" +- : #x optimize="$optimize -fschedule-insns" +- optimize="$optimize -fschedule-insns2" +- : #? optimize="$optimize -ffunction-sections" +- : #? optimize="$optimize -fcaller-saves" +- : #> optimize="$optimize -funroll-loops" +- : #> optimize="$optimize -funroll-all-loops" +- : #x optimize="$optimize -fmove-all-movables" +- : #x optimize="$optimize -freduce-all-givs" +- : #? optimize="$optimize -fstrict-aliasing" +- : #* optimize="$optimize -fstructure-noalias" +- +- case "$host" in +- arm*-*) +- optimize="$optimize -fstrength-reduce" +- ;; +- mips*-*) +- optimize="$optimize -fstrength-reduce" +- optimize="$optimize -finline-functions" +- ;; +- i?86-*) +- optimize="$optimize -fstrength-reduce" +- ;; +- powerpc-apple-*) +- # this triggers an internal compiler error with gcc2 +- : #optimize="$optimize -fstrength-reduce" +- +- # this is really only beneficial with gcc3 +- : #optimize="$optimize -finline-functions" +- ;; +- *) +- # this sometimes provokes bugs in gcc 2.95.2 +- : #optimize="$optimize -fstrength-reduce" +- ;; +- esac +- ;; +- esac +-fi ++#if test "$GCC" = yes ++#then ++# if test -z "$arch" ++# then ++# case "$host" in ++# i386-*) ;; ++# i?86-*) arch="-march=i486" ;; ++# arm*-empeg-*) arch="-march=armv4 -mtune=strongarm1100" ;; ++# armv4*-*) arch="-march=armv4 -mtune=strongarm" ;; ++# powerpc-*) ;; ++# mips*-agenda-*) arch="-mcpu=vr4100" ;; ++# mips*-luxsonor-*) arch="-mips1 -mcpu=r3000 -Wa,-m4010" ;; ++# esac ++# fi ++# ++# case "$optimize" in ++# -O|"-O "*) ++# optimize="-O" ++# optimize="$optimize -fforce-mem" ++# optimize="$optimize -fforce-addr" ++# : #x optimize="$optimize -finline-functions" ++# : #- optimize="$optimize -fstrength-reduce" ++# optimize="$optimize -fthread-jumps" ++# optimize="$optimize -fcse-follow-jumps" ++# optimize="$optimize -fcse-skip-blocks" ++# : #x optimize="$optimize -frerun-cse-after-loop" ++# : #x optimize="$optimize -frerun-loop-opt" ++# : #x optimize="$optimize -fgcse" ++# optimize="$optimize -fexpensive-optimizations" ++# optimize="$optimize -fregmove" ++# : #* optimize="$optimize -fdelayed-branch" ++# : #x optimize="$optimize -fschedule-insns" ++# optimize="$optimize -fschedule-insns2" ++# : #? optimize="$optimize -ffunction-sections" ++# : #? optimize="$optimize -fcaller-saves" ++# : #> optimize="$optimize -funroll-loops" ++# : #> optimize="$optimize -funroll-all-loops" ++# : #x optimize="$optimize -fmove-all-movables" ++# : #x optimize="$optimize -freduce-all-givs" ++# : #? optimize="$optimize -fstrict-aliasing" ++# : #* optimize="$optimize -fstructure-noalias" ++# ++# case "$host" in ++# arm*-*) ++# optimize="$optimize -fstrength-reduce" ++# ;; ++# mips*-*) ++# optimize="$optimize -fstrength-reduce" ++# optimize="$optimize -finline-functions" ++# ;; ++# i?86-*) ++# optimize="$optimize -fstrength-reduce" ++# ;; ++# powerpc-apple-*) ++# # this triggers an internal compiler error with gcc2 ++# : #optimize="$optimize -fstrength-reduce" ++# ++# # this is really only beneficial with gcc3 ++# : #optimize="$optimize -finline-functions" ++# ;; ++# *) ++# # this sometimes provokes bugs in gcc 2.95.2 ++# : #optimize="$optimize -fstrength-reduce" ++# ;; ++# esac ++# ;; ++# esac ++#fi + + case "$host" in + mips*-agenda-*) diff --git a/SOURCES/libmad-0.15.1b-multiarch.patch b/SOURCES/libmad-0.15.1b-multiarch.patch new file mode 100644 index 0000000..51bf663 --- /dev/null +++ b/SOURCES/libmad-0.15.1b-multiarch.patch @@ -0,0 +1,37 @@ +diff -up libmad-0.15.1b/Makefile.am.orig libmad-0.15.1b/Makefile.am +--- libmad-0.15.1b/Makefile.am.orig 2009-01-25 14:35:56.000000000 +0200 ++++ libmad-0.15.1b/Makefile.am 2009-01-25 18:35:07.000000000 +0200 +@@ -110,15 +110,28 @@ mad.h: config.status config.h Makefile.a + echo "# ifdef __cplusplus"; \ + echo 'extern "C" {'; \ + echo "# endif"; echo; \ +- if [ ".$(FPM)" != "." ]; then \ +- echo ".$(FPM)" | sed -e 's|^\.-D|# define |'; echo; \ +- fi; \ ++ echo "# ifdef __i386__"; \ ++ echo "# define FPM_INTEL"; \ ++ echo "# define SIZEOF_LONG 4"; \ ++ echo "# endif"; \ ++ echo "#ifdef __x86_64__";\ ++ echo "# define FPM_64BIT"; \ ++ echo "# define SIZEOF_LONG 8"; \ ++ echo "# endif"; \ ++ echo "#ifdef __powerpc__"; \ ++ echo "#define FPM_PPC"; \ ++ echo "#define SIZEOF_LONG 4"; \ ++ echo "#endif"; \ ++ echo "#ifdef __powerpc64__"; \ ++ echo "#define FPM_PPC"; \ ++ echo "#define SIZEOF_LONG 8"; \ ++ echo "#endif"; echo; \ + sed -ne 's/^# *define *\(HAVE_.*_ASM\).*/# define \1/p' \ + config.h; echo; \ + sed -ne 's/^# *define *OPT_\(SPEED\|ACCURACY\).*/# define OPT_\1/p' \ + config.h; echo; \ +- sed -ne 's/^# *define *\(SIZEOF_.*\)/# define \1/p' \ +- config.h; echo; \ ++ echo "# define SIZEOF_INT 4"; \ ++ echo "# define SIZEOF_LONG_LONG 8"; echo; \ + for header in $(exported_headers); do \ + echo; \ + sed -n -f $(srcdir)/mad.h.sed $(srcdir)/$$header; \ diff --git a/SOURCES/libmad-0.15.1b-ppc.patch b/SOURCES/libmad-0.15.1b-ppc.patch new file mode 100644 index 0000000..fa6ee38 --- /dev/null +++ b/SOURCES/libmad-0.15.1b-ppc.patch @@ -0,0 +1,13 @@ +--- libmad-0.15.1b/fixed.h~ 2004-02-17 02:02:03.000000000 +0000 ++++ libmad-0.15.1b/fixed.h 2009-07-19 13:03:08.000000000 +0100 +@@ -379,8 +379,8 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t + asm ("addc %0,%2,%3\n\t" \ + "adde %1,%4,%5" \ + : "=r" (lo), "=r" (hi) \ +- : "%r" (lo), "r" (__lo), \ +- "%r" (hi), "r" (__hi) \ ++ : "0" (lo), "r" (__lo), \ ++ "1" (hi), "r" (__hi) \ + : "xer"); \ + }) + # endif diff --git a/SOURCES/libmad.thumb.diff b/SOURCES/libmad.thumb.diff new file mode 100644 index 0000000..13edde2 --- /dev/null +++ b/SOURCES/libmad.thumb.diff @@ -0,0 +1,12 @@ +--- ./imdct_l_arm.S.orig 2010-02-25 13:25:23.000000000 +0100 ++++ ./imdct_l_arm.S 2010-02-25 13:27:26.000000000 +0100 +@@ -468,7 +468,7 @@ + + @---- + +- add r2, pc, #(imdct36_long_karray-.-8) @ r2 = base address of Knn array (PIC safe ?) ++ adr r2, imdct36_long_karray + + + loop: + diff --git a/SPECS/libmad.spec b/SPECS/libmad.spec new file mode 100644 index 0000000..8a08cc0 --- /dev/null +++ b/SPECS/libmad.spec @@ -0,0 +1,237 @@ +Name: libmad +Version: 0.15.1b +Release: 24%{?dist} +Summary: MPEG audio decoder library + +License: GPLv2+ +URL: http://www.underbit.com/products/mad/ +Source0: http://download.sourceforge.net/mad/%{name}-%{version}.tar.gz +#Create the same header on multilibs arches +Patch0: libmad-0.15.1b-multiarch.patch +Patch1: libmad-0.15.1b-ppc.patch +#https://bugs.launchpad.net/ubuntu/+source/libmad/+bug/534287 +Patch2: Provide-Thumb-2-alternative-code-for-MAD_F_MLN.diff +#https://bugs.launchpad.net/ubuntu/+source/libmad/+bug/513734 +Patch3: libmad.thumb.diff +Patch4: https://gitweb.gentoo.org/repo/gentoo.git/plain/media-libs/libmad/files/libmad-0.15.1b-cflags.patch +Patch5: https://gitweb.gentoo.org/repo/gentoo.git/plain/media-libs/libmad/files/libmad-0.15.1b-cflags-O2.patch + +BuildRequires: automake +BuildRequires: autoconf +BuildRequires: libtool + + +%description +MAD is a high-quality MPEG audio decoder. It currently supports MPEG-1 +and the MPEG-2 extension to Lower Sampling Frequencies, as well as the +so-called MPEG 2.5 format. All three audio layers (Layer I, Layer II, +and Layer III a.k.a. MP3) are fully implemented. + +%package devel +Summary: MPEG audio decoder library development files +Group: Development/Libraries +Requires: %{name}%{?_isa} = %{version}-%{release} +%if 0%{?el5} +Requires: pkgconfig +%endif + +%description devel +%{summary}. + + +%prep +%setup -q +#Only relevant on multilibs arches +%ifarch %{ix86} x86_64 ppc ppc64 +%patch0 -p1 -b .multiarch +%endif +%patch1 -p1 -b .ppc +%patch2 -p1 -b .alt_t2 +%patch3 -p1 -b .thumb +%patch4 -p1 -b .cflags +%patch5 -p1 -b .02 + +touch -r aclocal.m4 configure.ac NEWS AUTHORS ChangeLog + +# Create an additional pkgconfig file +%{__cat} << EOF > mad.pc +prefix=%{_prefix} +exec_prefix=%{_prefix} +libdir=%{_libdir} +includedir=%{_includedir} + +Name: mad +Description: MPEG Audio Decoder +Requires: +Version: %{version} +Libs: -L%{_libdir} -lmad -lm +Cflags: -I%{_includedir} +EOF + + + +%build +autoreconf -sfiv +%configure \ +%if 0%{?__isa_bits} == 64 + --enable-fpm=64bit \ +%endif +%ifarch %{arm} + --enable-fpm=arm \ +%endif + --disable-dependency-tracking \ + --enable-accuracy \ + --disable-static + +%make_build + +%install +%make_install +rm -f %{buildroot}%{_libdir}/*.la +install -D -p -m 0644 mad.pc %{buildroot}%{_libdir}/pkgconfig/mad.pc +touch -r mad.h.sed %{buildroot}/%{_includedir}/mad.h + + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + + +%files +%doc CHANGES CREDITS README TODO +%license COPYING COPYRIGHT +%{_libdir}/libmad.so.* + +%files devel +%{_libdir}/libmad.so +%{_libdir}/pkgconfig/mad.pc +%{_includedir}/mad.h + + +%changelog +* Wed Feb 07 2018 Fedora Release Engineering - 0.15.1b-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 0.15.1b-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.15.1b-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 0.15.1b-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Jan 19 2017 Nicolas Chauvet - 0.15.1b-20 +- Update Thumb-2 patch - rhbz#1414486 + +* Wed Nov 23 2016 Nicolas Chauvet - 0.15.1b-19 +- Add patches from gentoo +- Allow debuginfo generation + +* Fri Nov 18 2016 Nicolas Chauvet -0.15.1b-18 +- Spec file clean-up and review + +* Sun Aug 31 2014 Sérgio Basto - 0.15.1b-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sun Mar 03 2013 Nicolas Chauvet - 0.15.1b-16 +- Mass rebuilt for Fedora 19 Features + +* Sat Apr 28 2012 Nicolas Chauvet - 0.15.1b-15 +- Don't use multiarch patch when the result is not hardcoded +- Update FPM +- Add patches from lp#534287 and lp#534287 + +* Wed Jan 25 2012 Nicolas Chauvet - 0.15.1b-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Sun Jul 19 2009 David Juran - 0.15.1b-13 +- ppc asm patch from David Woodhouse (Bz 730) +- rpmlint warnings + +* Wed Jul 1 2009 David Juran - 0.15.1b-12 +- fix typo in multiarch patch +- fix ppc64 version (Bz 691) + +* Sun Mar 29 2009 Thorsten Leemhuis - 0.15.1b-11 +- rebuild for new F11 features + +* Wed Jan 28 2009 David Juran - 0.15.1b-10 +- fix timestamps (Bz 264) + +* Sun Jan 25 2009 David Juran - 0.15.1b-9 +- fix multiarch (Bz 264) + +* Wed Jul 30 2008 Thorsten Leemhuis - 0.15.1b-7 +- Bump release for RpmFusion + +* Tue Feb 19 2008 David Juran - 0.15.1b-6 +- use $RPM_OPT_FLAGS - Bz 1873 + +* Sun Sep 30 2007 David Juran - 0.15.1b-5 +- Grab mad.pc from freshrpms. +- merge configure-optioins with freshrpms +- Adjusted Licence tag (GPLv2) +- Drop static archive + +* Fri Oct 06 2006 Thorsten Leemhuis 0.15.1b-4 + - rebuilt for unwind info generation, broken in gcc-4.1.1-21 + +* Tue Sep 19 2006 Ville Skyttä - 0.15.1b-3 +- Use 64bit fixed point math on x86_64. +- Filter deprecated gcc flags, build with dependency tracking disabled. +- Move "b" to version field. + +* Mon Mar 13 2006 Thorsten Leemhuis 0.15.1-2.b +- Drop Epoch in devel dep, too + +* Thu Mar 09 2006 Andreas Bierfert +- switch to new release field +- drop Epoch + +* Tue Feb 28 2006 Andreas Bierfert +- add dist + +* Wed Feb 18 2004 Ville Skyttä - 0:0.15.1-0.lvn.1.b +- Update to 0.15.1b. + +* Sun Sep 28 2003 Dams 0:0.15.0-0.fdr.1.b.0.94 +- Remove comment after scriptlets + +* Mon Jun 30 2003 Ville Skyttä - 0:0.15.0-0.fdr.1.b +- Update to 0.15.0b. +- Split separate from the old mad package to follow upstream. +- -devel requires pkgconfig. + +* Thu Apr 24 2003 Ville Skyttä - 0:0.14.2-0.fdr.3.b +- Fix missing "main" package dependencies in *-devel. +- Include patch from Debian, possibly fixes #187 comment 7, and adds + pkgconfig files for libraries. + +* Sun Apr 20 2003 Ville Skyttä - 0:0.14.2-0.fdr.2.b +- Split into mad, libmad, -devel, libid3tag and -devel packages (#187). +- Provide mp3-cmdline virtual package and alternative. +- Build shared library. + +* Fri Apr 4 2003 Ville Skyttä - 0:0.14.2-0.fdr.1.b +- Update to current Fedora guidelines. +- Exclude %%{_libdir}/*.la. + +* Thu Feb 20 2003 Ville Skyttä - 0.14.2b-1.fedora.1 +- First Fedora release, based on Matthias Saou's work. + +* Fri Sep 27 2002 Matthias Saou +- Rebuild for Red Hat Linux 8.0 (missing because of license issues). +- Spec file cleanup. + +* Tue Mar 12 2002 Bill Nottingham 0.14.2b-3 +- ship libid3tag too + +* Thu Feb 21 2002 Bill Nottingham +- rebuild + +* Mon Jan 28 2002 Bill Nottingham +- split libmad off into a separate package