forked from mirrors/nixpkgs
Patching libmad for mips (Ben Nanonote)
svn path=/nixpkgs/branches/stdenv-updates/; revision=23312
This commit is contained in:
parent
79653715d6
commit
c68d102286
|
@ -0,0 +1,73 @@
|
|||
Taken from openwrt:
|
||||
https://dev.openwrt.org/browser/packages/libs/libmad/patches/001-mips_removal_h_constraint.patch?rev=18548
|
||||
|
||||
diff -ur libmad-0.15.1b-orig/fixed.h libmad-0.15.1b/fixed.h
|
||||
--- libmad-0.15.1b-orig/fixed.h 2004-02-17 12:32:03.000000000 +1030
|
||||
+++ libmad-0.15.1b/fixed.h 2009-08-05 10:46:30.000000000 +0930
|
||||
@@ -299,6 +299,23 @@
|
||||
|
||||
# elif defined(FPM_MIPS)
|
||||
|
||||
+/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */
|
||||
+#if defined (__GNUC__) && defined (__GNUC_MINOR__)
|
||||
+#define __GNUC_PREREQ(maj, min) \
|
||||
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
|
||||
+#else
|
||||
+#define __GNUC_PREREQ(maj, min) 0
|
||||
+#endif
|
||||
+
|
||||
+#if __GNUC_PREREQ(4,4)
|
||||
+ typedef unsigned int u64_di_t __attribute__ ((mode (DI)));
|
||||
+# define MAD_F_MLX(hi, lo, x, y) \
|
||||
+ do { \
|
||||
+ u64_di_t __ll = (u64_di_t) (x) * (y); \
|
||||
+ hi = __ll >> 32; \
|
||||
+ lo = __ll; \
|
||||
+ } while (0)
|
||||
+#else
|
||||
/*
|
||||
* This MIPS version is fast and accurate; the disposition of the least
|
||||
* significant bit depends on OPT_ACCURACY via mad_f_scale64().
|
||||
@@ -328,6 +345,7 @@
|
||||
: "%r" ((x) >> 12), "r" ((y) >> 16))
|
||||
# define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo))
|
||||
# endif
|
||||
+#endif /* __GNU_PREREQ(4,4) */
|
||||
|
||||
# if defined(OPT_SPEED)
|
||||
# define mad_f_scale64(hi, lo) \
|
||||
diff -ur libmad-0.15.1b-orig/mad.h libmad-0.15.1b/mad.h
|
||||
--- libmad-0.15.1b-orig/mad.h 2004-02-17 13:25:44.000000000 +1030
|
||||
+++ libmad-0.15.1b/mad.h 2009-08-05 10:42:40.000000000 +0930
|
||||
@@ -344,6 +344,23 @@
|
||||
|
||||
# elif defined(FPM_MIPS)
|
||||
|
||||
+/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */
|
||||
+#if defined (__GNUC__) && defined (__GNUC_MINOR__)
|
||||
+#define __GNUC_PREREQ(maj, min) \
|
||||
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
|
||||
+#else
|
||||
+#define __GNUC_PREREQ(maj, min) 0
|
||||
+#endif
|
||||
+
|
||||
+#if __GNUC_PREREQ(4,4)
|
||||
+ typedef unsigned int u64_di_t __attribute__ ((mode (DI)));
|
||||
+# define MAD_F_MLX(hi, lo, x, y) \
|
||||
+ do { \
|
||||
+ u64_di_t __ll = (u64_di_t) (x) * (y); \
|
||||
+ hi = __ll >> 32; \
|
||||
+ lo = __ll; \
|
||||
+ } while (0)
|
||||
+#else
|
||||
/*
|
||||
* This MIPS version is fast and accurate; the disposition of the least
|
||||
* significant bit depends on OPT_ACCURACY via mad_f_scale64().
|
||||
@@ -373,6 +390,7 @@
|
||||
: "%r" ((x) >> 12), "r" ((y) >> 16))
|
||||
# define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo))
|
||||
# endif
|
||||
+#endif /* __GNU_PREREQ(4,4) */
|
||||
|
||||
# if defined(OPT_SPEED)
|
||||
# define mad_f_scale64(hi, lo) \
|
|
@ -8,11 +8,13 @@ stdenv.mkDerivation {
|
|||
sha256 = "bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690";
|
||||
};
|
||||
|
||||
patches = [ ./pkgconfig.patch ];
|
||||
patches = [ ./001-mips_removal_h_constraint.patch ./pkgconfig.patch ];
|
||||
|
||||
buildNativeInputs = [ autoconf ];
|
||||
|
||||
# The -fforce-mem flag has been removed in GCC 4.3.
|
||||
preConfigure = ''
|
||||
${autoconf}/bin/autoconf
|
||||
autoconf
|
||||
substituteInPlace configure --replace "-fforce-mem" ""
|
||||
'';
|
||||
|
||||
|
|
Loading…
Reference in a new issue