bsd.cpu.mk revision 112768
11558Srgrimes# $FreeBSD: head/share/mk/bsd.cpu.mk 112768 2003-03-29 03:13:19Z obrien $
21558Srgrimes
31558Srgrimes# Set default CPU compile flags and baseline CPUTYPE for each arch.  The
41558Srgrimes# compile flags must support the minimum CPU type for each architecture but
51558Srgrimes# may tune support for more advanced processors.
61558Srgrimes
71558Srgrimes.if !defined(CPUTYPE) || empty(CPUTYPE)
81558Srgrimes. if ${MACHINE_ARCH} == "i386"
91558Srgrimes_CPUCFLAGS = -mcpu=pentiumpro
101558SrgrimesMACHINE_CPU = i386
111558Srgrimes. elif ${MACHINE_ARCH} == "alpha"
121558Srgrimes_CPUCFLAGS = -mcpu=ev4 -mtune=ev5
131558SrgrimesMACHINE_CPU = ev4
141558Srgrimes.elif ${MACHINE_ARCH} == "x86-64" || ${MACHINE_ARCH} == "x86_64"
151558SrgrimesMACHINE_CPU = x86-64 sse2 sse
161558Srgrimes. elif ${MACHINE_ARCH} == "ia64"
171558Srgrimes_CPUCFLAGS =
181558SrgrimesMACHINE_CPU = itanium
191558Srgrimes. elif ${MACHINE_ARCH} == "sparc64"
201558Srgrimes_CPUCFLAGS =
211558Srgrimes. endif
221558Srgrimes.else
231558Srgrimes
241558Srgrimes# Handle aliases (not documented in make.conf to avoid user confusion
251558Srgrimes# between e.g. i586 and pentium)
261558Srgrimes
271558Srgrimes. if ${MACHINE_ARCH} == "i386"
281558Srgrimes.  if ${CPUTYPE} == "pentiumpro"
291558SrgrimesCPUTYPE = i686
301558Srgrimes.  elif ${CPUTYPE} == "pentium"
311558SrgrimesCPUTYPE = i586
321558Srgrimes.  elif ${CPUTYPE} == "k7"
331558SrgrimesCPUTYPE = athlon
341558Srgrimes.  endif
351558Srgrimes. endif
361558Srgrimes
371558Srgrimes# Logic to set up correct gcc optimization flag.  This must be included
381558Srgrimes# after /etc/make.conf so it can react to the local value of CPUTYPE
391558Srgrimes# defined therein.  Consult:
401558Srgrimes#	http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html
411558Srgrimes#	http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html
421558Srgrimes#	http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html
431558Srgrimes#	http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html
4415770Swollman
4523680Speter. if ${MACHINE_ARCH} == "i386"
4615770Swollman.  if ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || ${CPUTYPE} == "athlon-4" || ${CPUTYPE} == "athlon"
4715770Swollman_CPUCFLAGS = -march=${CPUTYPE}
4824546Sdfr.  elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" || ${CPUTYPE} == "k6"
491558Srgrimes_CPUCFLAGS = -march=${CPUTYPE}
501558Srgrimes.  elif ${CPUTYPE} == "k5"
511558Srgrimes_CPUCFLAGS = -march=pentium
521558Srgrimes.  elif ${CPUTYPE} == "p4"
531558Srgrimes_CPUCFLAGS = -march=pentium4
541558Srgrimes.  elif ${CPUTYPE} == "p3"
551558Srgrimes_CPUCFLAGS = -march=pentium3
561558Srgrimes.  elif ${CPUTYPE} == "p2"
571558Srgrimes_CPUCFLAGS = -march=pentium2
581558Srgrimes.  elif ${CPUTYPE} == "i686"
591558Srgrimes_CPUCFLAGS = -march=pentiumpro
601558Srgrimes.  elif ${CPUTYPE} == "i586/mmx"
611558Srgrimes_CPUCFLAGS = -march=pentium-mmx
621558Srgrimes.  elif ${CPUTYPE} == "i586"
631558Srgrimes_CPUCFLAGS = -march=pentium
641558Srgrimes.  elif ${CPUTYPE} == "i486"
651558Srgrimes_CPUCFLAGS = -march=i486
669336Sdfr.  endif
6723680Speter. elif ${MACHINE_ARCH} == "alpha"
681558Srgrimes.  if ${CPUTYPE} == "ev67"
691558Srgrimes_CPUCFLAGS = -mcpu=ev67
701558Srgrimes.  elif ${CPUTYPE} == "ev6"
711558Srgrimes_CPUCFLAGS = -mcpu=ev6
729336Sdfr.  elif ${CPUTYPE} == "pca56"
7323680Speter_CPUCFLAGS = -mcpu=pca56
741558Srgrimes.  elif ${CPUTYPE} == "ev56"
7523680Speter_CPUCFLAGS = -mcpu=ev56
761558Srgrimes.  elif ${CPUTYPE} == "ev5"
771558Srgrimes_CPUCFLAGS = -mcpu=ev5
781558Srgrimes.  elif ${CPUTYPE} == "ev45"
791558Srgrimes_CPUCFLAGS = -mcpu=ev45
801558Srgrimes.  elif ${CPUTYPE} == "ev4"
811558Srgrimes_CPUCFLAGS = -mcpu=ev4
821558Srgrimes.  endif
831558Srgrimes. endif
841558Srgrimes
851558Srgrimes# Set up the list of CPU features based on the CPU type.  This is an
861558Srgrimes# unordered list to make it easy for client makefiles to test for the
871558Srgrimes# presence of a CPU feature.
881558Srgrimes
8915770Swollman.if ${MACHINE_ARCH} == "i386"
901558Srgrimes. if ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || ${CPUTYPE} == "athlon-4"
911558SrgrimesMACHINE_CPU = athlon-xp k7 3dnow sse mmx k6 k5 i586 i486 i386
921558Srgrimes. elif ${CPUTYPE} == "athlon" || ${CPUTYPE} == "athlon-tbird"
931558SrgrimesMACHINE_CPU = athlon k7 3dnow mmx k6 k5 i586 i486 i386
944065Swollman. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2"
954065SwollmanMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386
964065Swollman.  elif ${CPUTYPE} == "k6"
974065SwollmanMACHINE_CPU = mmx k6 k5 i586 i486 i386
984065Swollman.  elif ${CPUTYPE} == "k5"
999336SdfrMACHINE_CPU = k5 i586 i486 i386
1009336Sdfr.  elif ${CPUTYPE} == "p4"
1019336SdfrMACHINE_CPU = sse2 sse i686 mmx i586 i486 i386
1024065Swollman.  elif ${CPUTYPE} == "p3"
1034065SwollmanMACHINE_CPU = sse i686 mmx i586 i486 i386
1044065Swollman.  elif ${CPUTYPE} == "p2"
1054065SwollmanMACHINE_CPU = i686 mmx i586 i486 i386
1064065Swollman.  elif ${CPUTYPE} == "i686"
1079230SkarlMACHINE_CPU = i686 i586 i486 i386
1084065Swollman.  elif ${CPUTYPE} == "i586/mmx"
1091558SrgrimesMACHINE_CPU = mmx i586 i486 i386
1101558Srgrimes.  elif ${CPUTYPE} == "i586"
1111558SrgrimesMACHINE_CPU = i586 i486 i386
1121558Srgrimes.  elif ${CPUTYPE} == "i486"
1134065SwollmanMACHINE_CPU = i486 i386
1144065Swollman.  elif ${CPUTYPE} == "i386"
1154065SwollmanMACHINE_CPU = i386
1164065Swollman.  endif
1179336Sdfr. elif ${MACHINE_ARCH} == "alpha"
1184065Swollman.  if ${CPUTYPE} == "ev6"
1194065SwollmanMACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4
1209336Sdfr.  elif ${CPUTYPE} == "pca56"
1219336SdfrMACHINE_CPU = pca56 ev56 ev5 ev45 ev4
1229336Sdfr.  elif ${CPUTYPE} == "ev56"
1234065SwollmanMACHINE_CPU = ev56 ev5 ev45 ev4
1244065Swollman.  elif ${CPUTYPE} == "ev5"
1254065SwollmanMACHINE_CPU = ev5 ev45 ev4
1264065Swollman.  elif ${CPUTYPE} == "ev45"
1274065SwollmanMACHINE_CPU = ev45 ev4
1284065Swollman.  elif ${CPUTYPE} == "ev4"
1294065SwollmanMACHINE_CPU = ev4
1309230Skarl.  endif
1311558Srgrimes. elif ${MACHINE_ARCH} == "x86-64" || ${MACHINE_ARCH} == "x86_64"
1321558SrgrimesMACHINE_CPU = x86-64 sse2 sse
1331558Srgrimes. elif ${MACHINE_ARCH} == "ia64"
1341558Srgrimes.  if ${CPUTYPE} == "itanium"
13523680SpeterMACHINE_CPU = itanium
1361558Srgrimes.  endif
1371558Srgrimes. endif
1381558Srgrimes.endif
1391558Srgrimes
1409336Sdfr# NB: COPTFLAGS is handled in /usr/src/sys/conf/Makefile.<arch>
1411558Srgrimes
14224495Sguido.if !defined(NO_CPU_CFLAGS)
1431558SrgrimesCFLAGS += ${_CPUCFLAGS}
1441558Srgrimes.endif
1459336Sdfr