bsd.cpu.mk revision 136607
172878Skris# $FreeBSD: head/share/mk/bsd.cpu.mk 136607 2004-10-17 05:19:45Z obrien $ 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) 8136606Sobrien_CPUCFLAGS = 9100773Sjhb. if ${MACHINE_ARCH} == "i386" 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" 17103560SjhbMACHINE_CPU = itanium 18100773Sjhb. elif ${MACHINE_ARCH} == "sparc64" 19129217Scognet. elif ${MACHINE_ARCH} == "arm" 20129217ScognetMACHINE_CPU = arm 21100773Sjhb. endif 22100772Sjhb.else 2372878Skris 2472878Skris# Handle aliases (not documented in make.conf to avoid user confusion 2572878Skris# between e.g. i586 and pentium) 2672878Skris 27100773Sjhb. if ${MACHINE_ARCH} == "i386" 28136607Sobrien. if ${CPUTYPE} == "nocona" 29136607SobrienCPUTYPE = prescott 30136607Sobrien. elif ${CPUTYPE} == "p4" 31136606SobrienCPUTYPE = pentium4 32136606Sobrien. elif ${CPUTYPE} == "p4m" 33136606SobrienCPUTYPE = pentium4m 34136606Sobrien. elif ${CPUTYPE} == "p3" 35136606SobrienCPUTYPE = pentium3 36136606Sobrien. elif ${CPUTYPE} == "p3m" 37136606SobrienCPUTYPE = pentium3m 38136606Sobrien. elif ${CPUTYPE} == "p-m" 39136606SobrienCPUTYPE = pentium-m 40136606Sobrien. elif ${CPUTYPE} == "p2" 41136606SobrienCPUTYPE = pentium2 42136606Sobrien. elif ${CPUTYPE} == "i686" 43136606SobrienCPUTYPE = pentiumpro 44136606Sobrien. elif ${CPUTYPE} == "i586/mmx" 45136606SobrienCPUTYPE = pentium-mmx 46136606Sobrien. elif ${CPUTYPE} == "i586" 47136606SobrienCPUTYPE = pentium 48136607Sobrien. elif ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || \ 49136607Sobrien ${CPUTYPE} == "k8" 50133525SobrienCPUTYPE = athlon-mp 51103045Smux. elif ${CPUTYPE} == "k7" 52103045SmuxCPUTYPE = athlon 53100773Sjhb. endif 54136607Sobrien. elif ${MACHINE_ARCH} == "amd64" 55136607Sobrien. if ${CPUTYPE} == "prescott" 56136607SobrienCPUTYPE = nocona 57136607Sobrien. endif 5872878Skris. endif 5972878Skris 60136606Sobrien############################################################################### 6196421Sobrien# Logic to set up correct gcc optimization flag. This must be included 6272878Skris# after /etc/make.conf so it can react to the local value of CPUTYPE 6396421Sobrien# defined therein. Consult: 6496421Sobrien# http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html 65127258Smarcel# http://gcc.gnu.org/onlinedocs/gcc/IA-64-Options.html 66127258Smarcel# http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html 6796421Sobrien# http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html 68127258Smarcel# http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html 6972878Skris 7072878Skris. if ${MACHINE_ARCH} == "i386" 71127888Sdfr. if ${CPUTYPE} == "crusoe" 72133000Sobrien_CPUCFLAGS = -march=i686 -falign-functions=0 -falign-jumps=0 -falign-loops=0 73136606Sobrien. elif ${CPUTYPE} == "k5" 74136606Sobrien_CPUCFLAGS = -march=pentium 75136606Sobrien. else 76136606Sobrien_CPUCFLAGS = -march=${CPUTYPE} 77136606Sobrien. endif # GCC on 'i386' 78136606Sobrien. if ${CPUTYPE} == "crusoe" 79127888Sdfr_ICC_CPUCFLAGS = -tpp6 -xiM 80127888Sdfr. elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \ 81126938Strhodes ${CPUTYPE} == "athlon-4" 82126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiMK 83126890Strhodes. elif ${CPUTYPE} == "athlon-tbird" || ${CPUTYPE} == "athlon" 84126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiM 85112768Sobrien. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" || ${CPUTYPE} == "k6" 86126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xi 8772878Skris. elif ${CPUTYPE} == "k5" 88126890Strhodes_ICC_CPUCFLAGS = -tpp5 89136606Sobrien. elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m" 90126890Strhodes_ICC_CPUCFLAGS = -tpp7 -xiMKW 91136606Sobrien. elif ${CPUTYPE} == "pentium3" || ${CPUTYPE} == "pentium3m" || \ 92136606Sobrien ${CPUTYPE} == "pentium-m" 93126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiMK 94136606Sobrien. elif ${CPUTYPE} == "pentium2" || ${CPUTYPE} == "pentiumpro" 95126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiM 96136606Sobrien. elif ${CPUTYPE} == "pentium-mmx" 97126890Strhodes_ICC_CPUCFLAGS = -tpp5 -xM 98136606Sobrien. elif ${CPUTYPE} == "pentium" 99126890Strhodes_ICC_CPUCFLAGS = -tpp5 100136606Sobrien. else 101126890Strhodes_ICC_CPUCFLAGS = 102136606Sobrien. endif # ICC on 'i386' 10372878Skris. elif ${MACHINE_ARCH} == "alpha" 104136606Sobrien_CPUCFLAGS = -mcpu=${CPUTYPE} 105136607Sobrien. elif ${MACHINE_ARCH} == "amd64" 106136607Sobrien_CPUCFLAGS = -march=${CPUTYPE} 107135678Scognet. elif ${MACHINE_ARCH} == "arm" 108136606Sobrien. if ${CPUTYPE} == "xscale" 109135678Scognet#XXX: gcc doesn't seem to like -mcpu=xscale, and dies while rebuilding itself 110135678Scognet#_CPUCFLAGS = -mcpu=xscale 111135678Scognet_CPUCFLAGS = -D__XSCALE__ 112136606Sobrien. else 113136606Sobrien_CPUCFLAGS = -mcpu=${CPUTYPE} 114135678Scognet. endif 11572878Skris. endif 11672878Skris 11772878Skris# Set up the list of CPU features based on the CPU type. This is an 11872878Skris# unordered list to make it easy for client makefiles to test for the 11972878Skris# presence of a CPU feature. 12072878Skris 121126657Sbde. if ${MACHINE_ARCH} == "i386" 122136607Sobrien. if ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" 123136607SobrienMACHINE_CPU = athlon-xp athlon k7 3dnow sse2 sse mmx k6 k5 i586 i486 i386 124136607Sobrien. elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \ 125125254Sbde ${CPUTYPE} == "athlon-4" 126136606SobrienMACHINE_CPU = athlon-xp athlon k7 3dnow sse mmx k6 k5 i586 i486 i386 127126657Sbde. elif ${CPUTYPE} == "athlon" || ${CPUTYPE} == "athlon-tbird" 128112768SobrienMACHINE_CPU = athlon k7 3dnow mmx k6 k5 i586 i486 i386 129126657Sbde. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" 130103045SmuxMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386 131103562Sjhb. elif ${CPUTYPE} == "k6" 13274069SsobomaxMACHINE_CPU = mmx k6 k5 i586 i486 i386 133103562Sjhb. elif ${CPUTYPE} == "k5" 13472878SkrisMACHINE_CPU = k5 i586 i486 i386 135136607Sobrien. elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m" || ${CPUTYPE} == "pentium-m" 136103045SmuxMACHINE_CPU = sse2 sse i686 mmx i586 i486 i386 137136606Sobrien. elif ${CPUTYPE} == "pentium3" || ${CPUTYPE} == "pentium3m" 13873145SkrisMACHINE_CPU = sse i686 mmx i586 i486 i386 139136606Sobrien. elif ${CPUTYPE} == "pentium2" 14074553SkrisMACHINE_CPU = i686 mmx i586 i486 i386 141136606Sobrien. elif ${CPUTYPE} == "pentiumpro" 14272878SkrisMACHINE_CPU = i686 i586 i486 i386 143136606Sobrien. elif ${CPUTYPE} == "pentium-mmx" 14473145SkrisMACHINE_CPU = mmx i586 i486 i386 145136606Sobrien. elif ${CPUTYPE} == "pentium" 14672878SkrisMACHINE_CPU = i586 i486 i386 147103562Sjhb. elif ${CPUTYPE} == "i486" 14872878SkrisMACHINE_CPU = i486 i386 149103562Sjhb. elif ${CPUTYPE} == "i386" 15072878SkrisMACHINE_CPU = i386 151103562Sjhb. endif 152103562Sjhb. elif ${MACHINE_ARCH} == "alpha" 153103562Sjhb. if ${CPUTYPE} == "ev6" 15472878SkrisMACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4 155103562Sjhb. elif ${CPUTYPE} == "pca56" 15672878SkrisMACHINE_CPU = pca56 ev56 ev5 ev45 ev4 157103562Sjhb. elif ${CPUTYPE} == "ev56" 15872878SkrisMACHINE_CPU = ev56 ev5 ev45 ev4 159103562Sjhb. elif ${CPUTYPE} == "ev5" 16072878SkrisMACHINE_CPU = ev5 ev45 ev4 161103562Sjhb. elif ${CPUTYPE} == "ev45" 16272878SkrisMACHINE_CPU = ev45 ev4 163103562Sjhb. elif ${CPUTYPE} == "ev4" 16472878SkrisMACHINE_CPU = ev4 165103562Sjhb. endif 166115175Speter. elif ${MACHINE_ARCH} == "amd64" 167136607Sobrien. if ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || ${CPUTYPE} == "k8" 168136607SobrienMACHINE_CPU = amd64 k8 athlon-mp athlon k7 3dnow sse2 sse mmx k6 k5 i586 i486 i386 169136607Sobrien. elif ${CPUTYPE} == "nocona" 170136607SobrienMACHINE_CPU = sse3 sse2 sse mmx 171136607Sobrien. endif 172103562Sjhb. elif ${MACHINE_ARCH} == "ia64" 173103562Sjhb. if ${CPUTYPE} == "itanium" 17472878SkrisMACHINE_CPU = itanium 175103562Sjhb. endif 17672878Skris. endif 17772878Skris.endif 178103561Sjhb 179112769Sobrien.if ${MACHINE_ARCH} == "alpha" 180112769Sobrien_CPUCFLAGS += -mieee 181112769Sobrien.endif 182112769Sobrien 183124347Sru# NB: COPTFLAGS is handled in /usr/src/sys/conf/kern.pre.mk 184103561Sjhb 185103561Sjhb.if !defined(NO_CPU_CFLAGS) 186126890Strhodes. if ${CC} == "icc" 187126890StrhodesCFLAGS += ${_ICC_CPUCFLAGS} 188126890Strhodes. else 189103561SjhbCFLAGS += ${_CPUCFLAGS} 190126890Strhodes. endif 191103561Sjhb.endif 192