bsd.cpu.mk revision 176776
172878Skris# $FreeBSD: head/share/mk/bsd.cpu.mk 176776 2008-03-03 20:40:20Z raj $ 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 11126657Sbde. elif ${MACHINE_ARCH} == "amd64" 12115175SpeterMACHINE_CPU = amd64 sse2 sse 13100773Sjhb. elif ${MACHINE_ARCH} == "ia64" 14103560SjhbMACHINE_CPU = itanium 15176776Sraj. elif ${MACHINE_ARCH} == "powerpc" 16176776SrajMACHINE_CPU = aim 17100773Sjhb. elif ${MACHINE_ARCH} == "sparc64" 18129217Scognet. elif ${MACHINE_ARCH} == "arm" 19129217ScognetMACHINE_CPU = arm 20100773Sjhb. endif 21100772Sjhb.else 2272878Skris 2372878Skris# Handle aliases (not documented in make.conf to avoid user confusion 2472878Skris# between e.g. i586 and pentium) 2572878Skris 26100773Sjhb. if ${MACHINE_ARCH} == "i386" 27166071Sdes. if ${CPUTYPE} == "nocona" 28166071SdesCPUTYPE = prescott 29166071Sdes. elif ${CPUTYPE} == "core" || ${CPUTYPE} == "core2" 30166071SdesCPUTYPE = prescott 31136607Sobrien. elif ${CPUTYPE} == "p4" 32136606SobrienCPUTYPE = pentium4 33136606Sobrien. elif ${CPUTYPE} == "p4m" 34136606SobrienCPUTYPE = pentium4m 35136606Sobrien. elif ${CPUTYPE} == "p3" 36136606SobrienCPUTYPE = pentium3 37136606Sobrien. elif ${CPUTYPE} == "p3m" 38136606SobrienCPUTYPE = pentium3m 39136606Sobrien. elif ${CPUTYPE} == "p-m" 40136606SobrienCPUTYPE = pentium-m 41136606Sobrien. elif ${CPUTYPE} == "p2" 42136606SobrienCPUTYPE = pentium2 43136606Sobrien. elif ${CPUTYPE} == "i686" 44136606SobrienCPUTYPE = pentiumpro 45136606Sobrien. elif ${CPUTYPE} == "i586/mmx" 46136606SobrienCPUTYPE = pentium-mmx 47136606Sobrien. elif ${CPUTYPE} == "i586" 48136606SobrienCPUTYPE = pentium 49136607Sobrien. elif ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || \ 50136607Sobrien ${CPUTYPE} == "k8" 51133525SobrienCPUTYPE = athlon-mp 52103045Smux. elif ${CPUTYPE} == "k7" 53103045SmuxCPUTYPE = athlon 54100773Sjhb. endif 55136607Sobrien. elif ${MACHINE_ARCH} == "amd64" 56166072Sdes. if ${CPUTYPE} == "prescott" || ${CPUTYPE} == "core2" 57136607SobrienCPUTYPE = nocona 58136607Sobrien. endif 5972878Skris. endif 6072878Skris 61136606Sobrien############################################################################### 6296421Sobrien# Logic to set up correct gcc optimization flag. This must be included 6372878Skris# after /etc/make.conf so it can react to the local value of CPUTYPE 6496421Sobrien# defined therein. Consult: 65160536Simp# http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html 66127258Smarcel# http://gcc.gnu.org/onlinedocs/gcc/IA-64-Options.html 67127258Smarcel# http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html 6896421Sobrien# http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html 69127258Smarcel# http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html 7072878Skris 7172878Skris. if ${MACHINE_ARCH} == "i386" 72127888Sdfr. if ${CPUTYPE} == "crusoe" 73133000Sobrien_CPUCFLAGS = -march=i686 -falign-functions=0 -falign-jumps=0 -falign-loops=0 74136606Sobrien. elif ${CPUTYPE} == "k5" 75136606Sobrien_CPUCFLAGS = -march=pentium 76136606Sobrien. else 77136606Sobrien_CPUCFLAGS = -march=${CPUTYPE} 78136606Sobrien. endif # GCC on 'i386' 79136606Sobrien. if ${CPUTYPE} == "crusoe" 80127888Sdfr_ICC_CPUCFLAGS = -tpp6 -xiM 81127888Sdfr. elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \ 82126938Strhodes ${CPUTYPE} == "athlon-4" 83126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiMK 84126890Strhodes. elif ${CPUTYPE} == "athlon-tbird" || ${CPUTYPE} == "athlon" 85126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiM 86112768Sobrien. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" || ${CPUTYPE} == "k6" 87126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xi 8872878Skris. elif ${CPUTYPE} == "k5" 89126890Strhodes_ICC_CPUCFLAGS = -tpp5 90136606Sobrien. elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m" 91126890Strhodes_ICC_CPUCFLAGS = -tpp7 -xiMKW 92136606Sobrien. elif ${CPUTYPE} == "pentium3" || ${CPUTYPE} == "pentium3m" || \ 93136606Sobrien ${CPUTYPE} == "pentium-m" 94126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiMK 95136606Sobrien. elif ${CPUTYPE} == "pentium2" || ${CPUTYPE} == "pentiumpro" 96126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiM 97136606Sobrien. elif ${CPUTYPE} == "pentium-mmx" 98126890Strhodes_ICC_CPUCFLAGS = -tpp5 -xM 99136606Sobrien. elif ${CPUTYPE} == "pentium" 100126890Strhodes_ICC_CPUCFLAGS = -tpp5 101136606Sobrien. else 102126890Strhodes_ICC_CPUCFLAGS = 103136606Sobrien. endif # ICC on 'i386' 104136607Sobrien. elif ${MACHINE_ARCH} == "amd64" 105136607Sobrien_CPUCFLAGS = -march=${CPUTYPE} 106135678Scognet. elif ${MACHINE_ARCH} == "arm" 107136606Sobrien. if ${CPUTYPE} == "xscale" 108172706Scognet#XXX: gcc doesn't seem to like -mcpu=xscale, and dies while rebuilding itself 109172706Scognet#_CPUCFLAGS = -mcpu=xscale 110172706Scognet_CPUCFLAGS = -march=armv5te -D__XSCALE__ 111136606Sobrien. else 112136606Sobrien_CPUCFLAGS = -mcpu=${CPUTYPE} 113135678Scognet. endif 114176776Sraj. elif ${MACHINE_ARCH} == "powerpc" 115176776Sraj. if ${CPUTYPE} == "e500" 116176776SrajMACHINE_CPU = booke 117176776Sraj_CPUCFLAGS = -Wa,-me500 -msoft-float 118176776Sraj. endif 11972878Skris. endif 12072878Skris 12172878Skris# Set up the list of CPU features based on the CPU type. This is an 12272878Skris# unordered list to make it easy for client makefiles to test for the 12372878Skris# presence of a CPU feature. 12472878Skris 125126657Sbde. if ${MACHINE_ARCH} == "i386" 126136607Sobrien. if ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" 127136607SobrienMACHINE_CPU = athlon-xp athlon k7 3dnow sse2 sse mmx k6 k5 i586 i486 i386 128136607Sobrien. elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \ 129125254Sbde ${CPUTYPE} == "athlon-4" 130136606SobrienMACHINE_CPU = athlon-xp athlon k7 3dnow sse mmx k6 k5 i586 i486 i386 131126657Sbde. elif ${CPUTYPE} == "athlon" || ${CPUTYPE} == "athlon-tbird" 132112768SobrienMACHINE_CPU = athlon k7 3dnow mmx k6 k5 i586 i486 i386 133126657Sbde. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" 134103045SmuxMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386 135103562Sjhb. elif ${CPUTYPE} == "k6" 13674069SsobomaxMACHINE_CPU = mmx k6 k5 i586 i486 i386 137103562Sjhb. elif ${CPUTYPE} == "k5" 13872878SkrisMACHINE_CPU = k5 i586 i486 i386 139160497Sdes. elif ${CPUTYPE} == "c3" 140161259SdesMACHINE_CPU = 3dnow mmx i586 i486 i386 141160497Sdes. elif ${CPUTYPE} == "c3-2" 142160497SdesMACHINE_CPU = sse mmx i586 i486 i386 143176665Sjhb. elif ${CPUTYPE} == "c7" 144176665SjhbMACHINE_CPU = sse3 sse2 sse i686 mmx i586 i486 i386 145166071Sdes. elif ${CPUTYPE} == "prescott" 146166069SdesMACHINE_CPU = sse3 sse2 sse i686 mmx i586 i486 i386 147136607Sobrien. elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m" || ${CPUTYPE} == "pentium-m" 148103045SmuxMACHINE_CPU = sse2 sse i686 mmx i586 i486 i386 149136606Sobrien. elif ${CPUTYPE} == "pentium3" || ${CPUTYPE} == "pentium3m" 15073145SkrisMACHINE_CPU = sse i686 mmx i586 i486 i386 151136606Sobrien. elif ${CPUTYPE} == "pentium2" 15274553SkrisMACHINE_CPU = i686 mmx i586 i486 i386 153136606Sobrien. elif ${CPUTYPE} == "pentiumpro" 15472878SkrisMACHINE_CPU = i686 i586 i486 i386 155136606Sobrien. elif ${CPUTYPE} == "pentium-mmx" 15673145SkrisMACHINE_CPU = mmx i586 i486 i386 157136606Sobrien. elif ${CPUTYPE} == "pentium" 15872878SkrisMACHINE_CPU = i586 i486 i386 159103562Sjhb. elif ${CPUTYPE} == "i486" 16072878SkrisMACHINE_CPU = i486 i386 161103562Sjhb. elif ${CPUTYPE} == "i386" 16272878SkrisMACHINE_CPU = i386 163103562Sjhb. endif 164115175Speter. elif ${MACHINE_ARCH} == "amd64" 165136607Sobrien. if ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || ${CPUTYPE} == "k8" 166138685SobrienMACHINE_CPU = k8 3dnow 167166071Sdes. elif ${CPUTYPE} == "nocona" 168138685SobrienMACHINE_CPU = sse3 169136607Sobrien. endif 170138685SobrienMACHINE_CPU += amd64 sse2 sse mmx 171103562Sjhb. elif ${MACHINE_ARCH} == "ia64" 172103562Sjhb. if ${CPUTYPE} == "itanium" 17372878SkrisMACHINE_CPU = itanium 174103562Sjhb. endif 17572878Skris. endif 17672878Skris.endif 177103561Sjhb 178163513Scognet.if ${MACHINE_ARCH} == "arm" && defined(TARGET_BIG_ENDIAN) 179160534ScognetCFLAGS += -mbig-endian 180160544ScognetLDFLAGS += -mbig-endian 181160535ScognetLD += -EB 182160534Scognet.endif 183160534Scognet 184124347Sru# NB: COPTFLAGS is handled in /usr/src/sys/conf/kern.pre.mk 185103561Sjhb 186103561Sjhb.if !defined(NO_CPU_CFLAGS) 187126890Strhodes. if ${CC} == "icc" 188126890StrhodesCFLAGS += ${_ICC_CPUCFLAGS} 189126890Strhodes. else 190103561SjhbCFLAGS += ${_CPUCFLAGS} 191126890Strhodes. endif 192103561Sjhb.endif 193