From swell.k@gmail.com  Sun Nov  7 02:29:22 2010
Return-Path: <swell.k@gmail.com>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C8BEF106566C
	for <FreeBSD-gnats-submit@freebsd.org>; Sun,  7 Nov 2010 02:29:22 +0000 (UTC)
	(envelope-from swell.k@gmail.com)
Received: from mail-yx0-f182.google.com (mail-yx0-f182.google.com [209.85.213.182])
	by mx1.freebsd.org (Postfix) with ESMTP id 823B68FC1C
	for <FreeBSD-gnats-submit@freebsd.org>; Sun,  7 Nov 2010 02:29:22 +0000 (UTC)
Received: by yxl31 with SMTP id 31so2949445yxl.13
        for <FreeBSD-gnats-submit@freebsd.org>; Sat, 06 Nov 2010 19:29:21 -0700 (PDT)
Received: by 10.151.8.8 with SMTP id l8mr1486882ybi.373.1289096961279;
        Sat, 06 Nov 2010 19:29:21 -0700 (PDT)
Received: from localhost (tor-exit-proxy2-readme.formlessnetworking.net [208.53.142.38])
        by mx.google.com with ESMTPS id x45sm2406304yhc.45.2010.11.06.19.29.19
        (version=SSLv3 cipher=RC4-MD5);
        Sat, 06 Nov 2010 19:29:20 -0700 (PDT)
Message-Id: <86iq09uaro.fsf@gmail.com>
Date: Sun, 07 Nov 2010 05:29:15 +0300
From: Anonymous <swell.k@gmail.com>
To: FreeBSD-gnats-submit@freebsd.org
Subject: [patch] www/firefox-devel: use optimized asm in libvpx on i386/amd64

>Number:         152001
>Category:       ports
>Synopsis:       [patch] www/firefox-devel: use optimized asm in libvpx on i386/amd64
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    beat
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Nov 07 02:30:09 UTC 2010
>Closed-Date:    Sun Nov 07 13:08:23 UTC 2010
>Last-Modified:  Sun Nov 07 13:08:23 UTC 2010
>Originator:     Anonymous
>Release:        FreeBSD 9.0-CURRENT amd64
>Organization:
>Environment:
>Description:
Build *bundled* libvpx more like multimedia/libvpx does by using
x86-linux-gcc and x86_64-linux-gcc targets. Non-x86 archs continue
to use generic-gnu target.
>How-To-Repeat:
# let's see if arch-specific asm is actually used during build
$ make configue
$ grep \^VPX_ $(make -V WRKSRC)/config/autoconf.mk
VPX_AS = yasm
VPX_ASFLAGS = -f elf64 -rnasm -pnasm -DPIC
VPX_X86_ASM = 1

# build bundled libvpx manually to save time
$ gmake -C$(make -V WRKSRC)/config
$ gmake -C$(make -V WRKSRC)/media/libvpx
[...]
yasm -o idctllm_mmx.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vp8/common/x86/idctllm_mmx.asm
yasm: warning: unrecognized option `-c'
yasm -o iwalsh_mmx.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vp8/common/x86/iwalsh_mmx.asm
yasm: warning: unrecognized option `-c'
yasm -o iwalsh_sse2.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vp8/common/x86/iwalsh_sse2.asm
yasm: warning: unrecognized option `-c'
yasm -o loopfilter_mmx.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vp8/common/x86/loopfilter_mmx.asm
yasm: warning: unrecognized option `-c'
yasm -o loopfilter_sse2.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vp8/common/x86/loopfilter_sse2.asm
yasm: warning: unrecognized option `-c'
yasm -o postproc_mmx.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vp8/common/x86/postproc_mmx.asm
yasm: warning: unrecognized option `-c'
yasm -o postproc_sse2.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vp8/common/x86/postproc_sse2.asm
yasm: warning: unrecognized option `-c'
yasm -o recon_mmx.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vp8/common/x86/recon_mmx.asm
yasm: warning: unrecognized option `-c'
yasm -o recon_sse2.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vp8/common/x86/recon_sse2.asm
yasm: warning: unrecognized option `-c'
yasm -o subpixel_mmx.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vp8/common/x86/subpixel_mmx.asm
yasm: warning: unrecognized option `-c'
yasm -o subpixel_sse2.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vp8/common/x86/subpixel_sse2.asm
yasm: warning: unrecognized option `-c'
yasm -o dequantize_mmx.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vp8/decoder/x86/dequantize_mmx.asm
yasm: warning: unrecognized option `-c'
yasm -o emms.o -f elf64 -rnasm -pnasm -DPIC -I../../media/libvpx/ -I../../media/libvpx/vpx_ports/ -c ./vpx_ports/emms.asm
yasm: warning: unrecognized option `-c'
rm -f libvpx.a
ar cr libvpx.a vpx_config_c.o systemdependent.o alloccommon.o blockd.o debugmodes.o dsystemdependent.o entropy.o entropymode.o entropymv.o extend.o filter_c.o findnearmv.o idctllm.o invtrans.o loopfilter.o loopfilter_filters.o mbpitch.o modecont.o modecontext.o postproc.o predictdc.o quant_common.o recon.o reconinter.o reconintra.o reconintra4x4.o segmentation_common.o setupintrarecon.o swapyv12buffer.o textblit.o treecoder.o dboolhuff.o decodemv.o decodframe.o demode.o dequantize.o detokenize.o onyxd_if.o threading.o vp8_dx_iface.o vpx_codec.o vpx_decoder.o vpx_decoder_compat.o vpx_encoder.o vpx_image.o vpx_mem.o gen_scalers.o vpxscale.o scalesystemdependant.o yv12config.o yv12extend.o loopfilter_x86.o vp8_asm_stubs.o x86_systemdependent.o x86_dsystemdependent.o idctllm_mmx.o iwalsh_mmx.o iwalsh_sse2.o loopfilter_mmx.o loopfilter_sse2.o postproc_mmx.o postproc_sse2.o recon_mmx.o recon_sse2.o subpixel_mmx.o subpixel_sse2.o dequantize_mmx.o emms.o
ranlib libvpx.a
>Fix:
--- a.diff begins here ---
Index: www/firefox-devel/Makefile
===================================================================
--- www/firefox-devel/Makefile	(revision 430)
+++ www/firefox-devel/Makefile	(working copy)
@@ -87,6 +85,10 @@
 ALL_TARGET=	profiledbuild
 .endif
 
+.if ${ARCH} == amd64 || ${ARCH} == i386
+BUILD_DEPENDS+=	yasm:${PORTSDIR}/devel/yasm
+.endif
+
 pre-extract:
 .if defined(WITH_PGO)
 	@${ECHO} "*****************************************************************"
Index: www/firefox-devel/files/patch-configure.in
===================================================================
--- www/firefox-devel/files/patch-configure.in	(revision 430)
+++ www/firefox-devel/files/patch-configure.in	(working copy)
@@ -9,3 +9,17 @@
      CPU_ARCH="$OS_TEST"
      ;;
  
+@@ -5938,11 +5938,11 @@ if test -n "$MOZ_WEBM"; then
+       AC_CHECK_PROGS(VPX_AS, $YASM yasm, "")
+       dnl We have YASM, see if we have assembly on this platform.  
+       case "$OS_ARCH:$OS_TEST" in
+-      Linux:x86|Linux:i?86)
++      Linux:x86|Linux:i?86|FreeBSD:i386)
+         VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
+         VPX_X86_ASM=1
+       ;;
+-      Linux:x86_64)
++      Linux:x86_64|FreeBSD:amd64)
+         VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
+         VPX_X86_ASM=1
+       ;;
Index: www/firefox-devel/files/patch-media-libvpx-vpx_config.c
===================================================================
--- www/firefox-devel/files/patch-media-libvpx-vpx_config.c	(revision 0)
+++ www/firefox-devel/files/patch-media-libvpx-vpx_config.c	(revision 0)
@@ -0,0 +1,16 @@
+--- media/libvpx/vpx_config_c.c~
++++ media/libvpx/vpx_config_c.c
+@@ -12,11 +12,11 @@
+ /* 32 bit MacOS. */
+ #include "vpx_config_x86-darwin9-gcc.c"
+ 
+-#elif defined(__linux__) && defined(__i386__)
++#elif (defined(__linux__) || defined(__FreeBSD__)) && defined(__i386__)
+ /* 32 bit Linux. */
+ #include "vpx_config_x86-linux-gcc.c"
+ 
+-#elif defined(__linux__) && defined(__x86_64__)
++#elif (defined(__linux__) || defined(__FreeBSD__)) && defined(__x86_64__)
+ /* 64 bit Linux. */
+ #include "vpx_config_x86_64-linux-gcc.c"
+ 
Index: www/firefox-devel/files/patch-media-libvpx-vpx_config.h
===================================================================
--- www/firefox-devel/files/patch-media-libvpx-vpx_config.h	(revision 0)
+++ www/firefox-devel/files/patch-media-libvpx-vpx_config.h	(revision 0)
@@ -0,0 +1,16 @@
+--- media/libvpx/vpx_config.h~
++++ media/libvpx/vpx_config.h
+@@ -12,11 +12,11 @@
+ /* 32 bit MacOS. */
+ #include "vpx_config_x86-darwin9-gcc.h"
+ 
+-#elif defined(__linux__) && defined(__i386__)
++#elif (defined(__linux__) || defined(__FreeBSD__)) && defined(__i386__)
+ /* 32 bit Linux. */
+ #include "vpx_config_x86-linux-gcc.h"
+ 
+-#elif defined(__linux__) && defined(__x86_64__)
++#elif (defined(__linux__) || defined(__FreeBSD__)) && defined(__x86_64__)
+ /* 64 bit Linux. */
+ #include "vpx_config_x86_64-linux-gcc.h"
+ 
--- a.diff ends here ---
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: gecko->beat 
Responsible-Changed-By: beat 
Responsible-Changed-When: Sun Nov 7 10:30:43 UTC 2010 
Responsible-Changed-Why:  
I'll take it. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=152001 
State-Changed-From-To: open->closed 
State-Changed-By: beat 
State-Changed-When: Sun Nov 7 13:08:22 UTC 2010 
State-Changed-Why:  
Committed. Thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=152001 
>Unformatted:
