bsd.cpu.mk revision 133000
172878Skris# $FreeBSD: head/share/mk/bsd.cpu.mk 133000 2004-08-02 04:19:22Z 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) 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" 31100773Sjhb. if ${CPUTYPE} == "pentiumpro" 3272878SkrisCPUTYPE = i686 33100773Sjhb. elif ${CPUTYPE} == "pentium" 3472878SkrisCPUTYPE = i586 35103045Smux. elif ${CPUTYPE} == "k7" 36103045SmuxCPUTYPE = athlon 37100773Sjhb. endif 3872878Skris. endif 3972878Skris 4096421Sobrien# Logic to set up correct gcc optimization flag. This must be included 4172878Skris# after /etc/make.conf so it can react to the local value of CPUTYPE 4296421Sobrien# defined therein. Consult: 4396421Sobrien# http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html 44127258Smarcel# http://gcc.gnu.org/onlinedocs/gcc/IA-64-Options.html 45127258Smarcel# http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html 4696421Sobrien# http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html 47127258Smarcel# http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html 4872878Skris 4972878Skris. if ${MACHINE_ARCH} == "i386" 50127888Sdfr. if ${CPUTYPE} == "crusoe" 51133000Sobrien_CPUCFLAGS = -march=i686 -falign-functions=0 -falign-jumps=0 -falign-loops=0 52127888Sdfr_ICC_CPUCFLAGS = -tpp6 -xiM 53127888Sdfr. elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \ 54126938Strhodes ${CPUTYPE} == "athlon-4" 55133000Sobrien_CPUCFLAGS = -march=${CPUTYPE} 56126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiMK 57126890Strhodes. elif ${CPUTYPE} == "athlon-tbird" || ${CPUTYPE} == "athlon" 58126890Strhodes_CPUCFLAGS = -march=${CPUTYPE} 59126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiM 60112768Sobrien. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" || ${CPUTYPE} == "k6" 61112768Sobrien_CPUCFLAGS = -march=${CPUTYPE} 62126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xi 6372878Skris. elif ${CPUTYPE} == "k5" 64133000Sobrien_CPUCFLAGS = -march=pentium 65126890Strhodes_ICC_CPUCFLAGS = -tpp5 6673145Skris. elif ${CPUTYPE} == "p4" 67133000Sobrien_CPUCFLAGS = -march=pentium4 68126890Strhodes_ICC_CPUCFLAGS = -tpp7 -xiMKW 6973145Skris. elif ${CPUTYPE} == "p3" 70133000Sobrien_CPUCFLAGS = -march=pentium3 71126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiMK 7273145Skris. elif ${CPUTYPE} == "p2" 73133000Sobrien_CPUCFLAGS = -march=pentium2 74126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiM 7572878Skris. elif ${CPUTYPE} == "i686" 76133000Sobrien_CPUCFLAGS = -march=pentiumpro 77126890Strhodes_ICC_CPUCFLAGS = -tpp6 -xiM 7873145Skris. elif ${CPUTYPE} == "i586/mmx" 79133000Sobrien_CPUCFLAGS = -march=pentium-mmx 80126890Strhodes_ICC_CPUCFLAGS = -tpp5 -xM 8172878Skris. elif ${CPUTYPE} == "i586" 82133000Sobrien_CPUCFLAGS = -march=pentium 83126890Strhodes_ICC_CPUCFLAGS = -tpp5 8472878Skris. elif ${CPUTYPE} == "i486" 85133000Sobrien_CPUCFLAGS = -march=i486 86126890Strhodes_ICC_CPUCFLAGS = 8772878Skris. endif 8872878Skris. elif ${MACHINE_ARCH} == "alpha" 89103048Skris. if ${CPUTYPE} == "ev67" 90103048Skris_CPUCFLAGS = -mcpu=ev67 91103048Skris. elif ${CPUTYPE} == "ev6" 9274146Skris_CPUCFLAGS = -mcpu=ev6 9372878Skris. elif ${CPUTYPE} == "pca56" 9474146Skris_CPUCFLAGS = -mcpu=pca56 9572878Skris. elif ${CPUTYPE} == "ev56" 9674146Skris_CPUCFLAGS = -mcpu=ev56 9772878Skris. elif ${CPUTYPE} == "ev5" 9874146Skris_CPUCFLAGS = -mcpu=ev5 9972878Skris. elif ${CPUTYPE} == "ev45" 100103048Skris_CPUCFLAGS = -mcpu=ev45 10172878Skris. elif ${CPUTYPE} == "ev4" 10274146Skris_CPUCFLAGS = -mcpu=ev4 10372878Skris. endif 10472878Skris. endif 10572878Skris 10672878Skris# Set up the list of CPU features based on the CPU type. This is an 10772878Skris# unordered list to make it easy for client makefiles to test for the 10872878Skris# presence of a CPU feature. 10972878Skris 110126657Sbde. if ${MACHINE_ARCH} == "i386" 111126657Sbde. if ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \ 112125254Sbde ${CPUTYPE} == "athlon-4" 113112768SobrienMACHINE_CPU = athlon-xp k7 3dnow sse mmx k6 k5 i586 i486 i386 114126657Sbde. elif ${CPUTYPE} == "athlon" || ${CPUTYPE} == "athlon-tbird" 115112768SobrienMACHINE_CPU = athlon k7 3dnow mmx k6 k5 i586 i486 i386 116126657Sbde. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" 117103045SmuxMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386 118103562Sjhb. elif ${CPUTYPE} == "k6" 11974069SsobomaxMACHINE_CPU = mmx k6 k5 i586 i486 i386 120103562Sjhb. elif ${CPUTYPE} == "k5" 12172878SkrisMACHINE_CPU = k5 i586 i486 i386 122103562Sjhb. elif ${CPUTYPE} == "p4" 123103045SmuxMACHINE_CPU = sse2 sse i686 mmx i586 i486 i386 124103562Sjhb. elif ${CPUTYPE} == "p3" 12573145SkrisMACHINE_CPU = sse i686 mmx i586 i486 i386 126103562Sjhb. elif ${CPUTYPE} == "p2" 12774553SkrisMACHINE_CPU = i686 mmx i586 i486 i386 128103562Sjhb. elif ${CPUTYPE} == "i686" 12972878SkrisMACHINE_CPU = i686 i586 i486 i386 130103562Sjhb. elif ${CPUTYPE} == "i586/mmx" 13173145SkrisMACHINE_CPU = mmx i586 i486 i386 132103562Sjhb. elif ${CPUTYPE} == "i586" 13372878SkrisMACHINE_CPU = i586 i486 i386 134103562Sjhb. elif ${CPUTYPE} == "i486" 13572878SkrisMACHINE_CPU = i486 i386 136103562Sjhb. elif ${CPUTYPE} == "i386" 13772878SkrisMACHINE_CPU = i386 138103562Sjhb. endif 139103562Sjhb. elif ${MACHINE_ARCH} == "alpha" 140103562Sjhb. if ${CPUTYPE} == "ev6" 14172878SkrisMACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4 142103562Sjhb. elif ${CPUTYPE} == "pca56" 14372878SkrisMACHINE_CPU = pca56 ev56 ev5 ev45 ev4 144103562Sjhb. elif ${CPUTYPE} == "ev56" 14572878SkrisMACHINE_CPU = ev56 ev5 ev45 ev4 146103562Sjhb. elif ${CPUTYPE} == "ev5" 14772878SkrisMACHINE_CPU = ev5 ev45 ev4 148103562Sjhb. elif ${CPUTYPE} == "ev45" 14972878SkrisMACHINE_CPU = ev45 ev4 150103562Sjhb. elif ${CPUTYPE} == "ev4" 15172878SkrisMACHINE_CPU = ev4 152103562Sjhb. endif 153115175Speter. elif ${MACHINE_ARCH} == "amd64" 154115175SpeterMACHINE_CPU = amd64 sse2 sse 155103562Sjhb. elif ${MACHINE_ARCH} == "ia64" 156103562Sjhb. if ${CPUTYPE} == "itanium" 15772878SkrisMACHINE_CPU = itanium 158103562Sjhb. endif 15972878Skris. endif 16072878Skris.endif 161103561Sjhb 162112769Sobrien.if ${MACHINE_ARCH} == "alpha" 163112769Sobrien_CPUCFLAGS += -mieee 164112769Sobrien.endif 165112769Sobrien 166124347Sru# NB: COPTFLAGS is handled in /usr/src/sys/conf/kern.pre.mk 167103561Sjhb 168103561Sjhb.if !defined(NO_CPU_CFLAGS) 169126890Strhodes. if ${CC} == "icc" 170126890StrhodesCFLAGS += ${_ICC_CPUCFLAGS} 171126890Strhodes. else 172103561SjhbCFLAGS += ${_CPUCFLAGS} 173126890Strhodes. endif 174103561Sjhb.endif 175