From de1f13a0fded52f43032b3854370971b23e17550 Mon Sep 17 00:00:00 2001 From: tron Date: Sun, 14 Mar 2010 23:07:30 +0000 Subject: 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. --- multimedia/ffmpeg/Makefile | 4 +- multimedia/ffmpeg/Makefile.common | 26 +++++++++- multimedia/ffmpeg/distinfo | 5 +- multimedia/ffmpeg/patches/patch-ae | 25 ++++++++++ multimedia/ffmpeg/patches/patch-af | 87 +++++++++++++++++++++++++++++++++ multimedia/ffmpeg/patches/patch-powerpc | 16 ------ 6 files changed, 140 insertions(+), 23 deletions(-) create mode 100644 multimedia/ffmpeg/patches/patch-ae create mode 100644 multimedia/ffmpeg/patches/patch-af delete mode 100644 multimedia/ffmpeg/patches/patch-powerpc 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 -- cgit v1.2.3