bsd.cpu.mk revision 137789
16059Samurai# $FreeBSD: head/share/mk/bsd.cpu.mk 137789 2004-11-16 21:12:47Z jhb $ 26059Samurai 36059Samurai# Set default CPU compile flags and baseline CPUTYPE for each arch. The 46059Samurai# compile flags must support the minimum CPU type for each architecture but 56059Samurai# may tune support for more advanced processors. 66059Samurai 76059Samurai.if !defined(CPUTYPE) || empty(CPUTYPE) 86059Samurai_CPUCFLAGS = 96059Samurai. if ${MACHINE_ARCH} == "i386" 106059SamuraiMACHINE_CPU = i486 116059Samurai. elif ${MACHINE_ARCH} == "alpha" 126059Samurai_CPUCFLAGS = -mcpu=ev4 -mtune=ev5 136059SamuraiMACHINE_CPU = ev4 146059Samurai. elif ${MACHINE_ARCH} == "amd64" 156059SamuraiMACHINE_CPU = amd64 sse2 sse 166059Samurai. elif ${MACHINE_ARCH} == "ia64" 176059SamuraiMACHINE_CPU = itanium 186059Samurai. elif ${MACHINE_ARCH} == "sparc64" 198857Srgrimes. elif ${MACHINE_ARCH} == "arm" 2044123SbrianMACHINE_CPU = arm 218857Srgrimes. endif 226059Samurai.else 236059Samurai 2443313Sbrian# Handle aliases (not documented in make.conf to avoid user confusion 2530715Sbrian# between e.g. i586 and pentium) 2636285Sbrian 2736285Sbrian. if ${MACHINE_ARCH} == "i386" 2836285Sbrian. if ${CPUTYPE} == "nocona" 2930715SbrianCPUTYPE = prescott 3043888Sbrian. elif ${CPUTYPE} == "p4" 3143888SbrianCPUTYPE = pentium4 3237192Sbrian. elif ${CPUTYPE} == "p4m" 3336287SbrianCPUTYPE = pentium4m 3437192Sbrian. elif ${CPUTYPE} == "p3" 3530715SbrianCPUTYPE = pentium3 3643888Sbrian. elif ${CPUTYPE} == "p3m" 3743888SbrianCPUTYPE = pentium3m 3830715Sbrian. elif ${CPUTYPE} == "p-m" 3944106SbrianCPUTYPE = pentium-m 4043888Sbrian. elif ${CPUTYPE} == "p2" 4136285SbrianCPUTYPE = pentium2 4243888Sbrian. elif ${CPUTYPE} == "i686" 4329840SbrianCPUTYPE = pentiumpro 4430715Sbrian. elif ${CPUTYPE} == "i586/mmx" 4530715SbrianCPUTYPE = pentium-mmx 4630715Sbrian. elif ${CPUTYPE} == "i586" 4730715SbrianCPUTYPE = pentium 486059Samurai. elif ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || \ 496059Samurai ${CPUTYPE} == "k8" 506059SamuraiCPUTYPE = athlon-mp 5136285Sbrian. elif ${CPUTYPE} == "k7" 526059SamuraiCPUTYPE = athlon 536735Samurai. endif 5436285Sbrian. elif ${MACHINE_ARCH} == "amd64" 5536285Sbrian. if ${CPUTYPE} == "prescott" 5636285SbrianCPUTYPE = nocona 5743888Sbrian. endif 5836285Sbrian. endif 5936285Sbrian 6036285Sbrian############################################################################### 6136285Sbrian# Logic to set up correct gcc optimization flag. This must be included 6236285Sbrian# after /etc/make.conf so it can react to the local value of CPUTYPE 6336285Sbrian# defined therein. Consult: 6436285Sbrian# http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html 6536285Sbrian# http://gcc.gnu.org/onlinedocs/gcc/IA-64-Options.html 6643313Sbrian# http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html 6743313Sbrian# http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html 6843313Sbrian# http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html 6936285Sbrian 7036285Sbrian. if ${MACHINE_ARCH} == "i386" 7138174Sbrian. if ${CPUTYPE} == "crusoe" 7243888Sbrian_CPUCFLAGS = -march=i686 -falign-functions=0 -falign-jumps=0 -falign-loops=0 7336285Sbrian. elif ${CPUTYPE} == "k5" 7437192Sbrian_CPUCFLAGS = -march=pentium 7536287Sbrian. else 7637192Sbrian_CPUCFLAGS = -march=${CPUTYPE} 776059Samurai. endif # GCC on 'i386' 7831343Sbrian. if ${CPUTYPE} == "crusoe" 7919866Sphk_ICC_CPUCFLAGS = -tpp6 -xiM 806059Samurai. elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \ 8143693Sbrian ${CPUTYPE} == "athlon-4" 826059Samurai_ICC_CPUCFLAGS = -tpp6 -xiMK 8330715Sbrian. elif ${CPUTYPE} == "athlon-tbird" || ${CPUTYPE} == "athlon" 8436285Sbrian_ICC_CPUCFLAGS = -tpp6 -xiM 8543693Sbrian. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" || ${CPUTYPE} == "k6" 866059Samurai_ICC_CPUCFLAGS = -tpp6 -xi 876059Samurai. elif ${CPUTYPE} == "k5" 886059Samurai_ICC_CPUCFLAGS = -tpp5 896059Samurai. elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m" 906059Samurai_ICC_CPUCFLAGS = -tpp7 -xiMKW 9128679Sbrian. elif ${CPUTYPE} == "pentium3" || ${CPUTYPE} == "pentium3m" || \ 926059Samurai ${CPUTYPE} == "pentium-m" 936059Samurai_ICC_CPUCFLAGS = -tpp6 -xiMK 946059Samurai. elif ${CPUTYPE} == "pentium2" || ${CPUTYPE} == "pentiumpro" 9536285Sbrian_ICC_CPUCFLAGS = -tpp6 -xiM 9630715Sbrian. elif ${CPUTYPE} == "pentium-mmx" 976059Samurai_ICC_CPUCFLAGS = -tpp5 -xM 9830715Sbrian. elif ${CPUTYPE} == "pentium" 9936285Sbrian_ICC_CPUCFLAGS = -tpp5 10037926Sbrian. else 10137926Sbrian_ICC_CPUCFLAGS = 10237926Sbrian. endif # ICC on 'i386' 10337926Sbrian. elif ${MACHINE_ARCH} == "alpha" 10436285Sbrian_CPUCFLAGS = -mcpu=${CPUTYPE} 1056059Samurai. elif ${MACHINE_ARCH} == "amd64" 1066059Samurai_CPUCFLAGS = -march=${CPUTYPE} 10743693Sbrian. elif ${MACHINE_ARCH} == "arm" 10844123Sbrian. if ${CPUTYPE} == "xscale" 10944123Sbrian#XXX: gcc doesn't seem to like -mcpu=xscale, and dies while rebuilding itself 11044123Sbrian#_CPUCFLAGS = -mcpu=xscale 11144123Sbrian_CPUCFLAGS = -D__XSCALE__ 11244123Sbrian. else 1136059Samurai_CPUCFLAGS = -mcpu=${CPUTYPE} 11443693Sbrian. endif 11543693Sbrian. endif 11643693Sbrian 11743693Sbrian# Set up the list of CPU features based on the CPU type. This is an 11843693Sbrian# unordered list to make it easy for client makefiles to test for the 11943693Sbrian# presence of a CPU feature. 12043693Sbrian 12144106Sbrian. if ${MACHINE_ARCH} == "i386" 12243693Sbrian. if ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" 12343693SbrianMACHINE_CPU = athlon-xp athlon k7 3dnow sse2 sse mmx k6 k5 i586 i486 i386 12443693Sbrian. elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \ 12543693Sbrian ${CPUTYPE} == "athlon-4" 12643693SbrianMACHINE_CPU = athlon-xp athlon k7 3dnow sse mmx k6 k5 i586 i486 i386 12743693Sbrian. elif ${CPUTYPE} == "athlon" || ${CPUTYPE} == "athlon-tbird" 12843693SbrianMACHINE_CPU = athlon k7 3dnow mmx k6 k5 i586 i486 i386 12944106Sbrian. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" 13044106SbrianMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386 13144106Sbrian. elif ${CPUTYPE} == "k6" 13244106SbrianMACHINE_CPU = mmx k6 k5 i586 i486 i386 13344106Sbrian. elif ${CPUTYPE} == "k5" 13444106SbrianMACHINE_CPU = k5 i586 i486 i386 13544106Sbrian. elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m" || ${CPUTYPE} == "pentium-m" 13644106SbrianMACHINE_CPU = sse2 sse i686 mmx i586 i486 i386 13744106Sbrian. elif ${CPUTYPE} == "pentium3" || ${CPUTYPE} == "pentium3m" 13843693SbrianMACHINE_CPU = sse i686 mmx i586 i486 i386 13944106Sbrian. elif ${CPUTYPE} == "pentium2" 14044106SbrianMACHINE_CPU = i686 mmx i586 i486 i386 14144106Sbrian. elif ${CPUTYPE} == "pentiumpro" 14244106SbrianMACHINE_CPU = i686 i586 i486 i386 14344106Sbrian. elif ${CPUTYPE} == "pentium-mmx" 14444106SbrianMACHINE_CPU = mmx i586 i486 i386 14544106Sbrian. elif ${CPUTYPE} == "pentium" 14644106SbrianMACHINE_CPU = i586 i486 i386 14744106Sbrian. elif ${CPUTYPE} == "i486" 14844106SbrianMACHINE_CPU = i486 i386 14944106Sbrian. elif ${CPUTYPE} == "i386" 15044106SbrianMACHINE_CPU = i386 15144106Sbrian. endif 15244106Sbrian. elif ${MACHINE_ARCH} == "alpha" 15344106Sbrian. if ${CPUTYPE} == "ev6" 15444106SbrianMACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4 15544106Sbrian. elif ${CPUTYPE} == "pca56" 15644106SbrianMACHINE_CPU = pca56 ev56 ev5 ev45 ev4 15744106Sbrian. elif ${CPUTYPE} == "ev56" 15843693SbrianMACHINE_CPU = ev56 ev5 ev45 ev4 15943693Sbrian. elif ${CPUTYPE} == "ev5" 16044106SbrianMACHINE_CPU = ev5 ev45 ev4 16144106Sbrian. elif ${CPUTYPE} == "ev45" 16244106SbrianMACHINE_CPU = ev45 ev4 16344106Sbrian. elif ${CPUTYPE} == "ev4" 16444106SbrianMACHINE_CPU = ev4 16543693Sbrian. endif 16643693Sbrian. elif ${MACHINE_ARCH} == "amd64" 16743693Sbrian. if ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || ${CPUTYPE} == "k8" 16843693SbrianMACHINE_CPU = amd64 k8 athlon-mp athlon k7 3dnow sse2 sse mmx k6 k5 i586 i486 i386 16943693Sbrian. elif ${CPUTYPE} == "nocona" 17043693SbrianMACHINE_CPU = sse3 sse2 sse mmx 17143693Sbrian. endif 17243693Sbrian. elif ${MACHINE_ARCH} == "ia64" 17343693Sbrian. if ${CPUTYPE} == "itanium" 17443693SbrianMACHINE_CPU = itanium 17543693Sbrian. endif 17643693Sbrian. endif 17743693Sbrian.endif 17843693Sbrian 17943693Sbrian.if ${MACHINE_ARCH} == "alpha" 18043693Sbrian_CPUCFLAGS += -mieee 18143693Sbrian.endif 18243693Sbrian 18343693Sbrian# NB: COPTFLAGS is handled in /usr/src/sys/conf/kern.pre.mk 18443693Sbrian 18543693Sbrian.if !defined(NO_CPU_CFLAGS) 18643693Sbrian. if ${CC} == "icc" 18743693SbrianCFLAGS += ${_ICC_CPUCFLAGS} 18843693Sbrian. else 18943693SbrianCFLAGS += ${_CPUCFLAGS} 19043693Sbrian. endif 19143693Sbrian.endif 19243693Sbrian