summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortron <tron@pkgsrc.org>2010-03-14 23:07:30 +0000
committertron <tron@pkgsrc.org>2010-03-14 23:07:30 +0000
commitde1f13a0fded52f43032b3854370971b23e17550 (patch)
tree27fc039aa7d999c4c2d672a8cca6f2a3881a2ba6
parentdb8086dbd78f2adc76732739986b080816ab9862 (diff)
downloadpkgsrc-de1f13a0fded52f43032b3854370971b23e17550.tar.gz
Make this build and work under Solaris 10 x86:
1.) Work around lack of support for Sun Studio C Compiler and bugs in this compiler (it crashes with "-O3", "-xO2" works fine). 2.) Use a hammer to disable MMX, AMD 3DNow and SSE support as Solaris refuses to load libraries which contain unsupported instructions.
-rw-r--r--multimedia/ffmpeg/Makefile4
-rw-r--r--multimedia/ffmpeg/Makefile.common26
-rw-r--r--multimedia/ffmpeg/distinfo5
-rw-r--r--multimedia/ffmpeg/patches/patch-ae25
-rw-r--r--multimedia/ffmpeg/patches/patch-af87
-rw-r--r--multimedia/ffmpeg/patches/patch-powerpc16
6 files changed, 140 insertions, 23 deletions
diff --git a/multimedia/ffmpeg/Makefile b/multimedia/ffmpeg/Makefile
index 17a128eead8..a50dd4fd9b9 100644
--- a/multimedia/ffmpeg/Makefile
+++ b/multimedia/ffmpeg/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.56 2010/03/14 12:59:30 tron Exp $
+# $NetBSD: Makefile,v 1.57 2010/03/14 23:07:30 tron Exp $
PKGREVISION= 5
@@ -14,8 +14,6 @@ CONFIGURE_ARGS+= --enable-avfilter \
--enable-libvorbis \
--enable-libmp3lame
-USE_LANGUAGES+= c99
-
INSTALLATION_DIRS= lib share/examples/ffmpeg share/doc/ffmpeg
CONF_FILES+= ${PREFIX}/share/examples/ffmpeg/ffserver.conf \
diff --git a/multimedia/ffmpeg/Makefile.common b/multimedia/ffmpeg/Makefile.common
index 80845a2a662..03f41bafb12 100644
--- a/multimedia/ffmpeg/Makefile.common
+++ b/multimedia/ffmpeg/Makefile.common
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.common,v 1.4 2009/10/30 12:40:27 ahoka Exp $
+# $NetBSD: Makefile.common,v 1.5 2010/03/14 23:07:30 tron Exp $
# used by multimedia/ffplay/Makefile
DISTNAME= ffmpeg-${DISTVERSION:S/-//g}
@@ -13,12 +13,27 @@ WRKSRC= ${WRKDIR}/ffmpeg-export-${DISTVERSION}
PATCHDIR= ${.CURDIR}/../../multimedia/ffmpeg/patches
HAS_CONFIGURE= YES
+USE_LANGUAGES+= c99
USE_LIBTOOL= YES
USE_TOOLS+= gmake texi2html pod2man
+.include "../../mk/compiler.mk"
+
+.if ${OPSYS} == "SunOS" && empty(CC_VERSION:Mgcc*)
+SUBST_CLASSES+= sunwspro
+SUBST_MESSAGE.sunwspro= Fixing compiler options for SunStudio C compiler.
+SUBST_STAGE.sunwspro= post-configure
+SUBST_FILES.sunwspro= config.mak
+SUBST_SED.sunwspro= -e "s/-O /-KPIC -DPIC /"
+SUBST_SED.sunwspro+= -e "s/-O3/-xO2/g"
+SUBST_SED.sunwspro+= -e "s/-std=c99/-xc99=all/"
+SUBST_SED.sunwspro+= -e "s/-Wl,-rpath-link,/-L /g"
+.endif
+
BUILD_DEPENDS+= yasm>=0.7.2:../../devel/yasm
REPLACE_PERL+= doc/texi2pod.pl
+REPLACE_SH+= configure version.sh
SUBST_CLASSES+= conf
SUBST_STAGE.conf= post-patch
@@ -40,10 +55,17 @@ CONFIGURE_ARGS+= --mandir=${PREFIX}/${PKGMANDIR} \
--disable-debug \
--disable-stripping \
--enable-shared \
- --enable-runtime-cpudetect \
--enable-pthreads \
--enable-gpl
+.if ${OPSYS} == "SunOS"
+CONFIGURE_ARGS+= --disable-amd3dnow --disable-amd3dnowext
+CONFIGURE_ARGS+= --disable-mmx --disable-mmx2
+CONFIGURE_ARGS+= --disable-sse --disable-ssse3
+.else
+CONFIGURE_ARGS+= --enable-runtime-cpudetect
+.endif
+
# No posix_memalign() in NetBSD 4.0 and earlier
#
.if !empty(MACHINE_PLATFORM:MNetBSD-[1-4].*-*)
diff --git a/multimedia/ffmpeg/distinfo b/multimedia/ffmpeg/distinfo
index 286b818ddcf..d75df60cfca 100644
--- a/multimedia/ffmpeg/distinfo
+++ b/multimedia/ffmpeg/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.32 2010/03/14 21:44:49 tron Exp $
+$NetBSD: distinfo,v 1.33 2010/03/14 23:07:30 tron Exp $
SHA1 (ffmpeg-20090611.tar.bz2) = 04e67497f70c64b7a26534d4b67e3a46cdb4b219
RMD160 (ffmpeg-20090611.tar.bz2) = 447a72cd1a416f926100c61299d9012535909d9a
@@ -7,6 +7,7 @@ SHA1 (patch-aa) = e40f61850fe5c85bdd4b659802601dfacfe73ad1
SHA1 (patch-ab) = 1c1da33f47be51f75635a9667b0d7d8052945ba7
SHA1 (patch-ac) = 05820de2ae81b4607ba782b0233fd1e087045b97
SHA1 (patch-ad) = ebee8a9e3d5caa533459e1547690ee6c2f095018
+SHA1 (patch-ae) = a3d81de5fd49bee35f0bc3c78808f2b65a94288c
+SHA1 (patch-af) = 2507866ddc72c7e8ff10b489c86cb679e8e2fd49
SHA1 (patch-bktr) = fb57a4f5dc0d372eb3f40dac5b05ea7d1da45d7b
SHA1 (patch-configure) = ec0ae3c27026b45d380ecea04ff22518bf652ec0
-SHA1 (patch-powerpc) = 0eaf8d81164e1488fdb436d50909d0a633439e6a
diff --git a/multimedia/ffmpeg/patches/patch-ae b/multimedia/ffmpeg/patches/patch-ae
new file mode 100644
index 00000000000..ff0d7ff9e19
--- /dev/null
+++ b/multimedia/ffmpeg/patches/patch-ae
@@ -0,0 +1,25 @@
+$NetBSD: patch-ae,v 1.10 2010/03/14 23:07:30 tron Exp $
+
+Really turn AMD 3DNow (and MMX, etc.) because the shared library
+will otherwise not work on Intel CPUs.
+
+--- libswscale/rgb2rgb.c.orig Thu Mar 19 04:45:29 2009
++++ libswscale/rgb2rgb.c Sun Mar 14 23:55:39 2010
+@@ -101,7 +101,7 @@
+ long lumStride, long chromStride, long srcStride);
+
+
+-#if ARCH_X86 && CONFIG_GPL
++#if ARCH_X86 && CONFIG_GPL && !defined(sun)
+ DECLARE_ASM_CONST(8, uint64_t, mmx_null) = 0x0000000000000000ULL;
+ DECLARE_ASM_CONST(8, uint64_t, mmx_one) = 0xFFFFFFFFFFFFFFFFULL;
+ DECLARE_ASM_CONST(8, uint64_t, mask32b) = 0x000000FF000000FFULL;
+@@ -162,7 +162,7 @@
+ #define RENAME(a) a ## _C
+ #include "rgb2rgb_template.c"
+
+-#if ARCH_X86 && CONFIG_GPL
++#if ARCH_X86 && CONFIG_GPL && !defined(sun)
+
+ //MMX versions
+ #undef RENAME
diff --git a/multimedia/ffmpeg/patches/patch-af b/multimedia/ffmpeg/patches/patch-af
new file mode 100644
index 00000000000..3346a971703
--- /dev/null
+++ b/multimedia/ffmpeg/patches/patch-af
@@ -0,0 +1,87 @@
+$NetBSD: patch-af,v 1.7 2010/03/14 23:07:30 tron Exp $
+
+1.) Fixes pkg/42000, not necessary after the next upgrade.
+2.) Really turn AMD 3DNow (and MMX, etc.) because the shared library
+ will otherwise not work on Intel CPUs.
+
+--- libswscale/swscale.c.orig Thu Jun 4 23:55:52 2009
++++ libswscale/swscale.c Sun Mar 14 23:53:08 2010
+@@ -221,7 +221,7 @@
+ write special BGR->BGR scaler
+ */
+
+-#if ARCH_X86 && CONFIG_GPL
++#if ARCH_X86 && CONFIG_GPL && !defined(sun)
+ DECLARE_ASM_CONST(8, uint64_t, bF8)= 0xF8F8F8F8F8F8F8F8LL;
+ DECLARE_ASM_CONST(8, uint64_t, bFC)= 0xFCFCFCFCFCFCFCFCLL;
+ DECLARE_ASM_CONST(8, uint64_t, w10)= 0x0010001000100010LL;
+@@ -1307,12 +1307,14 @@
+
+ #if ARCH_PPC
+ #if (HAVE_ALTIVEC || CONFIG_RUNTIME_CPUDETECT) && CONFIG_GPL
++#if !CONFIG_RUNTIME_CPUDETECT
+ #undef COMPILE_C
++#endif
+ #define COMPILE_ALTIVEC
+ #endif
+ #endif //ARCH_PPC
+
+-#if ARCH_X86
++#if ARCH_X86 && !defined(sun)
+
+ #if ((HAVE_MMX && !HAVE_AMD3DNOW && !HAVE_MMX2) || CONFIG_RUNTIME_CPUDETECT) && CONFIG_GPL
+ #define COMPILE_MMX
+@@ -1349,7 +1351,7 @@
+ #include "swscale_template.c"
+ #endif
+
+-#if ARCH_X86
++#if ARCH_X86 && !defined(sun)
+
+ //MMX versions
+ #ifdef COMPILE_MMX
+@@ -1417,7 +1419,7 @@
+ int64_t *filter2=NULL;
+ const int64_t fone= 1LL<<54;
+ int ret= -1;
+-#if ARCH_X86
++#if ARCH_X86 && !defined(sun)
+ if (flags & SWS_CPU_CAPS_MMX)
+ __asm__ volatile("emms\n\t"::: "memory"); //FIXME this should not be required but it IS (even for non-MMX versions)
+ #endif
+@@ -1976,7 +1978,7 @@
+ #if CONFIG_RUNTIME_CPUDETECT && CONFIG_GPL
+ int flags = c->flags;
+
+-#if ARCH_X86
++#if ARCH_X86 && !defined(sun)
+ // ordered per speed fastest first
+ if (flags & SWS_CPU_CAPS_MMX2) {
+ sws_init_swScale_MMX2(c);
+@@ -2561,7 +2563,7 @@
+ int unscaled, needsDither;
+ int srcRange, dstRange;
+ SwsFilter dummyFilter= {NULL, NULL, NULL, NULL};
+-#if ARCH_X86
++#if ARCH_X86 && !defined(sun)
+ if (flags & SWS_CPU_CAPS_MMX)
+ __asm__ volatile("emms\n\t"::: "memory");
+ #endif
+@@ -3046,7 +3048,7 @@
+ }
+ else
+ {
+-#if ARCH_X86
++#if ARCH_X86 && !defined(sun)
+ av_log(c, AV_LOG_VERBOSE, "using x86 asm scaler for horizontal scaling\n");
+ #else
+ if (flags & SWS_FAST_BILINEAR)
+@@ -3555,7 +3557,7 @@
+ av_freep(&c->hLumFilterPos);
+ av_freep(&c->hChrFilterPos);
+
+-#if ARCH_X86 && CONFIG_GPL
++#if ARCH_X86 && CONFIG_GPL && !defined(sun)
+ #ifdef MAP_ANONYMOUS
+ if (c->funnyYCode ) munmap(c->funnyYCode , MAX_FUNNY_CODE_SIZE);
+ if (c->funnyUVCode) munmap(c->funnyUVCode, MAX_FUNNY_CODE_SIZE);
diff --git a/multimedia/ffmpeg/patches/patch-powerpc b/multimedia/ffmpeg/patches/patch-powerpc
deleted file mode 100644
index dee96541867..00000000000
--- a/multimedia/ffmpeg/patches/patch-powerpc
+++ /dev/null
@@ -1,16 +0,0 @@
-$NetBSD: patch-powerpc,v 1.1 2009/09/20 08:13:21 ahoka Exp $
-
-Fixes pkg/42000, not necessary aftert the next upgrade.
-
---- libswscale/swscale.c.orig 2009-06-04 23:55:52.000000000 +0200
-+++ libswscale/swscale.c
-@@ -1307,7 +1307,9 @@ static inline void monoblack2Y(uint8_t *
-
- #if ARCH_PPC
- #if (HAVE_ALTIVEC || CONFIG_RUNTIME_CPUDETECT) && CONFIG_GPL
-+#if !CONFIG_RUNTIME_CPUDETECT
- #undef COMPILE_C
-+#endif
- #define COMPILE_ALTIVEC
- #endif
- #endif //ARCH_PPC