pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pkg/30366: multimedia/mjpegtools fails to build with -march=pentium4



The following reply was made to PR pkg/30366; it has been noted by GNATS.

From: Frederick Bruckman <fredb%immanent.net@localhost>
To: Geert Hendrickx <geert.hendrickx%ua.ac.be@localhost>
Cc: gnats-bugs%netbsd.org@localhost
Subject: Re: pkg/30366: multimedia/mjpegtools fails to build with 
-march=pentium4
Date: Sun, 29 May 2005 16:36:52 -0500 (CDT)

 In article <20050529120001.592AB63B116%narn.netbsd.org@localhost>,
        geert.hendrickx%ua.ac.be@localhost 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".)
 
 >>How-To-Repeat:
 > Have CFLAGS+=-march=pentium4 without any -mcpu flag in /etc/mk.conf.  Then 
 > do make in pkgsrc/multimedia/mjpegtools: 
  
 >  cc -DHAVE_CONFIG_H -I. -I.. -I../utils 
 > -I/usr/obj/pkgsrc/multimedia/mjpegtools/work/.buildlink/include 
 > -DGLX_GLXEXT_LEGACY 
 > -I/usr/obj/pkgsrc/multimedia/mjpegtools/work/.buildlink/include/freetype2 
 > -mcpu=i686 -march=i386 -O2 -pipe -march=pentium4 -Wall -Wunused -MT 
 > quantize_x86.lo -MD -MP -MF .deps/quantize_x86.Tpo -c quantize_x86.c  -fPIC 
 > -DPIC -o .libs/quantize_x86.o
 
 Look at that command line.  On the principle that "later options 
 override earlier ones", it has "-mcpu=i686 -march=pentium4", which 
 isn't a configuration you would ever call for deliberately. 
 
 >>Fix:
 > add -mcpu=pentium4 to the CFLAGS.  pkgsrc could copy any existing 
 > -march=$CPU flag to a -mcpu=$CPU flag to be sure, without breaking anything. 
 >  
 
 I think it's a good idea, if you set one, to set the other, if 
 not necessarily to the same thing.  What you're asking for, though, 
 would open up a big can of worms.  What if the compiler isn't gcc? 
 Or suppose it's gcc, but arm rather than i386:  should pkgsrc set 
 "-mtune"?  Should it set "-mfpe"?
 
 
 Frederick
 



Home | Main Index | Thread Index | Old Index