bsd.cpu.mk revision 135678
172878Skris# $FreeBSD: head/share/mk/bsd.cpu.mk 135678 2004-09-23 22:59:31Z cognet $ 272878Skris 3100772Sjhb# Set default CPU compile flags and baseline CPUTYPE for each arch. The 4100772Sjhb# compile flags must support the minimum CPU type for each architecture but 5100772Sjhb# may tune support for more advanced processors. 672878Skris 7101232Sru.if !defined(CPUTYPE) || empty(CPUTYPE) 8100773Sjhb. if ${MACHINE_ARCH} == "i386" 9125252Sjhb_CPUCFLAGS = 10113374SobrienMACHINE_CPU = i486 11100773Sjhb. elif ${MACHINE_ARCH} == "alpha" 12100772Sjhb_CPUCFLAGS = -mcpu=ev4 -mtune=ev5 13103560SjhbMACHINE_CPU = ev4 14126657Sbde. elif ${MACHINE_ARCH} == "amd64" 15115175SpeterMACHINE_CPU = amd64 sse2 sse 16100773Sjhb. elif ${MACHINE_ARCH} == "ia64" 17100772Sjhb_CPUCFLAGS = 18103560SjhbMACHINE_CPU = itanium 19100773Sjhb. elif ${MACHINE_ARCH} == "sparc64" 20100772Sjhb_CPUCFLAGS = 21129217Scognet. elif ${MACHINE_ARCH} == "arm" 22129217Scognet_CPUCFLAGS = 23129217ScognetMACHINE_CPU = arm 24100773Sjhb. endif 25100772Sjhb.else 2672878Skris 2772878Skris# Handle aliases (not documented in make.conf to avoid user confusion 2872878Skris# between e.g. i586 and pentium) 2972878Skris 30100773Sjhb. if ${MACHINE_ARCH} == "i386" 31133525Sobrien. if ${CPUTYPE} == "pentium4" 32133525SobrienCPUTYPE = p4 33133525Sobrien. elif ${CPUTYPE} == "pentium3" 34133525SobrienCPUTYPE = p3 35133525Sobrien. elif ${CPUTYPE} == "pentiumpro" 3672878SkrisCPUTYPE = i686 37100773Sjhb. elif ${CPUTYPE} == "pentium" 3872878SkrisCPUTYPE = i586 39133525Sobrien. elif ${CPUTYPE} == "opteron" 40133525SobrienCPUTYPE = athlon-mp 41133525Sobrien. elif ${CPUTYPE} == "athlon64" 42133525SobrienCPUTYPE = athlon-xp 43103045Smux. elif ${CPUTYPE} == "k7" 44103045SmuxCPUTYPE = athlon 45100773Sjhb. endif 4672878Skris. endif 4772878Skris 4896421Sobrien# Logic to set up correct gcc optimization flag. This must be included 4972878Skris# after /etc/make.conf so it can react to the local value of CPUTYPE 5096421Sobrien# defined therein. Consult: 5196421Sobrien# http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html 52127258Smarcel# http://gcc.gnu.org/onlinedocs/gcc/IA-64-Options.html 53127258Smarcel# http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html 5496421Sobrien# http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html 55127258Smarcel# http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html 5672878Skris 5772878Skris. if ${MACHINE_ARCH} == "i386" 58127888Sdfr. if ${CPUTYPE} == "crusoe" 59133000Sobrien_CPUCFLAGS = -march=i686 -falign-functions=0 -falign-jumps=0 -falign-loops=0 60127888Sdfr_ICC_CPUCFLAGS = -tpp6 -xiM 61127888Sdfr. elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \ 62126938Strhodes ${CPUTYPE} == "athlon-4" 63133000Sobrien_CPUCFLAGS = -march=${CPUTYPE} 64126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiMK 65126890Strhodes. elif ${CPUTYPE} == "athlon-tbird" || ${CPUTYPE} == "athlon" 66126890Strhodes_CPUCFLAGS = -march=${CPUTYPE} 67126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiM 68112768Sobrien. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" || ${CPUTYPE} == "k6" 69112768Sobrien_CPUCFLAGS = -march=${CPUTYPE} 70126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xi 7172878Skris. elif ${CPUTYPE} == "k5" 72133000Sobrien_CPUCFLAGS = -march=pentium 73126890Strhodes_ICC_CPUCFLAGS = -tpp5 7473145Skris. elif ${CPUTYPE} == "p4" 75133000Sobrien_CPUCFLAGS = -march=pentium4 76126890Strhodes_ICC_CPUCFLAGS = -tpp7 -xiMKW 7773145Skris. elif ${CPUTYPE} == "p3" 78133000Sobrien_CPUCFLAGS = -march=pentium3 79126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiMK 8073145Skris. elif ${CPUTYPE} == "p2" 81133000Sobrien_CPUCFLAGS = -march=pentium2 82126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiM 8372878Skris. elif ${CPUTYPE} == "i686" 84133000Sobrien_CPUCFLAGS = -march=pentiumpro 85126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiM 8673145Skris. elif ${CPUTYPE} == "i586/mmx" 87133000Sobrien_CPUCFLAGS = -march=pentium-mmx 88126890Strhodes_ICC_CPUCFLAGS = -tpp5 -xM 8972878Skris. elif ${CPUTYPE} == "i586" 90133000Sobrien_CPUCFLAGS = -march=pentium 91126890Strhodes_ICC_CPUCFLAGS = -tpp5 9272878Skris. elif ${CPUTYPE} == "i486" 93133000Sobrien_CPUCFLAGS = -march=i486 94126890Strhodes_ICC_CPUCFLAGS = 9572878Skris. endif 9672878Skris. elif ${MACHINE_ARCH} == "alpha" 97103048Skris. if ${CPUTYPE} == "ev67" 98103048Skris_CPUCFLAGS = -mcpu=ev67 99103048Skris. elif ${CPUTYPE} == "ev6" 10074146Skris_CPUCFLAGS = -mcpu=ev6 10172878Skris. elif ${CPUTYPE} == "pca56" 10274146Skris_CPUCFLAGS = -mcpu=pca56 10372878Skris. elif ${CPUTYPE} == "ev56" 10474146Skris_CPUCFLAGS = -mcpu=ev56 10572878Skris. elif ${CPUTYPE} == "ev5" 10674146Skris_CPUCFLAGS = -mcpu=ev5 10772878Skris. elif ${CPUTYPE} == "ev45" 108103048Skris_CPUCFLAGS = -mcpu=ev45 10972878Skris. elif ${CPUTYPE} == "ev4" 11074146Skris_CPUCFLAGS = -mcpu=ev4 11172878Skris. endif 112135678Scognet. elif ${MACHINE_ARCH} == "arm" 113135678Scognet. if ${CPUTYPE} == "strongarm" 114135678Scognet_CPUCFLAGS = -mcpu=strongarm 115135678Scognet. elif ${CPUTYPE} == "xscale" 116135678Scognet#XXX: gcc doesn't seem to like -mcpu=xscale, and dies while rebuilding itself 117135678Scognet#_CPUCFLAGS = -mcpu=xscale 118135678Scognet_CPUCFLAGS = -D__XSCALE__ 119135678Scognet. endif 12072878Skris. endif 12172878Skris 12272878Skris# Set up the list of CPU features based on the CPU type. This is an 12372878Skris# unordered list to make it easy for client makefiles to test for the 12472878Skris# presence of a CPU feature. 12572878Skris 126126657Sbde. if ${MACHINE_ARCH} == "i386" 127126657Sbde. if ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \ 128125254Sbde ${CPUTYPE} == "athlon-4" 129112768SobrienMACHINE_CPU = athlon-xp k7 3dnow sse mmx k6 k5 i586 i486 i386 130126657Sbde. elif ${CPUTYPE} == "athlon" || ${CPUTYPE} == "athlon-tbird" 131112768SobrienMACHINE_CPU = athlon k7 3dnow mmx k6 k5 i586 i486 i386 132126657Sbde. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" 133103045SmuxMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386 134103562Sjhb. elif ${CPUTYPE} == "k6" 13574069SsobomaxMACHINE_CPU = mmx k6 k5 i586 i486 i386 136103562Sjhb. elif ${CPUTYPE} == "k5" 13772878SkrisMACHINE_CPU = k5 i586 i486 i386 138103562Sjhb. elif ${CPUTYPE} == "p4" 139103045SmuxMACHINE_CPU = sse2 sse i686 mmx i586 i486 i386 140103562Sjhb. elif ${CPUTYPE} == "p3" 14173145SkrisMACHINE_CPU = sse i686 mmx i586 i486 i386 142103562Sjhb. elif ${CPUTYPE} == "p2" 14374553SkrisMACHINE_CPU = i686 mmx i586 i486 i386 144103562Sjhb. elif ${CPUTYPE} == "i686" 14572878SkrisMACHINE_CPU = i686 i586 i486 i386 146103562Sjhb. elif ${CPUTYPE} == "i586/mmx" 14773145SkrisMACHINE_CPU = mmx i586 i486 i386 148103562Sjhb. elif ${CPUTYPE} == "i586" 14972878SkrisMACHINE_CPU = i586 i486 i386 150103562Sjhb. elif ${CPUTYPE} == "i486" 15172878SkrisMACHINE_CPU = i486 i386 152103562Sjhb. elif ${CPUTYPE} == "i386" 15372878SkrisMACHINE_CPU = i386 154103562Sjhb. endif 155103562Sjhb. elif ${MACHINE_ARCH} == "alpha" 156103562Sjhb. if ${CPUTYPE} == "ev6" 15772878SkrisMACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4 158103562Sjhb. elif ${CPUTYPE} == "pca56" 15972878SkrisMACHINE_CPU = pca56 ev56 ev5 ev45 ev4 160103562Sjhb. elif ${CPUTYPE} == "ev56" 16172878SkrisMACHINE_CPU = ev56 ev5 ev45 ev4 162103562Sjhb. elif ${CPUTYPE} == "ev5" 16372878SkrisMACHINE_CPU = ev5 ev45 ev4 164103562Sjhb. elif ${CPUTYPE} == "ev45" 16572878SkrisMACHINE_CPU = ev45 ev4 166103562Sjhb. elif ${CPUTYPE} == "ev4" 16772878SkrisMACHINE_CPU = ev4 168103562Sjhb. endif 169115175Speter. elif ${MACHINE_ARCH} == "amd64" 170115175SpeterMACHINE_CPU = amd64 sse2 sse 171103562Sjhb. elif ${MACHINE_ARCH} == "ia64" 172103562Sjhb. if ${CPUTYPE} == "itanium" 17372878SkrisMACHINE_CPU = itanium 174103562Sjhb. endif 17572878Skris. endif 17672878Skris.endif 177103561Sjhb 178112769Sobrien.if ${MACHINE_ARCH} == "alpha" 179112769Sobrien_CPUCFLAGS += -mieee 180112769Sobrien.endif 181112769Sobrien 182124347Sru# NB: COPTFLAGS is handled in /usr/src/sys/conf/kern.pre.mk 183103561Sjhb 184103561Sjhb.if !defined(NO_CPU_CFLAGS) 185126890Strhodes. if ${CC} == "icc" 186126890StrhodesCFLAGS += ${_ICC_CPUCFLAGS} 187126890Strhodes. else 188103561SjhbCFLAGS += ${_CPUCFLAGS} 189126890Strhodes. endif 190103561Sjhb.endif 191