bsd.cpu.mk revision 169820
172445Sassar# $FreeBSD: head/share/mk/bsd.cpu.mk 169820 2007-05-21 08:39:44Z cognet $ 272445Sassar 372445Sassar# Set default CPU compile flags and baseline CPUTYPE for each arch. The 472445Sassar# compile flags must support the minimum CPU type for each architecture but 572445Sassar# may tune support for more advanced processors. 672445Sassar 772445Sassar.if !defined(CPUTYPE) || empty(CPUTYPE) 872445Sassar_CPUCFLAGS = 972445Sassar. if ${MACHINE_ARCH} == "i386" 1072445SassarMACHINE_CPU = i486 1172445Sassar. elif ${MACHINE_ARCH} == "amd64" 1272445SassarMACHINE_CPU = amd64 sse2 sse 1372445Sassar. elif ${MACHINE_ARCH} == "ia64" 1472445SassarMACHINE_CPU = itanium 1572445Sassar. elif ${MACHINE_ARCH} == "sparc64" 1672445Sassar. elif ${MACHINE_ARCH} == "arm" 1772445SassarMACHINE_CPU = arm 1872445Sassar. endif 1972445Sassar.else 2072445Sassar 2172445Sassar# Handle aliases (not documented in make.conf to avoid user confusion 2272445Sassar# between e.g. i586 and pentium) 2372445Sassar 2472445Sassar. if ${MACHINE_ARCH} == "i386" 2572445Sassar. if ${CPUTYPE} == "nocona" 2672445SassarCPUTYPE = prescott 2772445Sassar. elif ${CPUTYPE} == "core" || ${CPUTYPE} == "core2" 2872445SassarCPUTYPE = prescott 2972445Sassar. elif ${CPUTYPE} == "p4" 3072445SassarCPUTYPE = pentium4 3172445Sassar. elif ${CPUTYPE} == "p4m" 3272445SassarCPUTYPE = pentium4m 3372445Sassar. elif ${CPUTYPE} == "p3" 3472445SassarCPUTYPE = pentium3 3572445Sassar. elif ${CPUTYPE} == "p3m" 3672445SassarCPUTYPE = pentium3m 3772445Sassar. elif ${CPUTYPE} == "p-m" 3872445SassarCPUTYPE = pentium-m 3972445Sassar. elif ${CPUTYPE} == "p2" 4072445SassarCPUTYPE = pentium2 4172445Sassar. elif ${CPUTYPE} == "i686" 4272445SassarCPUTYPE = pentiumpro 4372445Sassar. elif ${CPUTYPE} == "i586/mmx" 4472445SassarCPUTYPE = pentium-mmx 4572445Sassar. elif ${CPUTYPE} == "i586" 4672445SassarCPUTYPE = pentium 4772445Sassar. elif ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || \ 4872445Sassar ${CPUTYPE} == "k8" 4972445SassarCPUTYPE = athlon-mp 5072445Sassar. elif ${CPUTYPE} == "k7" 5172445SassarCPUTYPE = athlon 5272445Sassar. endif 5372445Sassar. elif ${MACHINE_ARCH} == "amd64" 5472445Sassar. if ${CPUTYPE} == "prescott" || ${CPUTYPE} == "core2" 5572445SassarCPUTYPE = nocona 5672445Sassar. endif 5772445Sassar. endif 5872445Sassar 5972445Sassar############################################################################### 6072445Sassar# Logic to set up correct gcc optimization flag. This must be included 6172445Sassar# after /etc/make.conf so it can react to the local value of CPUTYPE 6272445Sassar# defined therein. Consult: 6372445Sassar# http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html 6472445Sassar# http://gcc.gnu.org/onlinedocs/gcc/IA-64-Options.html 6572445Sassar# http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html 6672445Sassar# http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html 6772445Sassar# http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html 6872445Sassar 6972445Sassar. if ${MACHINE_ARCH} == "i386" 7072445Sassar. if ${CPUTYPE} == "crusoe" 7172445Sassar_CPUCFLAGS = -march=i686 -falign-functions=0 -falign-jumps=0 -falign-loops=0 7272445Sassar. elif ${CPUTYPE} == "k5" 7372445Sassar_CPUCFLAGS = -march=pentium 7472445Sassar. else 7572445Sassar_CPUCFLAGS = -march=${CPUTYPE} 7672445Sassar. endif # GCC on 'i386' 7772445Sassar. if ${CPUTYPE} == "crusoe" 7872445Sassar_ICC_CPUCFLAGS = -tpp6 -xiM 7972445Sassar. elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \ 8072445Sassar ${CPUTYPE} == "athlon-4" 8172445Sassar_ICC_CPUCFLAGS = -tpp6 -xiMK 8272445Sassar. elif ${CPUTYPE} == "athlon-tbird" || ${CPUTYPE} == "athlon" 8372445Sassar_ICC_CPUCFLAGS = -tpp6 -xiM 8472445Sassar. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" || ${CPUTYPE} == "k6" 8572445Sassar_ICC_CPUCFLAGS = -tpp6 -xi 8672445Sassar. elif ${CPUTYPE} == "k5" 8772445Sassar_ICC_CPUCFLAGS = -tpp5 8872445Sassar. elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m" 8972445Sassar_ICC_CPUCFLAGS = -tpp7 -xiMKW 9072445Sassar. elif ${CPUTYPE} == "pentium3" || ${CPUTYPE} == "pentium3m" || \ 9172445Sassar ${CPUTYPE} == "pentium-m" 9272445Sassar_ICC_CPUCFLAGS = -tpp6 -xiMK 9372445Sassar. elif ${CPUTYPE} == "pentium2" || ${CPUTYPE} == "pentiumpro" 9472445Sassar_ICC_CPUCFLAGS = -tpp6 -xiM 9572445Sassar. elif ${CPUTYPE} == "pentium-mmx" 9672445Sassar_ICC_CPUCFLAGS = -tpp5 -xM 9772445Sassar. elif ${CPUTYPE} == "pentium" 9872445Sassar_ICC_CPUCFLAGS = -tpp5 9972445Sassar. else 10072445Sassar_ICC_CPUCFLAGS = 10172445Sassar. endif # ICC on 'i386' 10272445Sassar. elif ${MACHINE_ARCH} == "amd64" 10372445Sassar_CPUCFLAGS = -march=${CPUTYPE} 10472445Sassar. elif ${MACHINE_ARCH} == "arm" 10572445Sassar. if ${CPUTYPE} == "xscale" 10672445Sassar_CPUCFLAGS = -mcpu=xscale 10772445Sassar. else 10872445Sassar_CPUCFLAGS = -mcpu=${CPUTYPE} 10972445Sassar. endif 11072445Sassar. endif 11172445Sassar 11272445Sassar# Set up the list of CPU features based on the CPU type. This is an 11372445Sassar# unordered list to make it easy for client makefiles to test for the 11472445Sassar# presence of a CPU feature. 11572445Sassar 11672445Sassar. if ${MACHINE_ARCH} == "i386" 11772445Sassar. if ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" 11872445SassarMACHINE_CPU = athlon-xp athlon k7 3dnow sse2 sse mmx k6 k5 i586 i486 i386 11972445Sassar. elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \ 12072445Sassar ${CPUTYPE} == "athlon-4" 12172445SassarMACHINE_CPU = athlon-xp athlon k7 3dnow sse mmx k6 k5 i586 i486 i386 12272445Sassar. elif ${CPUTYPE} == "athlon" || ${CPUTYPE} == "athlon-tbird" 12372445SassarMACHINE_CPU = athlon k7 3dnow mmx k6 k5 i586 i486 i386 12472445Sassar. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" 12572445SassarMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386 12672445Sassar. elif ${CPUTYPE} == "k6" 12772445SassarMACHINE_CPU = mmx k6 k5 i586 i486 i386 12872445Sassar. elif ${CPUTYPE} == "k5" 12972445SassarMACHINE_CPU = k5 i586 i486 i386 13072445Sassar. elif ${CPUTYPE} == "c3" 13172445SassarMACHINE_CPU = 3dnow mmx i586 i486 i386 13272445Sassar. elif ${CPUTYPE} == "c3-2" 13372445SassarMACHINE_CPU = sse mmx i586 i486 i386 13472445Sassar. elif ${CPUTYPE} == "prescott" 13572445SassarMACHINE_CPU = sse3 sse2 sse i686 mmx i586 i486 i386 13672445Sassar. elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m" || ${CPUTYPE} == "pentium-m" 13772445SassarMACHINE_CPU = sse2 sse i686 mmx i586 i486 i386 13872445Sassar. elif ${CPUTYPE} == "pentium3" || ${CPUTYPE} == "pentium3m" 13972445SassarMACHINE_CPU = sse i686 mmx i586 i486 i386 14072445Sassar. elif ${CPUTYPE} == "pentium2" 14172445SassarMACHINE_CPU = i686 mmx i586 i486 i386 14272445Sassar. elif ${CPUTYPE} == "pentiumpro" 14372445SassarMACHINE_CPU = i686 i586 i486 i386 14472445Sassar. elif ${CPUTYPE} == "pentium-mmx" 14572445SassarMACHINE_CPU = mmx i586 i486 i386 14672445Sassar. elif ${CPUTYPE} == "pentium" 14772445SassarMACHINE_CPU = i586 i486 i386 14872445Sassar. elif ${CPUTYPE} == "i486" 14972445SassarMACHINE_CPU = i486 i386 15072445Sassar. elif ${CPUTYPE} == "i386" 15172445SassarMACHINE_CPU = i386 15272445Sassar. endif 15372445Sassar. elif ${MACHINE_ARCH} == "amd64" 15472445Sassar. if ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || ${CPUTYPE} == "k8" 15572445SassarMACHINE_CPU = k8 3dnow 15672445Sassar. elif ${CPUTYPE} == "nocona" 15772445SassarMACHINE_CPU = sse3 15872445Sassar. endif 15972445SassarMACHINE_CPU += amd64 sse2 sse mmx 16072445Sassar. elif ${MACHINE_ARCH} == "ia64" 16172445Sassar. if ${CPUTYPE} == "itanium" 16272445SassarMACHINE_CPU = itanium 16372445Sassar. endif 16472445Sassar. endif 16572445Sassar.endif 16672445Sassar 16772445Sassar.if ${MACHINE_ARCH} == "arm" && defined(TARGET_BIG_ENDIAN) 16872445SassarCFLAGS += -mbig-endian 16972445SassarLDFLAGS += -mbig-endian 17072445SassarLD += -EB 17172445Sassar.endif 17272445Sassar 17372445Sassar# NB: COPTFLAGS is handled in /usr/src/sys/conf/kern.pre.mk 17472445Sassar 17572445Sassar.if !defined(NO_CPU_CFLAGS) 17672445Sassar. if ${CC} == "icc" 17772445SassarCFLAGS += ${_ICC_CPUCFLAGS} 17872445Sassar. else 17972445SassarCFLAGS += ${_CPUCFLAGS} 18072445Sassar. endif 18172445Sassar.endif 18272445Sassar