bsd.cpu.mk revision 112768
11558Srgrimes# $FreeBSD: head/share/mk/bsd.cpu.mk 112768 2003-03-29 03:13:19Z obrien $ 21558Srgrimes 31558Srgrimes# Set default CPU compile flags and baseline CPUTYPE for each arch. The 41558Srgrimes# compile flags must support the minimum CPU type for each architecture but 51558Srgrimes# may tune support for more advanced processors. 61558Srgrimes 71558Srgrimes.if !defined(CPUTYPE) || empty(CPUTYPE) 81558Srgrimes. if ${MACHINE_ARCH} == "i386" 91558Srgrimes_CPUCFLAGS = -mcpu=pentiumpro 101558SrgrimesMACHINE_CPU = i386 111558Srgrimes. elif ${MACHINE_ARCH} == "alpha" 121558Srgrimes_CPUCFLAGS = -mcpu=ev4 -mtune=ev5 131558SrgrimesMACHINE_CPU = ev4 141558Srgrimes.elif ${MACHINE_ARCH} == "x86-64" || ${MACHINE_ARCH} == "x86_64" 151558SrgrimesMACHINE_CPU = x86-64 sse2 sse 161558Srgrimes. elif ${MACHINE_ARCH} == "ia64" 171558Srgrimes_CPUCFLAGS = 181558SrgrimesMACHINE_CPU = itanium 191558Srgrimes. elif ${MACHINE_ARCH} == "sparc64" 201558Srgrimes_CPUCFLAGS = 211558Srgrimes. endif 221558Srgrimes.else 231558Srgrimes 241558Srgrimes# Handle aliases (not documented in make.conf to avoid user confusion 251558Srgrimes# between e.g. i586 and pentium) 261558Srgrimes 271558Srgrimes. if ${MACHINE_ARCH} == "i386" 281558Srgrimes. if ${CPUTYPE} == "pentiumpro" 291558SrgrimesCPUTYPE = i686 301558Srgrimes. elif ${CPUTYPE} == "pentium" 311558SrgrimesCPUTYPE = i586 321558Srgrimes. elif ${CPUTYPE} == "k7" 331558SrgrimesCPUTYPE = athlon 341558Srgrimes. endif 351558Srgrimes. endif 361558Srgrimes 371558Srgrimes# Logic to set up correct gcc optimization flag. This must be included 381558Srgrimes# after /etc/make.conf so it can react to the local value of CPUTYPE 391558Srgrimes# defined therein. Consult: 401558Srgrimes# http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html 411558Srgrimes# http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html 421558Srgrimes# http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html 431558Srgrimes# http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html 4415770Swollman 4523680Speter. if ${MACHINE_ARCH} == "i386" 4615770Swollman. if ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || ${CPUTYPE} == "athlon-4" || ${CPUTYPE} == "athlon" 4715770Swollman_CPUCFLAGS = -march=${CPUTYPE} 4824546Sdfr. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" || ${CPUTYPE} == "k6" 491558Srgrimes_CPUCFLAGS = -march=${CPUTYPE} 501558Srgrimes. elif ${CPUTYPE} == "k5" 511558Srgrimes_CPUCFLAGS = -march=pentium 521558Srgrimes. elif ${CPUTYPE} == "p4" 531558Srgrimes_CPUCFLAGS = -march=pentium4 541558Srgrimes. elif ${CPUTYPE} == "p3" 551558Srgrimes_CPUCFLAGS = -march=pentium3 561558Srgrimes. elif ${CPUTYPE} == "p2" 571558Srgrimes_CPUCFLAGS = -march=pentium2 581558Srgrimes. elif ${CPUTYPE} == "i686" 591558Srgrimes_CPUCFLAGS = -march=pentiumpro 601558Srgrimes. elif ${CPUTYPE} == "i586/mmx" 611558Srgrimes_CPUCFLAGS = -march=pentium-mmx 621558Srgrimes. elif ${CPUTYPE} == "i586" 631558Srgrimes_CPUCFLAGS = -march=pentium 641558Srgrimes. elif ${CPUTYPE} == "i486" 651558Srgrimes_CPUCFLAGS = -march=i486 669336Sdfr. endif 6723680Speter. elif ${MACHINE_ARCH} == "alpha" 681558Srgrimes. if ${CPUTYPE} == "ev67" 691558Srgrimes_CPUCFLAGS = -mcpu=ev67 701558Srgrimes. elif ${CPUTYPE} == "ev6" 711558Srgrimes_CPUCFLAGS = -mcpu=ev6 729336Sdfr. elif ${CPUTYPE} == "pca56" 7323680Speter_CPUCFLAGS = -mcpu=pca56 741558Srgrimes. elif ${CPUTYPE} == "ev56" 7523680Speter_CPUCFLAGS = -mcpu=ev56 761558Srgrimes. elif ${CPUTYPE} == "ev5" 771558Srgrimes_CPUCFLAGS = -mcpu=ev5 781558Srgrimes. elif ${CPUTYPE} == "ev45" 791558Srgrimes_CPUCFLAGS = -mcpu=ev45 801558Srgrimes. elif ${CPUTYPE} == "ev4" 811558Srgrimes_CPUCFLAGS = -mcpu=ev4 821558Srgrimes. endif 831558Srgrimes. endif 841558Srgrimes 851558Srgrimes# Set up the list of CPU features based on the CPU type. This is an 861558Srgrimes# unordered list to make it easy for client makefiles to test for the 871558Srgrimes# presence of a CPU feature. 881558Srgrimes 8915770Swollman.if ${MACHINE_ARCH} == "i386" 901558Srgrimes. if ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || ${CPUTYPE} == "athlon-4" 911558SrgrimesMACHINE_CPU = athlon-xp k7 3dnow sse mmx k6 k5 i586 i486 i386 921558Srgrimes. elif ${CPUTYPE} == "athlon" || ${CPUTYPE} == "athlon-tbird" 931558SrgrimesMACHINE_CPU = athlon k7 3dnow mmx k6 k5 i586 i486 i386 944065Swollman. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" 954065SwollmanMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386 964065Swollman. elif ${CPUTYPE} == "k6" 974065SwollmanMACHINE_CPU = mmx k6 k5 i586 i486 i386 984065Swollman. elif ${CPUTYPE} == "k5" 999336SdfrMACHINE_CPU = k5 i586 i486 i386 1009336Sdfr. elif ${CPUTYPE} == "p4" 1019336SdfrMACHINE_CPU = sse2 sse i686 mmx i586 i486 i386 1024065Swollman. elif ${CPUTYPE} == "p3" 1034065SwollmanMACHINE_CPU = sse i686 mmx i586 i486 i386 1044065Swollman. elif ${CPUTYPE} == "p2" 1054065SwollmanMACHINE_CPU = i686 mmx i586 i486 i386 1064065Swollman. elif ${CPUTYPE} == "i686" 1079230SkarlMACHINE_CPU = i686 i586 i486 i386 1084065Swollman. elif ${CPUTYPE} == "i586/mmx" 1091558SrgrimesMACHINE_CPU = mmx i586 i486 i386 1101558Srgrimes. elif ${CPUTYPE} == "i586" 1111558SrgrimesMACHINE_CPU = i586 i486 i386 1121558Srgrimes. elif ${CPUTYPE} == "i486" 1134065SwollmanMACHINE_CPU = i486 i386 1144065Swollman. elif ${CPUTYPE} == "i386" 1154065SwollmanMACHINE_CPU = i386 1164065Swollman. endif 1179336Sdfr. elif ${MACHINE_ARCH} == "alpha" 1184065Swollman. if ${CPUTYPE} == "ev6" 1194065SwollmanMACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4 1209336Sdfr. elif ${CPUTYPE} == "pca56" 1219336SdfrMACHINE_CPU = pca56 ev56 ev5 ev45 ev4 1229336Sdfr. elif ${CPUTYPE} == "ev56" 1234065SwollmanMACHINE_CPU = ev56 ev5 ev45 ev4 1244065Swollman. elif ${CPUTYPE} == "ev5" 1254065SwollmanMACHINE_CPU = ev5 ev45 ev4 1264065Swollman. elif ${CPUTYPE} == "ev45" 1274065SwollmanMACHINE_CPU = ev45 ev4 1284065Swollman. elif ${CPUTYPE} == "ev4" 1294065SwollmanMACHINE_CPU = ev4 1309230Skarl. endif 1311558Srgrimes. elif ${MACHINE_ARCH} == "x86-64" || ${MACHINE_ARCH} == "x86_64" 1321558SrgrimesMACHINE_CPU = x86-64 sse2 sse 1331558Srgrimes. elif ${MACHINE_ARCH} == "ia64" 1341558Srgrimes. if ${CPUTYPE} == "itanium" 13523680SpeterMACHINE_CPU = itanium 1361558Srgrimes. endif 1371558Srgrimes. endif 1381558Srgrimes.endif 1391558Srgrimes 1409336Sdfr# NB: COPTFLAGS is handled in /usr/src/sys/conf/Makefile.<arch> 1411558Srgrimes 14224495Sguido.if !defined(NO_CPU_CFLAGS) 1431558SrgrimesCFLAGS += ${_CPUCFLAGS} 1441558Srgrimes.endif 1459336Sdfr