bsd.cpu.mk revision 103048
1149423Spjd# $FreeBSD: head/share/mk/bsd.cpu.mk 103048 2002-09-07 01:26:11Z kris $ 2149423Spjd 3149423Spjd# Set default CPU compile flags and baseline CPUTYPE for each arch. The 4149423Spjd# compile flags must support the minimum CPU type for each architecture but 5149423Spjd# may tune support for more advanced processors. 6149423Spjd 7149423Spjd.if !defined(CPUTYPE) || empty(CPUTYPE) 8149423Spjd. if ${MACHINE_ARCH} == "i386" 9149423Spjd_CPUCFLAGS = -mcpu=pentiumpro 10149423SpjdCPUTYPE = i386 11149423Spjd. elif ${MACHINE_ARCH} == "alpha" 12149423Spjd_CPUCFLAGS = -mcpu=ev4 -mtune=ev5 13149423SpjdCPUTYPE = ev4 14149423Spjd. elif ${MACHINE_ARCH} == "ia64" 15149423Spjd_CPUCFLAGS = 16149423SpjdCPUTYPE = itanium 17149423Spjd. elif ${MACHINE_ARCH} == "sparc64" 18149423Spjd_CPUCFLAGS = 19149423SpjdCPUTYPE = ultrasparc 20149423Spjd. endif 21149423Spjd.else 22149423Spjd 23149423Spjd# Handle aliases (not documented in make.conf to avoid user confusion 24149423Spjd# between e.g. i586 and pentium) 25149423Spjd 26149423Spjd. if ${MACHINE_ARCH} == "i386" 27149423Spjd. if ${CPUTYPE} == "pentiumpro" 28149423SpjdCPUTYPE = i686 29149423Spjd. elif ${CPUTYPE} == "pentium" 30149423SpjdCPUTYPE = i586 31149423Spjd. elif ${CPUTYPE} == "k7" 32149423SpjdCPUTYPE = athlon 33149423Spjd. endif 34149423Spjd. endif 35149423Spjd 36149423Spjd# Logic to set up correct gcc optimization flag. This must be included 37149423Spjd# after /etc/make.conf so it can react to the local value of CPUTYPE 38149423Spjd# defined therein. Consult: 39149423Spjd# http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html 40149423Spjd# http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html 41149423Spjd# http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html 42149423Spjd# http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html 43149423Spjd 44149423Spjd. if ${MACHINE_ARCH} == "i386" 45149423Spjd. if ${CPUTYPE} == "athlon-mp" 46149423Spjd_CPUCFLAGS = -march=athlon-mp 47149423Spjd. elif ${CPUTYPE} == "athlon-xp" 48149423Spjd_CPUCFLAGS = -march=athlon-xp 49149423Spjd. elif ${CPUTYPE} == "athlon-4" 50149423Spjd_CPUCFLAGS = -march=athlon-4 51149423Spjd. elif ${CPUTYPE} == "athlon-tbird" 52149423Spjd_CPUCFLAGS = -march=athlon-tbird 53149423Spjd. elif ${CPUTYPE} == "athlon" 54149423Spjd_CPUCFLAGS = -march=athlon 55149423Spjd. elif ${CPUTYPE} == "k6-3" 56149423Spjd_CPUCFLAGS = -march=k6-3 57149423Spjd. elif ${CPUTYPE} == "k6-2" 58149423Spjd_CPUCFLAGS = -march=k6-2 59149423Spjd. elif ${CPUTYPE} == "k6" 60149423Spjd_CPUCFLAGS = -march=k6 61149423Spjd. elif ${CPUTYPE} == "k5" 62149423Spjd_CPUCFLAGS = -march=pentium 63149423Spjd. elif ${CPUTYPE} == "p4" 64149423Spjd_CPUCFLAGS = -march=pentium4 65149423Spjd. elif ${CPUTYPE} == "p3" 66149423Spjd_CPUCFLAGS = -march=pentium3 67149423Spjd. elif ${CPUTYPE} == "p2" 68149423Spjd_CPUCFLAGS = -march=pentium2 69149423Spjd. elif ${CPUTYPE} == "i686" 70149423Spjd_CPUCFLAGS = -march=pentiumpro 71149423Spjd. elif ${CPUTYPE} == "i586/mmx" 72149423Spjd_CPUCFLAGS = -march=pentium-mmx 73149423Spjd. elif ${CPUTYPE} == "i586" 74149423Spjd_CPUCFLAGS = -march=pentium 75149423Spjd. elif ${CPUTYPE} == "i486" 76149423Spjd_CPUCFLAGS = -march=i486 77149423Spjd. endif 78149423Spjd. elif ${MACHINE_ARCH} == "alpha" 79149423Spjd. if ${CPUTYPE} == "ev67" 80149423Spjd_CPUCFLAGS = -mcpu=ev67 81149423Spjd. elif ${CPUTYPE} == "ev6" 82149423Spjd_CPUCFLAGS = -mcpu=ev6 83149423Spjd. elif ${CPUTYPE} == "pca56" 84149423Spjd_CPUCFLAGS = -mcpu=pca56 85149423Spjd. elif ${CPUTYPE} == "ev56" 86149423Spjd_CPUCFLAGS = -mcpu=ev56 87149423Spjd. elif ${CPUTYPE} == "ev5" 88149423Spjd_CPUCFLAGS = -mcpu=ev5 89149423Spjd. elif ${CPUTYPE} == "ev45" 90149423Spjd_CPUCFLAGS = -mcpu=ev45 91149423Spjd. elif ${CPUTYPE} == "ev4" 92149423Spjd_CPUCFLAGS = -mcpu=ev4 93149423Spjd. endif 94149423Spjd. endif 95149423Spjd.endif 96149423Spjd 97149423Spjd# NB: COPTFLAGS is handled in /usr/src/sys/conf/Makefile.<arch> 98149423Spjd 99149423Spjd.if !defined(NO_CPU_CFLAGS) 100149423SpjdCFLAGS += ${_CPUCFLAGS} 101149423Spjd.endif 102149423Spjd 103149423Spjd# Set up the list of CPU features based on the CPU type. This is an 104149423Spjd# unordered list to make it easy for client makefiles to test for the 105149423Spjd# presence of a CPU feature. 106149423Spjd 107149423Spjd.if ${MACHINE_ARCH} == "i386" 108149423Spjd. if ${CPUTYPE} == "athlon-mp" 109149423SpjdMACHINE_CPU = sse k7 3dnow mmx k6 k5 i586 i486 i386 110149423Spjd. elif ${CPUTYPE} == "athlon-xp" 111149423SpjdMACHINE_CPU = sse k7 3dnow mmx k6 k5 i586 i486 i386 112149423Spjd. elif ${CPUTYPE} == "athlon-4" 113149423SpjdMACHINE_CPU = sse k7 3dnow mmx k6 k5 i586 i486 i386 114149423Spjd. elif ${CPUTYPE} == "athlon-tbird" 115149423SpjdMACHINE_CPU = k7 3dnow mmx k6 k5 i586 i486 i386 116149423Spjd. elif ${CPUTYPE} == "athlon" 117149423SpjdMACHINE_CPU = k7 3dnow mmx k6 k5 i586 i486 i386 118149423Spjd. elif ${CPUTYPE} == "k6-3" 119149423SpjdMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386 120149423Spjd. elif ${CPUTYPE} == "k6-2" 121149423SpjdMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386 122149423Spjd. elif ${CPUTYPE} == "k6" 123149423SpjdMACHINE_CPU = mmx k6 k5 i586 i486 i386 124149423Spjd. elif ${CPUTYPE} == "k5" 125149423SpjdMACHINE_CPU = k5 i586 i486 i386 126149423Spjd. elif ${CPUTYPE} == "p4" 127149423SpjdMACHINE_CPU = sse2 sse i686 mmx i586 i486 i386 128149423Spjd. elif ${CPUTYPE} == "p3" 129149423SpjdMACHINE_CPU = sse i686 mmx i586 i486 i386 130149423Spjd. elif ${CPUTYPE} == "p2" 131149423SpjdMACHINE_CPU = i686 mmx i586 i486 i386 132149423Spjd. elif ${CPUTYPE} == "i686" 133149423SpjdMACHINE_CPU = i686 i586 i486 i386 134149423Spjd. elif ${CPUTYPE} == "i586/mmx" 135149423SpjdMACHINE_CPU = mmx i586 i486 i386 136149423Spjd. elif ${CPUTYPE} == "i586" 137149423SpjdMACHINE_CPU = i586 i486 i386 138149423Spjd. elif ${CPUTYPE} == "i486" 139149423SpjdMACHINE_CPU = i486 i386 140149423Spjd. elif ${CPUTYPE} == "i386" 141149423SpjdMACHINE_CPU = i386 142149423Spjd. endif 143149423Spjd.elif ${MACHINE_ARCH} == "alpha" 144149423Spjd. if ${CPUTYPE} == "ev6" 145149423SpjdMACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4 146149423Spjd. elif ${CPUTYPE} == "pca56" 147149423SpjdMACHINE_CPU = pca56 ev56 ev5 ev45 ev4 148149423Spjd. elif ${CPUTYPE} == "ev56" 149149423SpjdMACHINE_CPU = ev56 ev5 ev45 ev4 150149423Spjd. elif ${CPUTYPE} == "ev5" 151149423SpjdMACHINE_CPU = ev5 ev45 ev4 152149423Spjd. elif ${CPUTYPE} == "ev45" 153149423SpjdMACHINE_CPU = ev45 ev4 154149423Spjd. elif ${CPUTYPE} == "ev4" 155149423SpjdMACHINE_CPU = ev4 156149423Spjd. endif 157149423Spjd.elif ${MACHINE_ARCH} == "ia64" 158149423Spjd. if ${CPUTYPE} == "itanium" 159149423SpjdMACHINE_CPU = itanium 160149423Spjd. endif 161149423Spjd.endif 162149423Spjd