bsd.cpu.mk revision 103048
1149423Spjd# $FreeBSD: head/share/mk/bsd.cpu.mk 103048 2002-09-07 01:26:11Z kris $
2149423Spjd
3149423Spjd# Set default CPU compile flags and baseline CPUTYPE for each arch.  The
4149423Spjd# compile flags must support the minimum CPU type for each architecture but
5149423Spjd# may tune support for more advanced processors.
6149423Spjd
7149423Spjd.if !defined(CPUTYPE) || empty(CPUTYPE)
8149423Spjd. if ${MACHINE_ARCH} == "i386"
9149423Spjd_CPUCFLAGS = -mcpu=pentiumpro
10149423SpjdCPUTYPE = i386
11149423Spjd. elif ${MACHINE_ARCH} == "alpha"
12149423Spjd_CPUCFLAGS = -mcpu=ev4 -mtune=ev5
13149423SpjdCPUTYPE = ev4
14149423Spjd. elif ${MACHINE_ARCH} == "ia64"
15149423Spjd_CPUCFLAGS =
16149423SpjdCPUTYPE = itanium
17149423Spjd. elif ${MACHINE_ARCH} == "sparc64"
18149423Spjd_CPUCFLAGS =
19149423SpjdCPUTYPE = ultrasparc
20149423Spjd. endif
21149423Spjd.else
22149423Spjd
23149423Spjd# Handle aliases (not documented in make.conf to avoid user confusion
24149423Spjd# between e.g. i586 and pentium)
25149423Spjd
26149423Spjd. if ${MACHINE_ARCH} == "i386"
27149423Spjd.  if ${CPUTYPE} == "pentiumpro"
28149423SpjdCPUTYPE = i686
29149423Spjd.  elif ${CPUTYPE} == "pentium"
30149423SpjdCPUTYPE = i586
31149423Spjd.  elif ${CPUTYPE} == "k7"
32149423SpjdCPUTYPE = athlon
33149423Spjd.  endif
34149423Spjd. endif
35149423Spjd
36149423Spjd# Logic to set up correct gcc optimization flag.  This must be included
37149423Spjd# after /etc/make.conf so it can react to the local value of CPUTYPE
38149423Spjd# defined therein.  Consult:
39149423Spjd#	http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html
40149423Spjd#	http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html
41149423Spjd#	http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html
42149423Spjd#	http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html
43149423Spjd
44149423Spjd. if ${MACHINE_ARCH} == "i386"
45149423Spjd.  if ${CPUTYPE} == "athlon-mp"
46149423Spjd_CPUCFLAGS = -march=athlon-mp
47149423Spjd.  elif ${CPUTYPE} == "athlon-xp"
48149423Spjd_CPUCFLAGS = -march=athlon-xp
49149423Spjd.  elif ${CPUTYPE} == "athlon-4"
50149423Spjd_CPUCFLAGS = -march=athlon-4
51149423Spjd.  elif ${CPUTYPE} == "athlon-tbird"
52149423Spjd_CPUCFLAGS = -march=athlon-tbird
53149423Spjd.  elif ${CPUTYPE} == "athlon"
54149423Spjd_CPUCFLAGS = -march=athlon
55149423Spjd.  elif ${CPUTYPE} == "k6-3"
56149423Spjd_CPUCFLAGS = -march=k6-3
57149423Spjd.  elif ${CPUTYPE} == "k6-2"
58149423Spjd_CPUCFLAGS = -march=k6-2
59149423Spjd.  elif ${CPUTYPE} == "k6"
60149423Spjd_CPUCFLAGS = -march=k6
61149423Spjd.  elif ${CPUTYPE} == "k5"
62149423Spjd_CPUCFLAGS = -march=pentium
63149423Spjd.  elif ${CPUTYPE} == "p4"
64149423Spjd_CPUCFLAGS = -march=pentium4
65149423Spjd.  elif ${CPUTYPE} == "p3"
66149423Spjd_CPUCFLAGS = -march=pentium3
67149423Spjd.  elif ${CPUTYPE} == "p2"
68149423Spjd_CPUCFLAGS = -march=pentium2
69149423Spjd.  elif ${CPUTYPE} == "i686"
70149423Spjd_CPUCFLAGS = -march=pentiumpro
71149423Spjd.  elif ${CPUTYPE} == "i586/mmx"
72149423Spjd_CPUCFLAGS = -march=pentium-mmx
73149423Spjd.  elif ${CPUTYPE} == "i586"
74149423Spjd_CPUCFLAGS = -march=pentium
75149423Spjd.  elif ${CPUTYPE} == "i486"
76149423Spjd_CPUCFLAGS = -march=i486
77149423Spjd.  endif
78149423Spjd. elif ${MACHINE_ARCH} == "alpha"
79149423Spjd.  if ${CPUTYPE} == "ev67"
80149423Spjd_CPUCFLAGS = -mcpu=ev67
81149423Spjd.  elif ${CPUTYPE} == "ev6"
82149423Spjd_CPUCFLAGS = -mcpu=ev6
83149423Spjd.  elif ${CPUTYPE} == "pca56"
84149423Spjd_CPUCFLAGS = -mcpu=pca56
85149423Spjd.  elif ${CPUTYPE} == "ev56"
86149423Spjd_CPUCFLAGS = -mcpu=ev56
87149423Spjd.  elif ${CPUTYPE} == "ev5"
88149423Spjd_CPUCFLAGS = -mcpu=ev5
89149423Spjd.  elif ${CPUTYPE} == "ev45"
90149423Spjd_CPUCFLAGS = -mcpu=ev45
91149423Spjd.  elif ${CPUTYPE} == "ev4"
92149423Spjd_CPUCFLAGS = -mcpu=ev4
93149423Spjd.  endif
94149423Spjd. endif
95149423Spjd.endif
96149423Spjd
97149423Spjd# NB: COPTFLAGS is handled in /usr/src/sys/conf/Makefile.<arch>
98149423Spjd
99149423Spjd.if !defined(NO_CPU_CFLAGS)
100149423SpjdCFLAGS += ${_CPUCFLAGS}
101149423Spjd.endif
102149423Spjd
103149423Spjd# Set up the list of CPU features based on the CPU type.  This is an
104149423Spjd# unordered list to make it easy for client makefiles to test for the
105149423Spjd# presence of a CPU feature.
106149423Spjd
107149423Spjd.if ${MACHINE_ARCH} == "i386"
108149423Spjd. if ${CPUTYPE} == "athlon-mp"
109149423SpjdMACHINE_CPU = sse k7 3dnow mmx k6 k5 i586 i486 i386
110149423Spjd. elif ${CPUTYPE} == "athlon-xp"
111149423SpjdMACHINE_CPU = sse k7 3dnow mmx k6 k5 i586 i486 i386
112149423Spjd. elif ${CPUTYPE} == "athlon-4"
113149423SpjdMACHINE_CPU = sse k7 3dnow mmx k6 k5 i586 i486 i386
114149423Spjd. elif ${CPUTYPE} == "athlon-tbird"
115149423SpjdMACHINE_CPU = k7 3dnow mmx k6 k5 i586 i486 i386
116149423Spjd. elif ${CPUTYPE} == "athlon"
117149423SpjdMACHINE_CPU = k7 3dnow mmx k6 k5 i586 i486 i386
118149423Spjd. elif ${CPUTYPE} == "k6-3"
119149423SpjdMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386
120149423Spjd. elif ${CPUTYPE} == "k6-2"
121149423SpjdMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386
122149423Spjd. elif ${CPUTYPE} == "k6"
123149423SpjdMACHINE_CPU = mmx k6 k5 i586 i486 i386
124149423Spjd. elif ${CPUTYPE} == "k5"
125149423SpjdMACHINE_CPU = k5 i586 i486 i386
126149423Spjd. elif ${CPUTYPE} == "p4"
127149423SpjdMACHINE_CPU = sse2 sse i686 mmx i586 i486 i386
128149423Spjd. elif ${CPUTYPE} == "p3"
129149423SpjdMACHINE_CPU = sse i686 mmx i586 i486 i386
130149423Spjd. elif ${CPUTYPE} == "p2"
131149423SpjdMACHINE_CPU = i686 mmx i586 i486 i386
132149423Spjd. elif ${CPUTYPE} == "i686"
133149423SpjdMACHINE_CPU = i686 i586 i486 i386
134149423Spjd. elif ${CPUTYPE} == "i586/mmx"
135149423SpjdMACHINE_CPU = mmx i586 i486 i386
136149423Spjd. elif ${CPUTYPE} == "i586"
137149423SpjdMACHINE_CPU = i586 i486 i386
138149423Spjd. elif ${CPUTYPE} == "i486"
139149423SpjdMACHINE_CPU = i486 i386
140149423Spjd. elif ${CPUTYPE} == "i386"
141149423SpjdMACHINE_CPU = i386
142149423Spjd. endif
143149423Spjd.elif ${MACHINE_ARCH} == "alpha"
144149423Spjd. if ${CPUTYPE} == "ev6"
145149423SpjdMACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4
146149423Spjd. elif ${CPUTYPE} == "pca56"
147149423SpjdMACHINE_CPU = pca56 ev56 ev5 ev45 ev4
148149423Spjd. elif ${CPUTYPE} == "ev56"
149149423SpjdMACHINE_CPU = ev56 ev5 ev45 ev4
150149423Spjd. elif ${CPUTYPE} == "ev5"
151149423SpjdMACHINE_CPU = ev5 ev45 ev4
152149423Spjd. elif ${CPUTYPE} == "ev45"
153149423SpjdMACHINE_CPU = ev45 ev4
154149423Spjd. elif ${CPUTYPE} == "ev4"
155149423SpjdMACHINE_CPU = ev4
156149423Spjd. endif
157149423Spjd.elif ${MACHINE_ARCH} == "ia64"
158149423Spjd. if ${CPUTYPE} == "itanium"
159149423SpjdMACHINE_CPU = itanium
160149423Spjd. endif
161149423Spjd.endif
162149423Spjd