Reproducible: Always Steps to Reproduce: 1. USE=3dnow 2. gcc --version is 2.95.3 3. emerge fftw Actual Results: checking whether gcc accepts -m3dnow... no configure: error: Need a version of gcc with -m3dnow [compilation stops] Expected Results: Should not have use -m3dnow. I have an AMD Athlon XP. Problem seems to be that USE=3dnow sets --enable-3dnow, which makes fftw use the -m3dnow, which is not supported by gcc 2.95.3. Maybe I have misunderstood the use of the USE=3dnow flag, but this is the first time I encounter this problem. Suggested solutions: (1) Use --enable-k7 instead. FAQ says it's faster too: http://fftw.org/faq/section2.html#3dnow fftw-3.0.1.ebuild: ********************************************************************** elif [ `use 3dnow` ]; then myconfsingle="$myconfsingle --enable-k7" fi ********************************************************************** I guess this is the best solution. (2) Filter --enable-3dnow on machines where gcc does not support -m3dnow. fftw-3.0.1.ebuild: ********************************************************************** elif [ `use 3dnow` ]; then local tmpdir="`mktemp -d`" pushd "$tmpdir" touch test.c gcc -m3dnow -c test.c && myconfsingle="$myconfsingle --enable-3dnow" popd rm -r "$tmpdir" fi ********************************************************************** emerge info: ********************************************************************** Portage 2.0.49-r21 (default-1.0, gcc-2.95.3, glibc-2.2.5-r2,2.2.5-r9, 2.4.20-gentoo-r9) ================================================================= System uname: 2.4.20-gentoo-r9 i686 AMD Athlon(tm) XP 1700+ Gentoo Base System version 1.4.3.10p1 ACCEPT_KEYWORDS="x86" AUTOCLEAN="yes" CFLAGS="-march=i686 -O3 -pipe" CHOST="i686-pc-linux-gnu" COMPILER="" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.1/share/config /usr/kde/3/share/config /usr/share/config /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" CXXFLAGS="-march=i686 -O3 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs ccache sandbox" GENTOO_MIRRORS=" ftp://sunsite.uio.no/linux/Gentoo/ ftp://gentoo.linux.no/pub/gentoo/ http://gentoo.linux.no/ http://www.ibiblio.org/pub/Linux/distributions/gentoo" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="" SYNC="rsync://rsync.no.gentoo.org/gentoo-portage" USE="3dnow X aalib alsa apm arts avi berkdb bonobo cdr crypt directfb dvd encode esd gdbm gif gnome gnome-libs gpm gtk gtk2 gtkhtml guile imlib java jpeg kde ldap libg++ libwww matrox mikmod mmx motif mozilla mozsvg mpeg mysql ncurses nls oggvorbis opengl oss pam pdflib perl png python qt quicktime readline ruby scanner sdl slang spell ssl svga tcltk tcpd tetex tiff truetype x86 xml2 xmms xv" **********************************************************************
dear Hakon, i can change the following for you in the gcc ebuilds: for USE 3dnow we say: if has_version sys-devel/gcc higher than 3.2.3 then emit -m3dnow else emit --enable-k7 fi or do you want the ebuild to be changed to explicitly use --enable-k7 for all gcc versions supported? maybe you could find me if recent versions of gcc 3.2.x and 3.3.x support both flags so that we could decide together. thanks, Alex
--enable-3dnow supports a greater range of CPUs (from the FAQ). But, it seems to require gcc-3-something. --enable-k7 is faster, but only works on K7 processors. Supported by all versions of gcc? The ebuild should then maybe look something like this: if USE=3dnow then if machine=k7 then myconf += "--enable-k7" else if gcc supports -m3dnow then myconf += "--enable-3dnow" else # Bummer! endif endif endif This is not a problem with me anymore. I made fftw compile when I wrote the bugreport. It would be nice to get it fixed, though, in case someone out there can't do a complete "emerge world" just because they haven't upgraded their gcc.
Since people who explicitly ask for 3dnow by setting the USE flag I'd say we take the --enable-k7 stuff. Alexander, what do you think?
Did this in -r1. Ok, let's wait what explodes. Thanks for the hint, H
Did this in -r1. Ok, let's wait what explodes. Thanks for the hint, Håkon!