Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 38076 - fftw-3.0.1: USE=3dnow yields "gcc -m3dnow", not supported by 2.95.3
Summary: fftw-3.0.1: USE=3dnow yields "gcc -m3dnow", not supported by 2.95.3
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: x86 Linux
: High normal (vote)
Assignee: Gentoo Science Related Packages
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-01-13 06:18 UTC by Håkon A. Hjortland
Modified: 2004-04-19 07:17 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Håkon A. Hjortland 2004-01-13 06:18:37 UTC
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"
**********************************************************************
Comment 1 Alexander Gabert (RETIRED) gentoo-dev 2004-03-03 05:49:33 UTC
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
Comment 2 Håkon A. Hjortland 2004-03-04 15:16:27 UTC
--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.
Comment 3 Patrick Kursawe (RETIRED) gentoo-dev 2004-04-19 06:53:20 UTC
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?
Comment 4 Patrick Kursawe (RETIRED) gentoo-dev 2004-04-19 07:17:07 UTC
Did this in -r1. Ok, let's wait what explodes. Thanks for the hint, H
Comment 5 Patrick Kursawe (RETIRED) gentoo-dev 2004-04-19 07:17:07 UTC
Did this in -r1. Ok, let's wait what explodes. Thanks for the hint, Håkon!