bsd.cpu.mk revision 103048
172878Skris# $FreeBSD: head/share/mk/bsd.cpu.mk 103048 2002-09-07 01:26:11Z kris $
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"
9100772Sjhb_CPUCFLAGS = -mcpu=pentiumpro
10100772SjhbCPUTYPE = i386
11100773Sjhb. elif ${MACHINE_ARCH} == "alpha"
12100772Sjhb_CPUCFLAGS = -mcpu=ev4 -mtune=ev5
13100772SjhbCPUTYPE = ev4
14100773Sjhb. elif ${MACHINE_ARCH} == "ia64"
15100772Sjhb_CPUCFLAGS =
16100772SjhbCPUTYPE = itanium
17100773Sjhb. elif ${MACHINE_ARCH} == "sparc64"
18100772Sjhb_CPUCFLAGS =
19100772SjhbCPUTYPE = ultrasparc
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"
27100773Sjhb.  if ${CPUTYPE} == "pentiumpro"
2872878SkrisCPUTYPE = i686
29100773Sjhb.  elif ${CPUTYPE} == "pentium"
3072878SkrisCPUTYPE = i586
31103045Smux.  elif ${CPUTYPE} == "k7"
32103045SmuxCPUTYPE = athlon
33100773Sjhb.  endif
3472878Skris. endif
3572878Skris
3696421Sobrien# Logic to set up correct gcc optimization flag.  This must be included
3772878Skris# after /etc/make.conf so it can react to the local value of CPUTYPE
3896421Sobrien# defined therein.  Consult:
3996421Sobrien#	http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html
4096421Sobrien#	http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html
4196421Sobrien#	http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html
4296421Sobrien#	http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html
4372878Skris
4472878Skris. if ${MACHINE_ARCH} == "i386"
45103045Smux.  if ${CPUTYPE} == "athlon-mp"
46103045Smux_CPUCFLAGS = -march=athlon-mp
47103045Smux.  elif ${CPUTYPE} == "athlon-xp"
48103045Smux_CPUCFLAGS = -march=athlon-xp
49103045Smux.  elif ${CPUTYPE} == "athlon-4"
50103045Smux_CPUCFLAGS = -march=athlon-4
51103045Smux.  elif ${CPUTYPE} == "athlon-tbird"
52103045Smux_CPUCFLAGS = -march=athlon-tbird
53103045Smux.  elif ${CPUTYPE} == "athlon"
5496419Sobrien_CPUCFLAGS = -march=athlon
55103045Smux.  elif ${CPUTYPE} == "k6-3"
56103045Smux_CPUCFLAGS = -march=k6-3
5773145Skris.  elif ${CPUTYPE} == "k6-2"
58103045Smux_CPUCFLAGS = -march=k6-2
5972878Skris.  elif ${CPUTYPE} == "k6"
6074146Skris_CPUCFLAGS = -march=k6
6172878Skris.  elif ${CPUTYPE} == "k5"
6274146Skris_CPUCFLAGS = -march=pentium
6373145Skris.  elif ${CPUTYPE} == "p4"
64103045Smux_CPUCFLAGS = -march=pentium4
6573145Skris.  elif ${CPUTYPE} == "p3"
66103045Smux_CPUCFLAGS = -march=pentium3
6773145Skris.  elif ${CPUTYPE} == "p2"
68103045Smux_CPUCFLAGS = -march=pentium2
6972878Skris.  elif ${CPUTYPE} == "i686"
7074146Skris_CPUCFLAGS = -march=pentiumpro
7173145Skris.  elif ${CPUTYPE} == "i586/mmx"
7298159Ssobomax_CPUCFLAGS = -march=pentium-mmx
7372878Skris.  elif ${CPUTYPE} == "i586"
7474146Skris_CPUCFLAGS = -march=pentium
7572878Skris.  elif ${CPUTYPE} == "i486"
7694987Sru_CPUCFLAGS = -march=i486
7772878Skris.  endif
7872878Skris. elif ${MACHINE_ARCH} == "alpha"
79103048Skris.  if ${CPUTYPE} == "ev67"
80103048Skris_CPUCFLAGS = -mcpu=ev67
81103048Skris.  elif ${CPUTYPE} == "ev6"
8274146Skris_CPUCFLAGS = -mcpu=ev6
8372878Skris.  elif ${CPUTYPE} == "pca56"
8474146Skris_CPUCFLAGS = -mcpu=pca56
8572878Skris.  elif ${CPUTYPE} == "ev56"
8674146Skris_CPUCFLAGS = -mcpu=ev56
8772878Skris.  elif ${CPUTYPE} == "ev5"
8874146Skris_CPUCFLAGS = -mcpu=ev5
8972878Skris.  elif ${CPUTYPE} == "ev45"
90103048Skris_CPUCFLAGS = -mcpu=ev45
9172878Skris.  elif ${CPUTYPE} == "ev4"
9274146Skris_CPUCFLAGS = -mcpu=ev4
9372878Skris.  endif
9472878Skris. endif
9572878Skris.endif
9672878Skris
9774146Skris# NB: COPTFLAGS is handled in /usr/src/sys/conf/Makefile.<arch>
9874146Skris
9974146Skris.if !defined(NO_CPU_CFLAGS)
10074146SkrisCFLAGS += ${_CPUCFLAGS}
10174146Skris.endif
10274146Skris
10372878Skris# Set up the list of CPU features based on the CPU type.  This is an
10472878Skris# unordered list to make it easy for client makefiles to test for the
10572878Skris# presence of a CPU feature.
10672878Skris
10772878Skris.if ${MACHINE_ARCH} == "i386"
108103045Smux. if ${CPUTYPE} == "athlon-mp"
109103045SmuxMACHINE_CPU = sse k7 3dnow mmx k6 k5 i586 i486 i386
110103045Smux. elif ${CPUTYPE} == "athlon-xp"
111103045SmuxMACHINE_CPU = sse k7 3dnow mmx k6 k5 i586 i486 i386
112103045Smux. elif ${CPUTYPE} == "athlon-4"
113103045SmuxMACHINE_CPU = sse k7 3dnow mmx k6 k5 i586 i486 i386
114103045Smux. elif ${CPUTYPE} == "athlon-tbird"
11596421SobrienMACHINE_CPU = k7 3dnow mmx k6 k5 i586 i486 i386
116103045Smux. elif ${CPUTYPE} == "athlon"
117103045SmuxMACHINE_CPU = k7 3dnow mmx k6 k5 i586 i486 i386
118103045Smux. elif ${CPUTYPE} == "k6-3"
119103045SmuxMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386
12073145Skris. elif ${CPUTYPE} == "k6-2"
12174069SsobomaxMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386
12272878Skris. elif ${CPUTYPE} == "k6"
12374069SsobomaxMACHINE_CPU = mmx k6 k5 i586 i486 i386
12472878Skris. elif ${CPUTYPE} == "k5"
12572878SkrisMACHINE_CPU = k5 i586 i486 i386
12673145Skris. elif ${CPUTYPE} == "p4"
127103045SmuxMACHINE_CPU = sse2 sse i686 mmx i586 i486 i386
12873145Skris. elif ${CPUTYPE} == "p3"
12973145SkrisMACHINE_CPU = sse i686 mmx i586 i486 i386
13073145Skris. elif ${CPUTYPE} == "p2"
13174553SkrisMACHINE_CPU = i686 mmx i586 i486 i386
13272878Skris. elif ${CPUTYPE} == "i686"
13372878SkrisMACHINE_CPU = i686 i586 i486 i386
13473145Skris. elif ${CPUTYPE} == "i586/mmx"
13573145SkrisMACHINE_CPU = mmx i586 i486 i386
13672878Skris. elif ${CPUTYPE} == "i586"
13772878SkrisMACHINE_CPU = i586 i486 i386
13872878Skris. elif ${CPUTYPE} == "i486"
13972878SkrisMACHINE_CPU = i486 i386
14072878Skris. elif ${CPUTYPE} == "i386"
14172878SkrisMACHINE_CPU = i386
14272878Skris. endif
14372878Skris.elif ${MACHINE_ARCH} == "alpha"
14472878Skris. if ${CPUTYPE} == "ev6"
14572878SkrisMACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4
14672878Skris. elif ${CPUTYPE} == "pca56"
14772878SkrisMACHINE_CPU = pca56 ev56 ev5 ev45 ev4
14872878Skris. elif ${CPUTYPE} == "ev56"
14972878SkrisMACHINE_CPU = ev56 ev5 ev45 ev4
15072878Skris. elif ${CPUTYPE} == "ev5"
15172878SkrisMACHINE_CPU = ev5 ev45 ev4
15272878Skris. elif ${CPUTYPE} == "ev45"
15372878SkrisMACHINE_CPU = ev45 ev4
15472878Skris. elif ${CPUTYPE} == "ev4"
15572878SkrisMACHINE_CPU = ev4
15672878Skris. endif
15772878Skris.elif ${MACHINE_ARCH} == "ia64"
15872878Skris. if ${CPUTYPE} == "itanium"
15972878SkrisMACHINE_CPU = itanium
16072878Skris. endif
16172878Skris.endif
162