Subject: Re: pkg/30366: multimedia/mjpegtools fails to build with -march=pentium4
To: Frederick Bruckman <fredb@immanent.net>
From: Geert Hendrickx <geert.hendrickx@ua.ac.be>
List: tech-pkg
Date: 06/07/2005 13:17:57
--vkogqOf2sHV7VnPd
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Sun, May 29, 2005 at 04:36:52PM -0500, Frederick Bruckman wrote:
> In article <20050529120001.592AB63B116@narn.netbsd.org>,
> 	geert.hendrickx@ua.ac.be writes:
> > pkgsrc/multimedia/mjpegtools fails when built with -march=pentium4
> > in the CFLAGS.  It succeeds with any -march up to pentium3, but
> > (!!), also succeeds with -march=pentium4 when -mcpu=pentium4 is
> > added (however, this is automatically implied by gcc).  
> > 
> > The error comes from compiling some assembler code.  The ./configure
> > script does some `uname -m' checking and accordingly sets a flag
> > $have_cmov (unless $enable_cmov_extension == no).  However, on i386
> > (or better), NetBSD's "uname -m" _always_ returns i386 (luckily,
> > otherwise binary packages built on a pentium2 bulk build machine
> > wouldn't work on a lesser cpu).  
> 
> My money's on the hand-tuned assembler, over the gcc flag. I agree 
> with you, that it would bad to do that automatically.  The package 
> could grow an option, ${MJPEGTOOLS_USE_CMOV}, and a note in the 
> description in "defaults/mk.conf" not to set that unless you run 
> only hosts that support it.  (I guess the simplist way to tell, on 
> NetBSD, is "grep CMOV /var/run/dmesg.boot".)

The patch in attachment introduces a "cmov" option (using the OPTIONS
framwork), which only exists on i386, and is unset by default.
According to this option being set or unset, the ./configure flag
--enable-cmov-extension or --disable-cmov-extension is added.  

This solves the problem.  Only thing to be done is to document the
option in mk/defaults/.  It may be worth mentioning that, on NetBSD,
this extension can be checked with "dmesg | grep CMOV".  

GH

-- 
:wq

--vkogqOf2sHV7VnPd
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="Makefile.diff"

--- multimedia/mjpegtools/Makefile.orig	2005-06-07 12:47:36.000000000 +0200
+++ multimedia/mjpegtools/Makefile	2005-06-07 13:09:21.000000000 +0200
@@ -26,6 +26,18 @@
 
 INFO_FILES=		mjpeg-howto.info
 
+.if ${MACHINE_ARCH} == "i386"
+PKG_OPTIONS_VAR=	PKG_OPTIONS.mjpegtools
+PKG_SUPPORTED_OPTIONS=	cmov
+.  include "../../mk/bsd.options.mk"
+
+.  if !empty(PKG_OPTIONS:Mcmov)
+CONFIGURE_ARGS+=	--enable-cmov-extension
+.  else
+CONFIGURE_ARGS+=	--disable-cmov-extension
+.  endif
+.endif
+
 .include "../../audio/lame/buildlink3.mk"
 .include "../../devel/SDL/buildlink3.mk"
 .include "../../graphics/ImageMagick/buildlink3.mk"

--vkogqOf2sHV7VnPd--