diff options
author | abs <abs> | 2007-08-20 11:21:19 +0000 |
---|---|---|
committer | abs <abs> | 2007-08-20 11:21:19 +0000 |
commit | 7746277fa85023555e57a5b83998c989e5f15873 (patch) | |
tree | 227274361d5c651984232c210a1c078f42a31d94 /devel/cpuflags | |
parent | 8464b8afb76e2cf40dd08e226a15cec299c2098f (diff) | |
download | pkgsrc-7746277fa85023555e57a5b83998c989e5f15873.tar.gz |
Update cpuflags to 1.10:
Refactor cpuflags into a common part (cpuflags.sh), which calls the
appropriate per OS (subr_NetBSD, subr_SunOS or subr_Linux) and per
compiler (subr_gcc) portions
Diffstat (limited to 'devel/cpuflags')
-rw-r--r-- | devel/cpuflags/Makefile | 6 | ||||
-rw-r--r-- | devel/cpuflags/PLIST | 7 | ||||
-rw-r--r-- | devel/cpuflags/files/Makefile | 27 | ||||
-rwxr-xr-x | devel/cpuflags/files/cpuflags.Linux | 169 | ||||
-rwxr-xr-x | devel/cpuflags/files/cpuflags.NetBSD | 307 | ||||
-rwxr-xr-x | devel/cpuflags/files/cpuflags.sh | 85 | ||||
-rwxr-xr-x | devel/cpuflags/files/subr_Linux | 83 | ||||
-rwxr-xr-x | devel/cpuflags/files/subr_NetBSD | 222 | ||||
-rwxr-xr-x | devel/cpuflags/files/subr_SunOS | 40 | ||||
-rw-r--r--[-rwxr-xr-x] | devel/cpuflags/files/subr_gcc (renamed from devel/cpuflags/files/cpuflags.SunOS) | 92 |
10 files changed, 481 insertions, 557 deletions
diff --git a/devel/cpuflags/Makefile b/devel/cpuflags/Makefile index 2b1d2636f33..520b88c89df 100644 --- a/devel/cpuflags/Makefile +++ b/devel/cpuflags/Makefile @@ -1,7 +1,7 @@ -# $NetBSD: Makefile,v 1.112 2007/08/13 10:31:06 abs Exp $ +# $NetBSD: Makefile,v 1.113 2007/08/20 11:21:19 abs Exp $ # -DISTNAME= cpuflags-1.09 +DISTNAME= cpuflags-1.10 CATEGORIES= sysutils MASTER_SITES= # empty DISTFILES= # empty @@ -17,6 +17,6 @@ NO_CONFIGURE= yes do-extract: ${MKDIR} ${WRKSRC} - ${CP} ${FILESDIR}/Makefile ${FILESDIR}/*.* ${WRKSRC} + ${CP} ${FILESDIR}/Makefile ${FILESDIR}/[a-z]* ${WRKSRC} .include "../../mk/bsd.pkg.mk" diff --git a/devel/cpuflags/PLIST b/devel/cpuflags/PLIST index 0a1254f8cc4..b4c8f3cd633 100644 --- a/devel/cpuflags/PLIST +++ b/devel/cpuflags/PLIST @@ -1,5 +1,10 @@ -@comment $NetBSD: PLIST,v 1.2 2003/05/29 11:45:50 abs Exp $ +@comment $NetBSD: PLIST,v 1.3 2007/08/20 11:21:20 abs Exp $ bin/cpuflags man/man1/cpuflags.1 +share/cpuflags/subr_Linux +share/cpuflags/subr_NetBSD +share/cpuflags/subr_SunOS +share/cpuflags/subr_gcc share/mk/cpuflags.mk share/mk/optimize_gcc.mk +@dirrm share/cpuflags diff --git a/devel/cpuflags/files/Makefile b/devel/cpuflags/files/Makefile index b51b7eac616..318ad630244 100644 --- a/devel/cpuflags/files/Makefile +++ b/devel/cpuflags/files/Makefile @@ -1,12 +1,13 @@ -# $Id: Makefile,v 1.7 2006/02/09 13:45:04 abs Exp $ +# $Id: Makefile,v 1.8 2007/08/20 11:21:20 abs Exp $ -VERSION=0.98 +VERSION=1.10 PREFIX?=/usr/local OPSYS?=`uname` MANDIR?=${PREFIX}/man/man1 -MKDIR?=${PREFIX}/share/mk +SUBRDIR?=${PREFIX}/share/cpuflags +SHAREMKDIR?=${PREFIX}/share/mk BINDIR?=${PREFIX}/bin INSTALL?=install SED?=sed @@ -14,19 +15,21 @@ SED?=sed all: ${SED} -e 's|@PREFIX@|${PREFIX}|g' cpuflags.1 > cpuflags.1.out ${SED} -e 's|@PREFIX@|${PREFIX}|g' cpuflags.mk > cpuflags.mk.out + ${SED} -e 's|@PREFIX@|${PREFIX}|g' cpuflags.sh > cpuflags.sh.out clean: - rm -rf *.out out + rm -rf *.out DIST install: - mkdir -p ${BINDIR} ${MANDIR} ${MKDIR} - ${INSTALL} cpuflags.${OPSYS} ${BINDIR}/cpuflags + mkdir -p ${BINDIR} ${MANDIR} ${SHAREMKDIR} ${SUBRDIR} + ${INSTALL} cpuflags.sh.out ${BINDIR}/cpuflags ${INSTALL} cpuflags.1.out ${MANDIR}/cpuflags.1 - ${INSTALL} optimize_gcc.mk ${MKDIR}/optimize_gcc.mk - ${INSTALL} cpuflags.mk.out ${MKDIR}/cpuflags.mk + ${INSTALL} optimize_gcc.mk ${SHAREMKDIR}/optimize_gcc.mk + ${INSTALL} cpuflags.mk.out ${SHAREMKDIR}/cpuflags.mk + ${INSTALL} subr_* ${SUBRDIR} dist: - mkdir -p out/cpuflags-${VERSION} - cp Makefile *.* out/cpuflags-${VERSION} - (cd out;pax -w cpuflags-${VERSION} | bzip2 -9 > cpuflags-${VERSION}.tbz) - rm -rf out/cpuflags-${VERSION} + mkdir -p DIST/cpuflags-${VERSION} + cp Makefile [a-z]* DIST/cpuflags-${VERSION} + (cd DIST;pax -w cpuflags-${VERSION}|bzip2 -9 > cpuflags-${VERSION}.tbz) + rm -rf DIST/cpuflags-${VERSION} diff --git a/devel/cpuflags/files/cpuflags.Linux b/devel/cpuflags/files/cpuflags.Linux deleted file mode 100755 index ba97a681849..00000000000 --- a/devel/cpuflags/files/cpuflags.Linux +++ /dev/null @@ -1,169 +0,0 @@ -#!/bin/sh -# $NetBSD: cpuflags.Linux,v 1.22 2007/03/21 15:05:08 abs Exp $ -PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH - -AWK=awk - -display_hw_details() - { - echo " OS : '$(uname)'" - echo " proc model : '$hw_model'" - echo " machine_arch : '$hw_machine_arch'" - echo " proc flags : '$hw_flags'" - } - -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;exit}' /proc/cpuinfo) - hw_flags=$($AWK -F: '/^flags/{sub(" ","",$2);print $2;exit}' /proc/cpuinfo) -fi - -case $hw_machine_arch in - parisc) case $hw_model in - "Mirage 100+") FLAGS='-march=1.1' ;; - esac ;; - i386) FLAGS='-march=i386' ;; - i486) FLAGS='-march=i486' ;; - i686) case $hw_model in - "AMD Athlon(TM) XP "*) FLAGS='-march=athlon-xp' ;; - "AMD Athlon(tm) XP "*) FLAGS='-march=athlon-xp' ;; - "AMD Duron(TM)") FLAGS='-march=athlon' ;; - "AMD Duron(tm) ") FLAGS='-march=athlon' ;; - "Pentium II (Deschutes)") FLAGS='-march=pentium2' ;; - "Celeron (Coppermine)") FLAGS='-march=pentium3' ;; - "Intel(R) Pentium(R) 4 CPU "*) FLAGS='-march=pentium4' ;; - "Intel(R) Pentium(R) III Mobile CPU"*) FLAGS='-march=pentium3m' ;; - "Intel(R) Pentium(R) M processor"*) FLAGS='-march=pentium3m' ;; - "Mobile Intel(R) Pentium(R) 4 - M "*) FLAGS='-march=pentium4m' ;; - "Pentium III (Coppermine)") FLAGS='-march=pentium3' ;; - "Pentium III (Katmai)") FLAGS='-march=pentium3' ;; - "AMD Athlon(tm) 64"*) FLAGS='-march=athlon-xp' ;; - "AMD Opteron(tm) Processor "*) FLAGS='-march=opteron' ;; - "Intel(R) Celeron(R) CPU "* | "Intel(R) Xeon(TM) CPU "*) - case "$hw_flags" in - *" sse2 "*) - FLAGS='-march=pentium4' ;; - esac - - esac ;; - -esac - -############ -# Everything from this point common between all cpuflags variants. - -if [ "$1" = -v ] ; then - shift - opt_v=1 -fi -if [ -n "$1" ]; then - CC=$1 -else - CC=gcc -fi - -if [ -n "$opt_v" ] ; then - if [ -n "$FLAGS" ]; then - echo "CPUFLAGS=$FLAGS" - elif [ -z "$NONE" ] ; then - echo "CPUFLAGS=Unknown" - else - echo "CPUFLAGS=None" - fi - display_hw_details - exit -fi -if [ -z "$FLAGS" -a -z "$NONE" ] ; then - echo 'Unknown machine - please send details to abs@absd.org' >&2 - display_hw_details >&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=`${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:-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=athlon -3.1:-march=athlon-mp:-march=athlon -3.1:-march=athlon-tbird:-march=athlon -3.1:-march=athlon-xp:-march=athlon -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:-mcpu=7400:-mcpu=750 -3.1:-mcpu=7450:-mcpu=750 -3.1:-mfpmath=sse: -3.1:-msse2: -3.1:-msse: -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 -3.3:-march=winchip-c6:-march=i586 -3.3:-march=winchip2:-march=i586 -3.4:-march=athlon-fx:-march=athlon-xp -3.4:-march=athlon64:-march=athlon-xp -3.4:-march=c3-2:-march=c3 -3.4:-march=k8:-march=athlon-xp -3.4:-march=nocona:-march=pentium4 -3.4:-march=opteron:-march=athlon-xp -3.4:-march=pentium-m:-march=pentium3 -3.4:-march=pentium3m:-march=pentium3 -3.4:-march=pentium4m:-march=pentium4 -3.4:-march=prescott:-march=pentium4 -EOD -` -fi - -echo $FLAGS - -exit 0 diff --git a/devel/cpuflags/files/cpuflags.NetBSD b/devel/cpuflags/files/cpuflags.NetBSD deleted file mode 100755 index 1a6e45013f9..00000000000 --- a/devel/cpuflags/files/cpuflags.NetBSD +++ /dev/null @@ -1,307 +0,0 @@ -#!/bin/sh -# $NetBSD: cpuflags.NetBSD,v 1.69 2007/04/24 22:44:20 abs Exp $ -PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH - -AWK=awk - -display_hw_details() - { - echo " OS : '$(uname)'" - echo " hw.model : '$hw_model'" - echo " hw.machine : '$hw_machine'" - echo " hw.machine_arch : '$hw_machine_arch'" - echo " cpu details :" - sed -n -e 's/^/ /' -e '/^ cpu/p' /var/run/dmesg.boot - } - -hw_model=$(sysctl -n hw.model) -hw_machine=$(sysctl -n hw.machine) -hw_machine_arch=$(sysctl -n hw.machine_arch) - -# We're almost certainly crosscompiling -if [ -n "$MACHINE" -a $hw_machine != "$MACHINE" ]; then - echo - exit -fi - -# When adding $hw_model tests use maximum context (such as trailing space) -case $hw_machine_arch in - - alpha) - # cpu0 at mainbus0: ID 0 (primary), 21164A-0 (unknown ... - case "$(egrep '^cpu0 ' /var/run/dmesg.boot)" in - *[\(\ ]2106[46][-A\ \)]*) FLAGS="-mcpu=21064" ;; - *[\(\ ]21164[-\ \)]*) FLAGS="-mcpu=21164" ;; - *[\(\ ]21164A[-\ \)]*) FLAGS="-mcpu=21164a" ;; - *[\(\ ]21264[-\ \)]*) FLAGS="-mcpu=21264" ;; - *[\(\ ]21264[AB][-\ \)]*) FLAGS="-mcpu=21264a" ;; - *\ PCA56-2) FLAGS="-mcpu=21164pc" ;; - esac - ;; - - arm | arm32) case $hw_model in - ARM610*) FLAGS="-mcpu=arm610" ;; # risc pc - ARM710*) FLAGS="-mcpu=arm710" ;; # risc pc - i80321\ *) FLAGS="-mcpu=xscale" ;; # iyonix - SA-110*) - case $hw_machine in # arm32 split post 1.5 - cats|shark|hpcarm|netwinder) - FLAGS="-mcpu=strongarm110" ;; - acorn32) - FLAGS="-march=armv3m -mtune=strongarm" ;; - *) - # memorybus in strongarm risc pc machines cannot support - # certain strongarm instructions, but in 1.5 and earlier - # all strongarm machines are 'arm32', so uname and sysctl - # no use - if egrep -q 'ofbus0|footbridge0' /var/run/dmesg.boot \ - 2>/dev/null ; then - FLAGS="-mcpu=strongarm110" # shark/cats - else - FLAGS="-march=armv3m -mtune=strongarm" # risc pc - fi - esac ;; - esac ;; - - hppa) - case "$(egrep '^cpu0 ' /var/run/dmesg.boot)" in - *\ PA7100\ *) FLAGS="-march=1.1 -mschedule=7100" ;; # untested - *\ PA7150\ *) FLAGS="-march=1.1 -mschedule=7100" ;; # untested - *\ PA7100LC\ *) FLAGS="-march=1.1 -mschedule=7100LC" ;; # untested - *\ PA7200\ *) FLAGS="-march=1.1 -mschedule=7200" ;; # untested - *\ PA7300LC\ *) FLAGS="-march=1.1 -mschedule=7300" ;; # B180L - *\ PA8*) FLAGS="-march=2.0 -mschedule=8000" ;; # untested - esac - ;; - - i386 | x86_64) - case $hw_model in - *Intel\ Pentium/MMX\ *) FLAGS='-march=pentium-mmx' ;; - *Intel\ Pentium\ II\ *) FLAGS='-march=pentium2' ;; - *Intel\ Pentium\ III\ *) FLAGS='-march=pentium3' ;; - *Intel\ Mobile\ Pentium\ III\ *) FLAGS='-march=pentium3' ;; - *Intel\ Celeron\ \(Mendocino\)\ *) FLAGS='-march=pentium3 -mno-sse' ;; - *Intel\ Pentium\ M\ \(\Dothan\)\ *) FLAGS='-march=pentium-m' ;; - *Intel\ Pentium\ M\ *) FLAGS='-march=pentium-m' ;; - *Intel\ Mobile\ Pentium\ 4\ *) FLAGS='-march=pentium4m' ;; - *Intel\ Pentium\ 4\ *) FLAGS='-march=pentium4' ;; - *Intel\(R\)\ Pentium\(R\)\ D*) FLAGS='-march=nocona' ;; - *VIA\ C3*\ *) FLAGS='-march=c3' ;; - *AMD\ K6-III*) FLAGS='-march=k6-3' ;; - *AMD\ K6-2*) FLAGS='-march=k6-2' ;; - *AMD\ K6*) FLAGS='-march=k6' ;; - *AMD\ Duron*) FLAGS='-march=athlon' ;; - *AMD\ Athlon\ 4*) FLAGS='-march=athlon-4' ;; - *AMD\ Athlon\ Model\ 4\ \(Thunderbird\)*) FLAGS='-march=athlon-tbird';; - *AMD\ Athlon\ MP*) FLAGS='-march=athlon-mp' ;; - *AMD\ K7\ \(Athlon\)\ XP\ *) FLAGS='-march=athlon-xp' ;; - *AMD\ Athlon\ XP\ *) FLAGS='-march=athlon-xp' ;; - *AMD\ K7*|*AMD\ Athlon*) FLAGS='-march=athlon' ;; - *AMD\ Unknown\ K7\ \(Athlon\)*) FLAGS='-march=athlon' ;; - *AMD\ Opteron\(tm\)\ Processor*) FLAGS='-march=opteron' ;; - *AMD\ Turion\(tm\)\ 64\ Mobile*) FLAGS='-march=athlon64' ;; - *386-class*) FLAGS='-march=i386' ;; - *486-class*) FLAGS='-march=i486' ;; - *586-class*) FLAGS='-march=pentium' ;; - *686-class*) FLAGS='-march=pentiumpro' ;; - esac - if [ -n "$FLAGS" -a "$hw_machine_arch" = i386 ] ; then - if [ "$(sysctl -n machdep.sse2)" = 1 ] ; then - FLAGS="$FLAGS -mfpmath=sse -msse2" - elif [ "$(sysctl -n machdep.sse)" = 1 ] ; then - FLAGS="$FLAGS -mfpmath=sse -msse" - fi - fi - ;; - - m68k) case $hw_model in # Examples - *\(68020*|*\ MC68020\ *) FLAGS='-m68020' ;; # Untested - *\(68030*|*\ MC68030\ *) FLAGS='-m68030' ;; # Mac LC III - *\(68040*|*\ MC68040\ *) FLAGS='-m68040' ;; # Untested - *\(68060*|*\ MC68060\ *) FLAGS='-m68060' ;; # Upgr amiga 3000 - esac - case "$(egrep '^fpu0 ' /var/run/dmesg.boot)" in - *\(emulator\)*) FLAGS="$FLAGS -msoft-float" ;; - *\(no\ math\ support\)*) FLAGS="$FLAGS -msoft-float" ;; - esac - ;; - - mipseb|mipsel) - # cpu0 at mainbus0: QED R4600 Orion CPU (0x2020) Rev. 2.0 with ... - case $hw_model in - Infineon\ ADM5120) FLAGS='-march=4kc' ;; - *) - case "$(egrep '^cpu0 ' /var/run/dmesg.boot)" in - *\ MIPS\ R2000\ *) FLAGS="-march=r2000" ;; - *\ MIPS\ R3000\ *) FLAGS="-march=r3000" ;; - *\ MIPS\ R3000A\ *) FLAGS="-march=r3000" ;; - *\ Toshiba\ TX3912\ *) FLAGS="-march=r3900" ;; - *\ Toshiba\ TX392[27]\ *) FLAGS="-march=r3900" ;; - *\ MIPS\ R4000\ *) FLAGS="-mtune=r4000 -mips2" ;; # mips3 - *\ MIPS\ R4400\ *) FLAGS="-mtune=r4400 -mips2" ;; # mips3 - *\ NEC\ VR4100\ *) FLAGS="-mtune=r4100 -mips2" ;; # mips3 - *\ NEC\ VR4300\ *) FLAGS="-mtune=r4300 -mips2" ;; # mips3 - *\ QED\ R4600\ *) FLAGS="-mtune=r4600 -mips2" ;; # mips3 - *\ MIPS\ R5000\ *) FLAGS="-mtune=r5000 -mips2" ;; # mips4 - *\ QED\ RM5200\ *) FLAGS="-mtune=r5000 -mips2" ;; # mips4 - *\ MIPS\ R6000\ *) FLAGS="-mtune=r6000 -mips2" ;; - *\ MIPS\ R8000\ *) FLAGS="-mtune=r8000 -mips2" ;; # mips4 - esac ;; - esac - ;; - - powerpc) case $hw_model in # Examples - 601\ *) FLAGS='-mcpu=601' ;; # Untested - 602\ *) FLAGS='-mcpu=602' ;; # Untested - 603\ *) FLAGS='-mcpu=603' ;; # Untested - 603e\ *|603ev\ *) FLAGS='-mcpu=603e' ;; # Umax C500 / PM4400 - 604\ *) FLAGS='-mcpu=604' ;; # Mac 8500 - 604e\ *) FLAGS='-mcpu=604e' ;; # upgr B&W G3 - 604ev\ *) FLAGS='-mcpu=604e' ;; # usually 604e - 620\ *) FLAGS='-mcpu=620' ;; # Untested - 7400\ *) FLAGS='-mcpu=7400' ;; # AGP G4/400 Mac - 740\ *) FLAGS='-mcpu=740' ;; # Untested - 7410\ *) FLAGS='-mcpu=7400' ;; # powerbook g4 - 7447A\ *) FLAGS='-mcpu=7450' ;; # - 7450\ *) FLAGS='-mcpu=7450' ;; # tibook 550 - 750\ *) FLAGS='-mcpu=750' ;; # orig. iBook - - esac ;; - - sparc | sparc64) case " $hw_model" in # Examples - *[\ \(]MB86900/1A*) FLAGS='-mcpu=cypress' ;; # ss1+ - *[\ \(]L64811*) FLAGS='-mcpu=cypress' ;; # sun4/sun4c - *[\ \(]CY7C601*) FLAGS='-mcpu=cypress' ;; # ss2 - *[\ \(]W8601/8701*) FLAGS='-mcpu=cypress' ;; # elc - *[\ \(]MB86904*) FLAGS='-mcpu=supersparc' ;; # ss5 usparc - *[\ \(]MB86907*) FLAGS='-mcpu=supersparc' ;; # ss5 usparc - *[\ \(]TMS390S10*) FLAGS='-mcpu=supersparc' ;; # classic " - *[\ \(]TMS390Z50*) FLAGS='-mcpu=supersparc' ;; # ss10/ss20 - *[\ \(]RT620/625*) FLAGS='-mcpu=hypersparc' ;; # ss20 ross - *[\ \(]MB86930*) FLAGS='-mcpu=sparclite' ;; # from gcc - *[\ \(]MB86934*) FLAGS='-mcpu=sparclite' ;; # from gcc - # under 1.5.1 -mcpu=ultrasparc chokes egcs-2.91.66 compiling perl - *[\ \(]SUNW,UltraSPARC*) FLAGS='-mcpu=v9' ;; # Ultra - esac ;; - - vax) # No VAX specific gcc optimisations available - NONE=1 - ;; - -esac - -############ -# Everything from this point common between all cpuflags variants. - -if [ "$1" = -v ] ; then - shift - opt_v=1 -fi -if [ -n "$1" ]; then - CC=$1 -else - CC=gcc -fi - -if [ -n "$opt_v" ] ; then - if [ -n "$FLAGS" ]; then - echo "CPUFLAGS=$FLAGS" - elif [ -z "$NONE" ] ; then - echo "CPUFLAGS=Unknown" - else - echo "CPUFLAGS=None" - fi - display_hw_details - exit -fi -if [ -z "$FLAGS" -a -z "$NONE" ] ; then - echo 'Unknown machine - please send details to abs@absd.org' >&2 - display_hw_details >&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=`${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:-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=athlon -3.1:-march=athlon-mp:-march=athlon -3.1:-march=athlon-tbird:-march=athlon -3.1:-march=athlon-xp:-march=athlon -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:-mcpu=7400:-mcpu=750 -3.1:-mcpu=7450:-mcpu=750 -3.1:-mfpmath=sse: -3.1:-msse2: -3.1:-msse: -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 -3.3:-march=winchip-c6:-march=i586 -3.3:-march=winchip2:-march=i586 -3.4:-march=athlon-fx:-march=athlon-xp -3.4:-march=athlon64:-march=athlon-xp -3.4:-march=c3-2:-march=c3 -3.4:-march=k8:-march=athlon-xp -3.4:-march=nocona:-march=pentium4 -3.4:-march=opteron:-march=athlon-xp -3.4:-march=pentium-m:-march=pentium3 -3.4:-march=pentium3m:-march=pentium3 -3.4:-march=pentium4m:-march=pentium4 -3.4:-march=prescott:-march=pentium4 -EOD -` -fi - -echo $FLAGS - -exit 0 diff --git a/devel/cpuflags/files/cpuflags.sh b/devel/cpuflags/files/cpuflags.sh new file mode 100755 index 00000000000..02fa429c5ea --- /dev/null +++ b/devel/cpuflags/files/cpuflags.sh @@ -0,0 +1,85 @@ +#!/bin/sh +# $NetBSD: cpuflags.sh,v 1.1 2007/08/20 11:21:21 abs Exp $ +PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH + +include() + { + file=$1 + if [ -f ./$file ] ; then + file=./$file + else + file=@PREFIX@/share/cpuflags/$file + fi + verbose . $file + . $file + } + +verbose() + { + [ -n "$opt_v" ] && echo $* >&2 + } + +UNAME=$(uname) + +if [ "$1" = -v ] ; then + shift + opt_v=1 +fi + +if [ -n "$1" ]; then + CC=$1 +else + CC=gcc +fi + +# Each UNAME subr_ file is expected to set AWK & SED, and to provide the +# following methods: +# extract_hw_details: Must be called before determine_arch/determine_features +# determine_arch: Returns cpu arch +# determine_features: Returns cpu features +# display_hw_details: Human readable output for current machine +# +include subr_${UNAME} + +# This provides gcc_ser(), gcc_ver() and gcc_fixup_arch_flags() +# +include subr_gcc + +# Determine the flags for this OS/machine +extract_hw_details +if [ $(gcc_ser $CC) -gt 4002 ] ; then + ARCH='-march=native' +else + ARCH=$(determine_arch) +fi +FEATURES=$(determine_features) + +# Fixup any flags which are too new for our gcc version +# +CPUFLAGS="$(gcc_fixup_arch_flags $CC $ARCH $FEATURES)" +CPUFLAGS="$(echo $CPUFLAGS)" + +if [ -n "$opt_v" ] ; then + if [ -n "$NOARCH" ] ; then + ARCH="No flags for this architecture" + fi + if [ -z "$ARCH" ]; then + ARCH=Unknown + fi + cat <<END +ARCH : $ARCH +FEATURES : $FEATURES +CPUFLAGS : $CPUFLAGS +GCC version : $(gcc_ver $CC) +END + display_hw_details + exit; +fi + +if [ -z "$ARCH" -a -z "$NOARCH" ] ; then + echo 'Unknown machine - please send details to abs@absd.org' >&2 + display_hw_details >&2 +fi + +echo $CPUFLAGS +exit 0 diff --git a/devel/cpuflags/files/subr_Linux b/devel/cpuflags/files/subr_Linux new file mode 100755 index 00000000000..c2e5520a20f --- /dev/null +++ b/devel/cpuflags/files/subr_Linux @@ -0,0 +1,83 @@ +# $NetBSD: subr_Linux,v 1.1 2007/08/20 11:21:21 abs Exp $ + +AWK=awk +SED=sed + +display_hw_details() + { + cat <<END +OS : '$(uname)' +proc model : '$hw_model' +machine_arch : '$hw_machine_arch' +proc flag : '$feat_flags' +END + } + +extract_hw_details() + { + 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;exit}' /proc/cpuinfo) + feat_flags=$($AWK -F: '/^flags/{sub(" ","",$2);print $2;exit}' /proc/cpuinfo) + fi + } + +determine_arch() + { + ARCH= + case $hw_machine_arch in + parisc) case $hw_model in + "Mirage 100+") ARCH='-march=1.1' ;; + esac ;; + i386) ARCH='-march=i386' ;; + i486) ARCH='-march=i486' ;; + i586) ARCH='-march=pentium' ;; + i686) case $hw_model in + "AMD Athlon(TM) XP "*) ARCH='-march=athlon-xp' ;; + "AMD Athlon(tm) XP"*) ARCH='-march=athlon-xp' ;; + "AMD Duron(TM)") ARCH='-march=athlon' ;; + "AMD Duron(tm) ") ARCH='-march=athlon' ;; + "Pentium II (Deschutes)") ARCH='-march=pentium2' ;; + "Celeron (Coppermine)") ARCH='-march=pentium3' ;; + "Intel(R) Pentium(R) 4 CPU "*) ARCH='-march=pentium4' ;; + "Intel(R) Pentium(R) III Mobile CPU"*) ARCH='-march=pentium3m' ;; + "Intel(R) Pentium(R) M processor"*) ARCH='-march=pentium3m' ;; + "Mobile Intel(R) Pentium(R) 4 - M "*) ARCH='-march=pentium4m' ;; + "Pentium III (Coppermine)") ARCH='-march=pentium3' ;; + "Pentium III (Katmai)") ARCH='-march=pentium3' ;; + "AMD Athlon(tm) 64"*) ARCH='-march=athlon-xp' ;; + "AMD Opteron(tm) Processor "*) ARCH='-march=opteron' ;; + "Intel(R) Celeron(R) CPU "* | "Intel(R) Xeon(TM) CPU "*) + case "$feat_flags" in + *" sse2 "*) + ARCH='-march=pentium4' ;; + esac;; + "AMD Sempron(tm) Processor "*) ARCH='-march=athlon-xp' ;; + "Intel(R) Core(TM)2 CPU "*) ARCH='-march=prescott' ;; + esac ;; + x86_64) case $hw_model in + "AMD Sempron(tm) Processor "*) ARCH='-march=athlon64' ;; + "AMD Athlon(tm) 64"*) ARCH='-march=athlon64' ;; + "Intel(R) Core(TM)2 CPU "*) ARCH='-march=nocona' ;; + esac ;; + esac + echo $ARCH + } + +determine_features() + { + FEATURES= + case $hw_machine_arch in + i586|i686|x86_64) + case " $feat_flags " in + *" ssse3 "*) FEATURES='-mfpmath=sse -msse3' ;; + *" sse2 "*) FEATURES='-mfpmath=sse -msse2' ;; + *" sse "*) FEATURES='-mfpmath=sse -msse' ;; + *" mmx "*) FEATURES='-mmmx' ;; + esac ;; + esac + echo $FEATURES + } diff --git a/devel/cpuflags/files/subr_NetBSD b/devel/cpuflags/files/subr_NetBSD new file mode 100755 index 00000000000..43132d55ce9 --- /dev/null +++ b/devel/cpuflags/files/subr_NetBSD @@ -0,0 +1,222 @@ +# $NetBSD: subr_NetBSD,v 1.1 2007/08/20 11:21:21 abs Exp $ + +AWK=awk +SED=sed + +display_hw_details() + { + cat <<END +OS : '$(uname)' +hw.model : '$hw_model' +hw.machine : '$hw_machine' +hw.machine_arch : '$hw_machine_arch' +cpu details : +END + sed -n -e 's/^/ /' -e '/^ cpu/p' /var/run/dmesg.boot + } + +extract_hw_details() + { + hw_model=$(sysctl -n hw.model) + hw_machine=$(sysctl -n hw.machine) + hw_machine_arch=$(sysctl -n hw.machine_arch) + + # We're almost certainly crosscompiling + if [ -n "$MACHINE" -a $hw_machine != "$MACHINE" ]; then + echo + exit + fi + } + +determine_arch() + { + ARCH= + # When adding $hw_model tests use maximum context (such as trailing space) + case $hw_machine_arch in + + alpha) + # cpu0 at mainbus0: ID 0 (primary), 21164A-0 (unknown ... + case "$(egrep '^cpu0 ' /var/run/dmesg.boot)" in + *[\(\ ]2106[46][-A\ \)]*) ARCH="-mcpu=21064" ;; + *[\(\ ]21164[-\ \)]*) ARCH="-mcpu=21164" ;; + *[\(\ ]21164A[-\ \)]*) ARCH="-mcpu=21164a" ;; + *[\(\ ]21264[-\ \)]*) ARCH="-mcpu=21264" ;; + *[\(\ ]21264[AB][-\ \)]*) ARCH="-mcpu=21264a" ;; + *\ PCA56-2) ARCH="-mcpu=21164pc" ;; + esac + ;; + + arm | arm32) case $hw_model in + ARM610*) ARCH="-mcpu=arm610" ;; # risc pc + ARM710*) ARCH="-mcpu=arm710" ;; # risc pc + i80321\ *) ARCH="-mcpu=xscale" ;; # iyonix + SA-110*) + case $hw_machine in # arm32 split post 1.5 + cats|shark|hpcarm|netwinder) + ARCH="-mcpu=strongarm110" ;; + acorn32) + ARCH="-march=armv3m -mtune=strongarm" ;; + *) + # memorybus in strongarm risc pc machines cannot support + # certain strongarm instructions, but in 1.5 and earlier + # all strongarm machines are 'arm32', so uname and sysctl + # no use + if egrep -q 'ofbus0|footbridge0' /var/run/dmesg.boot \ + 2>/dev/null ; then + ARCH="-mcpu=strongarm110" # shark/cats + else + ARCH="-march=armv3m -mtune=strongarm" # risc pc + fi + esac ;; + esac ;; + + hppa) + case "$(egrep '^cpu0 ' /var/run/dmesg.boot)" in + *\ PA7100\ *) ARCH="-march=1.1 -mschedule=7100" ;; # untested + *\ PA7150\ *) ARCH="-march=1.1 -mschedule=7100" ;; # untested + *\ PA7100LC\ *) ARCH="-march=1.1 -mschedule=7100LC" ;; # untested + *\ PA7200\ *) ARCH="-march=1.1 -mschedule=7200" ;; # untested + *\ PA7300LC\ *) ARCH="-march=1.1 -mschedule=7300" ;; # B180L + *\ PA8*) ARCH="-march=2.0 -mschedule=8000" ;; # untested + esac + ;; + + i386 | x86_64) + case $hw_model in + *Intel\ Pentium/MMX\ *) ARCH='-march=pentium-mmx' ;; + *Intel\ Pentium\ II\ *) ARCH='-march=pentium2' ;; + *Intel\ Pentium\ III\ *) ARCH='-march=pentium3' ;; + *Intel\ Mobile\ Pentium\ III\ *) ARCH='-march=pentium3' ;; + *Intel\ Celeron\ \(Mendocino\)\ *) ARCH='-march=pentium3 -mno-sse' ;; + *Intel\ Pentium\ M\ \(\Dothan\)\ *) ARCH='-march=pentium-m' ;; + *Intel\ Pentium\ M\ *) ARCH='-march=pentium-m' ;; + *Intel\ Mobile\ Pentium\ 4\ *) ARCH='-march=pentium4m' ;; + *Intel\ Pentium\ 4\ *) ARCH='-march=pentium4' ;; + *Intel\(R\)\ Pentium\(R\)\ D*) ARCH='-march=nocona' ;; + *VIA\ C3*\ *) ARCH='-march=c3' ;; + *AMD\ K6-III*) ARCH='-march=k6-3' ;; + *AMD\ K6-2*) ARCH='-march=k6-2' ;; + *AMD\ K6*) ARCH='-march=k6' ;; + *AMD\ Duron*) ARCH='-march=athlon' ;; + *AMD\ Athlon\ 4*) ARCH='-march=athlon-4' ;; + *AMD\ Athlon\ Model\ 4\ \(Thunderbird\)*) ARCH='-march=athlon-tbird';; + *AMD\ Athlon\ MP*) ARCH='-march=athlon-mp' ;; + *AMD\ K7\ \(Athlon\)\ XP\ *) ARCH='-march=athlon-xp' ;; + *AMD\ Athlon\ XP\ *) ARCH='-march=athlon-xp' ;; + *AMD\ K7*|*AMD\ Athlon*) ARCH='-march=athlon' ;; + *AMD\ Unknown\ K7\ \(Athlon\)*) ARCH='-march=athlon' ;; + *AMD\ Opteron\(tm\)\ Processor*) ARCH='-march=opteron' ;; + *AMD\ Turion\(tm\)\ 64\ Mobile*) ARCH='-march=athlon64' ;; + *386-class*) ARCH='-march=i386' ;; + *486-class*) ARCH='-march=i486' ;; + *586-class*) ARCH='-march=pentium' ;; + *686-class*) ARCH='-march=pentiumpro' ;; + esac + if [ -n "$ARCH" -a "$hw_machine_arch" = i386 ] ; then + if [ "$(sysctl -n machdep.sse2)" = 1 ] ; then + case $hw_model in + *Intel\ Celeron\ *) + ARCH='-march=pentium4' ;; + esac + fi + fi + ;; + + m68k) case $hw_model in # Examples + *\(68020*|*\ MC68020\ *) ARCH='-m68020' ;; # Untested + *\(68030*|*\ MC68030\ *) ARCH='-m68030' ;; # Mac LC III + *\(68040*|*\ MC68040\ *) ARCH='-m68040' ;; # Untested + *\(68060*|*\ MC68060\ *) ARCH='-m68060' ;; # Upgr amiga 3000 + esac + case "$(egrep '^fpu0 ' /var/run/dmesg.boot)" in + *\(emulator\)*) FEATURES="-msoft-float" ;; + *\(no\ math\ support\)*) FEATURES="-msoft-float" ;; + esac + ;; + + mipseb|mipsel) + # cpu0 at mainbus0: QED R4600 Orion CPU (0x2020) Rev. 2.0 with ... + case $hw_model in + Infineon\ ADM5120) ARCH='-march=4kc' ;; + *) + case "$(egrep '^cpu0 ' /var/run/dmesg.boot)" in + *\ MIPS\ R2000\ *) ARCH="-march=r2000" ;; + *\ MIPS\ R3000\ *) ARCH="-march=r3000" ;; + *\ MIPS\ R3000A\ *) ARCH="-march=r3000" ;; + *\ Toshiba\ TX3912\ *) ARCH="-march=r3900" ;; + *\ Toshiba\ TX392[27]\ *) ARCH="-march=r3900" ;; + *\ MIPS\ R4000\ *) ARCH="-mtune=r4000 -mips2" ;; # mips3 + *\ MIPS\ R4400\ *) ARCH="-mtune=r4400 -mips2" ;; # mips3 + *\ NEC\ VR4100\ *) ARCH="-mtune=r4100 -mips2" ;; # mips3 + *\ NEC\ VR4300\ *) ARCH="-mtune=r4300 -mips2" ;; # mips3 + *\ QED\ R4600\ *) ARCH="-mtune=r4600 -mips2" ;; # mips3 + *\ MIPS\ R5000\ *) ARCH="-mtune=r5000 -mips2" ;; # mips4 + *\ QED\ RM5200\ *) ARCH="-mtune=r5000 -mips2" ;; # mips4 + *\ MIPS\ R6000\ *) ARCH="-mtune=r6000 -mips2" ;; + *\ MIPS\ R8000\ *) ARCH="-mtune=r8000 -mips2" ;; # mips4 + esac ;; + esac + ;; + + powerpc) case $hw_model in # Examples + 601\ *) ARCH='-mcpu=601' ;; # Untested + 602\ *) ARCH='-mcpu=602' ;; # Untested + 603\ *) ARCH='-mcpu=603' ;; # Untested + 603e\ *|603ev\ *) ARCH='-mcpu=603e' ;; # Umax C500 / PM4400 + 604\ *) ARCH='-mcpu=604' ;; # Mac 8500 + 604e\ *) ARCH='-mcpu=604e' ;; # upgr B&W G3 + 604ev\ *) ARCH='-mcpu=604e' ;; # usually 604e + 620\ *) ARCH='-mcpu=620' ;; # Untested + 7400\ *) ARCH='-mcpu=7400' ;; # AGP G4/400 Mac + 740\ *) ARCH='-mcpu=740' ;; # Untested + 7410\ *) ARCH='-mcpu=7400' ;; # powerbook g4 + 7447A\ *) ARCH='-mcpu=7450' ;; # + 7450\ *) ARCH='-mcpu=7450' ;; # tibook 550 + 750\ *) ARCH='-mcpu=750' ;; # orig. iBook + + esac ;; + + sparc | sparc64) case " $hw_model" in # Examples + *[\ \(]MB86900/1A*) ARCH='-mcpu=cypress' ;; # ss1+ + *[\ \(]L64811*) ARCH='-mcpu=cypress' ;; # sun4/sun4c + *[\ \(]CY7C601*) ARCH='-mcpu=cypress' ;; # ss2 + *[\ \(]W8601/8701*) ARCH='-mcpu=cypress' ;; # elc + *[\ \(]MB86904*) ARCH='-mcpu=supersparc' ;; # ss5 usparc + *[\ \(]MB86907*) ARCH='-mcpu=supersparc' ;; # ss5 usparc + *[\ \(]TMS390S10*) ARCH='-mcpu=supersparc' ;; # classic " + *[\ \(]TMS390Z50*) ARCH='-mcpu=supersparc' ;; # ss10/ss20 + *[\ \(]RT620/625*) ARCH='-mcpu=hypersparc' ;; # ss20 ross + *[\ \(]MB86930*) ARCH='-mcpu=sparclite' ;; # from gcc + *[\ \(]MB86934*) ARCH='-mcpu=sparclite' ;; # from gcc + # under 1.5.1 -mcpu=ultrasparc chokes egcs-2.91.66 compiling perl + *[\ \(]SUNW,UltraSPARC*) ARCH='-mcpu=v9' ;; # Ultra + esac ;; + + vax) # No VAX specific gcc optimisations available + NOARCH=1 + ;; + + esac + echo $ARCH + } + +determine_features() + { + FEATURES= + case $hw_machine_arch in + i386 | x86_64) + if [ "$(sysctl -n machdep.sse2)" = 1 ] ; then + FEATURES="-mfpmath=sse -msse2" + elif [ "$(sysctl -n machdep.sse)" = 1 ] ; then + FEATURES="-mfpmath=sse -msse" + fi + ;; + m68k) + case "$(egrep '^fpu0 ' /var/run/dmesg.boot)" in + *\(emulator\)*) FEATURES="-msoft-float" ;; + *\(no\ math\ support\)*) FEATURES="-msoft-float" ;; + esac + ;; + esac + echo $FEATURES + } diff --git a/devel/cpuflags/files/subr_SunOS b/devel/cpuflags/files/subr_SunOS new file mode 100755 index 00000000000..07beabd10a3 --- /dev/null +++ b/devel/cpuflags/files/subr_SunOS @@ -0,0 +1,40 @@ +# $NetBSD: subr_SunOS,v 1.1 2007/08/20 11:21:21 abs Exp $ + +AWK=nawk +SED=sed + +display_hw_details() + { + cat <<END +OS : '`uname`' +arch : '$hw_arch' +psrinfo : '$hw_psrinfo' +END + } + +extract_hw_details() + { + hw_arch=`/usr/bin/uname -m` + hw_psrinfo=`psrinfo -v | $AWK 'NR==3{print}'` # Just gets the first CPU + } + +determine_arch() + { + ARCH= + case $hw_arch in + sun4c | sun4 ) ARCH='-mcpu=cypress' ;; + sun4m ) ARCH='-mcpu=supersparc' ;; + sun4u ) ARCH='-mcpu=v9' ;; + i86pc ) + case "$hw_psrinfo" in + *AMD\ Opteron\(tm\)*) ARCH="-mcpu=opteron" ;; + esac + ;; + esac + echo $ARCH + } + +determine_features() + { + echo + } diff --git a/devel/cpuflags/files/cpuflags.SunOS b/devel/cpuflags/files/subr_gcc index e8dca9e6bf1..20b8b7cf636 100755..100644 --- a/devel/cpuflags/files/cpuflags.SunOS +++ b/devel/cpuflags/files/subr_gcc @@ -1,71 +1,34 @@ -#!/bin/sh -# $NetBSD: cpuflags.SunOS,v 1.11 2007/03/21 15:05:08 abs Exp $ -PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH -AWK=nawk - -display_hw_details() +# Return gcc version string +gcc_ver() { - echo " OS : '`uname`'" - echo " arch : '$hw_arch'" - echo " psrinfo : '$hw_psrinfo'" + gcc=$1 + ${gcc} -dumpversion | $SED -e 's/^[^0-9\.]\{1,\}//' -e 's/[^0-9\.]\{1,\}$//' } -hw_arch=`/usr/bin/uname -m` -hw_psrinfo=`psrinfo -v | $AWK 'NR==3{print}'` # Just gets the first CPU - -case $hw_arch in - sun4c | sun4 ) FLAGS='-mcpu=cypress' ;; - sun4m ) FLAGS='-mcpu=supersparc' ;; - sun4u ) FLAGS='-mcpu=v9' ;; - i86pc ) - case "$hw_psrinfo" in - *AMD\ Opteron\(tm\)*) FLAGS="-mcpu=opteron" ;; - esac - ;; -esac - -############ -# Everything from this point common between all cpuflags variants. +gcc_ser() + { + gcc=$1 + gcc_ver $gcc | $AWK -F. '{ print ($1*1000+$2)}' + } -if [ "$1" = -v ] ; then +gcc_fixup_arch_flags() + { + gcc=$1 shift - opt_v=1 -fi -if [ -n "$1" ]; then - CC=$1 -else - CC=gcc -fi - -if [ -n "$opt_v" ] ; then - if [ -n "$FLAGS" ]; then - echo "CPUFLAGS=$FLAGS" - elif [ -z "$NONE" ] ; then - echo "CPUFLAGS=Unknown" - else - echo "CPUFLAGS=None" - fi - display_hw_details - exit -fi -if [ -z "$FLAGS" -a -z "$NONE" ] ; then - echo 'Unknown machine - please send details to abs@absd.org' >&2 - display_hw_details >&2 -fi + gcc_arch_flags="$*" -# 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 + # 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=`${CC} -dumpversion | sed 's/^egcs-//'` - FLAGS=`$AWK -F: -v "flags=$FLAGS" -v "gcc_ver=$gcc_ver" ' + $AWK -F: -v "flags=$gcc_arch_flags" -v "gcc_ver=$(gcc_ver $gcc)" ' { if (gcc_ver < $1){map[$2] = ""$3} } - END { while (flags in map) {flags = map[flags]} print flags } + END { FS=" "; split(flags,ar); for (af in ar) { flag=ar[af]; + while (flag in map) {flag = map[flag]} print flag }} ' <<EOD 2.90:-march=i386:-mno-486 2.90:-march=i486:-m486 @@ -107,6 +70,7 @@ if [ -n "$FLAGS" ]; then 3.1:-mcpu=7400:-mcpu=750 3.1:-mcpu=7450:-mcpu=750 3.1:-mfpmath=sse: +3.1:-mmmx: 3.1:-msse2: 3.1:-msse: 3.1:-mtune=r2000:-cpu=r2000 @@ -133,10 +97,8 @@ if [ -n "$FLAGS" ]; then 3.4:-march=pentium3m:-march=pentium3 3.4:-march=pentium4m:-march=pentium4 3.4:-march=prescott:-march=pentium4 +3.4:-msse3: +4.2:-m3dnow: +4.2:-march=native: EOD -` -fi - -echo $FLAGS - -exit 0 + } |