summaryrefslogtreecommitdiff
path: root/devel/cpuflags/files/cpuflags.Linux
diff options
context:
space:
mode:
Diffstat (limited to 'devel/cpuflags/files/cpuflags.Linux')
-rwxr-xr-xdevel/cpuflags/files/cpuflags.Linux117
1 files changed, 89 insertions, 28 deletions
diff --git a/devel/cpuflags/files/cpuflags.Linux b/devel/cpuflags/files/cpuflags.Linux
index e2cea2740e6..e302e8ab3e7 100755
--- a/devel/cpuflags/files/cpuflags.Linux
+++ b/devel/cpuflags/files/cpuflags.Linux
@@ -1,44 +1,105 @@
#!/bin/sh
-# $NetBSD: cpuflags.Linux,v 1.5 2001/11/27 12:26:12 abs Exp $
+# $NetBSD: cpuflags.Linux,v 1.6 2004/07/27 19:25:44 abs Exp $
+PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH
-hw_model=`uname -m`
+if [ -n "$1" ]; then
+ CC=$1
+else
+ CC=gcc
+fi
+
+hw_machine_arch=$(uname -m)
+if [ ! -f /proc/cpuinfo ] ; then
+ echo "Unable to open /proc/cpuinfo"
+ hw_model=Unknown
+else
+ hw_model=$(awk -F: '/model name/{sub(" ","",$2);print $2}' /proc/cpuinfo)
+fi
-case $hw_model in
+case $hw_machine_arch in
# i386
- i386) FLAGS='-march=i386' ;;
- i486) FLAGS='-march=i486' ;;
- i586) FLAGS='-march=pentium' ;;
- i686) FLAGS='-march=pentiumpro' ;;
+ i386) FLAGS='-march=i386' ;;
+ i486) FLAGS='-march=i486' ;;
+ i586) FLAGS='-march=pentium' ;;
+ i686) case $hw_model in
+ "AMD Duron(TM)") FLAGS='-march=athlon' ;;
+ esac
+ ;;
#
- *) echo "Unknown hw.model '$hw_model'" >&2
- echo "Please send machine details to abs@netbsd.org" >&2
- ;;
esac
-# Fixup flags for old gcc
+if [ -z "$FLAGS" -a -z "$NONE" ] ; then
+ echo 'Unknown machine - please send details to abs@netbsd.org' >&2
+ echo " hw.model : '$hw_model'" >&2
+ echo " hw.machine_arch : '$hw_machine_arch'" >&2
+fi
+
+# Fixup options for older gccs.
+# Entries can be recursive - eg:
+# -march=k6-3 -> -march=k6 -> -march=pentium -> -march=i486
+#
+# The format of table is
+# gcc_version_in_which_option_was_introduced new_option old_option
+
if [ -n "$FLAGS" ]; then
- gcc_ver=`gcc -v 2>&1 | awk '/gcc version/ {sub("egcs-","");print $3}'`
- FLAGS=`awk -v "flags=$FLAGS" -v "gcc_ver=$gcc_ver" '
- {if (gcc_ver < $1){map["-m"$2] = "-m"$3}}
- END{if (map[flags]) {print map[flags]}else {print flags}}
+ gcc_ver=`${CC} -dumpversion | sed 's/^egcs-//'`
+ FLAGS=`awk -F: -v "flags=$FLAGS" -v "gcc_ver=$gcc_ver" '
+ { if (gcc_ver < $1){map[$2] = ""$3} }
+ END { while (flags in map) {flags = map[flags]} print flags }
' <<EOD
-2.90 arch=i386 no-486
-2.90 arch=i486 486
-2.90 arch=pentium 486
-2.90 arch=pentiumpro 486
-2.90 cpu=supersparc supersparc
-2.90 cpu=sparclite sparclite
-2.90 cpu=cypress cypress
-2.90 cpu=v9 v8
-2.90 cpu=arm610 6
-2.90 cpu=strongarm110 6
-2.90 cpu=arm710 6
-2.95 arch=k6 arch=pentium
+2.90:-march=i386:-mno-486
+2.90:-march=i486:-m486
+2.90:-march=pentium:-m486
+2.90:-march=pentiumpro:-m486
+2.90:-mcpu=21164a:
+2.90:-mcpu=arm610:-m6
+2.90:-mcpu=arm710:-m6
+2.90:-mcpu=cypress:-mcypress
+2.90:-mcpu=sparclite:-msparclite
+2.90:-mcpu=strongarm110:-m6
+2.90:-mcpu=supersparc:-msupersparc
+2.90:-mcpu=v9:-mv8
+2.95:-march=k6:-march=pentium
+3.0:-march=athlon:-march=pentiumpro
+3.1:-march=athlon-4:-march=pentiumpro
+3.1:-march=athlon-mp:-march=pentiumpro
+3.1:-march=athlon-tbird:-march=pentiumpro
+3.1:-march=athlon-xp:-march=pentiumpro
+3.1:-march=k6-2:-march=k6
+3.1:-march=k6-3:-march=k6
+3.1:-march=pentium-mmx:-march=pentium
+3.1:-march=pentium2:-march=pentiumpro
+3.1:-march=pentium3 -mno-sse:-march=pentiumpro
+3.1:-march=pentium3:-march=pentiumpro
+3.1:-march=pentium4:-march=pentiumpro
+3.1:-march=r2000:-cpu=r2000
+3.1:-march=r3000:-cpu=r3000
+3.1:-march=r3900:-cpu=r3900
+3.1:-march=r4000:-cpu=r4000
+3.1:-march=r4100:-cpu=r4100
+3.1:-march=r4300:-cpu=r4300
+3.1:-march=r4400:-cpu=r4400
+3.1:-march=r4600:-cpu=r4600
+3.1:-march=r5000:-cpu=r5000
+3.1:-march=r6000:-cpu=r6000
+3.1:-march=r8000:-cpu=r8000
+3.1:-mcpu=21264a:-mcpu=21264
+3.1:-mtune=r2000:-cpu=r2000
+3.1:-mtune=r3000:-cpu=r3000
+3.1:-mtune=r3900:-cpu=r3900
+3.1:-mtune=r4000:-cpu=r4000
+3.1:-mtune=r4100:-cpu=r4100
+3.1:-mtune=r4300:-cpu=r4300
+3.1:-mtune=r4400:-cpu=r4400
+3.1:-mtune=r4600:-cpu=r4600
+3.1:-mtune=r5000:-cpu=r5000
+3.1:-mtune=r6000:-cpu=r6000
+3.1:-mtune=r8000:-cpu=r8000
+3.3:-march=c3:-march=i586
EOD
`
fi
-
echo $FLAGS
exit 0