bsd.cpu.mk revision 97661
1229997Sken# $FreeBSD: head/share/mk/bsd.cpu.mk 97661 2002-05-31 12:50:24Z ru $
2229997Sken
3229997Sken# Set default baseline values of CPUTYPE based on MACHINE_ARCH -- this is
4232604Strasz# the minimum CPU type we support for each architecture
5229997Sken
6229997Sken.if ${MACHINE_ARCH} == "i386"
7232604StraszCPUTYPE ?= i386
8232604Strasz.elif ${MACHINE_ARCH} == "alpha"
9232604StraszCPUTYPE ?= ev5
10229997Sken.elif ${MACHINE_ARCH} == "ia64"
11229997SkenCPUTYPE ?= itanium
12229997Sken.elif ${MACHINE_ARCH} == "sparc64"
13229997SkenCPUTYPE ?= ultrasparc
14229997Sken.endif
15229997Sken
16229997Sken# Handle aliases (not documented in make.conf to avoid user confusion
17229997Sken# between e.g. i586 and pentium)
18229997Sken
19229997Sken.if ${MACHINE_ARCH} == "i386"
20229997Sken. if ${CPUTYPE} == "pentiumpro"
21229997SkenCPUTYPE = i686
22229997Sken. elif ${CPUTYPE} == "pentium"
23229997SkenCPUTYPE = i586
24229997Sken. elif ${CPUTYPE} == "athlon"
25229997SkenCPUTYPE = k7
26229997Sken. endif
27229997Sken.endif
28229997Sken
29229997Sken# Logic to set up correct gcc optimization flag.  This must be included
30229997Sken# after /etc/make.conf so it can react to the local value of CPUTYPE
31229997Sken# defined therein.  Consult:
32229997Sken#	http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html
33229997Sken#	http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html
34229997Sken#	http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html
35229997Sken#	http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html
36229997Sken
37229997Sken.if !defined(NO_CPU_CFLAGS) || !defined(NO_CPU_COPTFLAGS)
38229997Sken. if ${MACHINE_ARCH} == "i386"
39229997Sken.  if ${CPUTYPE} == "k7"
40229997Sken.   if defined(BOOTSTRAPPING)
41229997Sken_CPUCFLAGS = -march=k6		# gcc 2.95.x didn't support athlon
42229997Sken.   else
43229997Sken_CPUCFLAGS = -march=athlon
44229997Sken.   endif
45229997Sken.  elif ${CPUTYPE} == "k6-2"
46229997Sken_CPUCFLAGS = -march=k6
47229997Sken.  elif ${CPUTYPE} == "k6"
48229997Sken_CPUCFLAGS = -march=k6
49229997Sken.  elif ${CPUTYPE} == "k5"
50229997Sken_CPUCFLAGS = -march=pentium
51229997Sken.  elif ${CPUTYPE} == "p4"
52264274Smav_CPUCFLAGS = -march=pentiumpro
53229997Sken.  elif ${CPUTYPE} == "p3"
54229997Sken_CPUCFLAGS = -march=pentiumpro
55229997Sken.  elif ${CPUTYPE} == "p2"
56229997Sken_CPUCFLAGS = -march=pentiumpro
57229997Sken.  elif ${CPUTYPE} == "i686"
58229997Sken_CPUCFLAGS = -march=pentiumpro
59229997Sken.  elif ${CPUTYPE} == "i586/mmx"
60229997Sken_CPUCFLAGS = -march=pentium
61229997Sken.  elif ${CPUTYPE} == "i586"
62229997Sken_CPUCFLAGS = -march=pentium
63229997Sken.  elif ${CPUTYPE} == "i486"
64229997Sken_CPUCFLAGS = -march=i486
65229997Sken.  endif
66229997Sken. elif ${MACHINE_ARCH} == "alpha"
67229997Sken.  if ${CPUTYPE} == "ev6"
68229997Sken_CPUCFLAGS = -mcpu=ev6
69229997Sken.  elif ${CPUTYPE} == "pca56"
70229997Sken_CPUCFLAGS = -mcpu=pca56
71275474Smav.  elif ${CPUTYPE} == "ev56"
72229997Sken_CPUCFLAGS = -mcpu=ev56
73229997Sken.  elif ${CPUTYPE} == "ev5"
74229997Sken_CPUCFLAGS = -mcpu=ev5
75229997Sken.  elif ${CPUTYPE} == "ev45"
76229997Sken_CPUCFLAGS = -mcpu=ev4		# No -mcpu=ev45 for gcc
77229997Sken.  elif ${CPUTYPE} == "ev4"
78229997Sken_CPUCFLAGS = -mcpu=ev4
79229997Sken.  endif
80229997Sken. endif
81229997Sken.endif
82229997Sken
83229997Sken# NB: COPTFLAGS is handled in /usr/src/sys/conf/Makefile.<arch>
84229997Sken
85229997Sken.if !defined(NO_CPU_CFLAGS)
86229997SkenCFLAGS += ${_CPUCFLAGS}
87229997Sken.endif
88229997Sken
89229997Sken# Set up the list of CPU features based on the CPU type.  This is an
90229997Sken# unordered list to make it easy for client makefiles to test for the
91229997Sken# presence of a CPU feature.
92229997Sken
93264886Smav.if ${MACHINE_ARCH} == "i386"
94264886Smav. if ${CPUTYPE} == "k7"
95229997SkenMACHINE_CPU = k7 3dnow mmx k6 k5 i586 i486 i386
96267537Smav. elif ${CPUTYPE} == "k6-2"
97267537SmavMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386
98264886Smav. elif ${CPUTYPE} == "k6"
99267537SmavMACHINE_CPU = mmx k6 k5 i586 i486 i386
100267537Smav. elif ${CPUTYPE} == "k5"
101229997SkenMACHINE_CPU = k5 i586 i486 i386
102229997Sken. elif ${CPUTYPE} == "p4"
103229997SkenMACHINE_CPU = sse i686 mmx i586 i486 i386
104229997Sken. elif ${CPUTYPE} == "p3"
105229997SkenMACHINE_CPU = sse i686 mmx i586 i486 i386
106229997Sken. elif ${CPUTYPE} == "p2"
107229997SkenMACHINE_CPU = i686 mmx i586 i486 i386
108229997Sken. elif ${CPUTYPE} == "i686"
109267519SmavMACHINE_CPU = i686 i586 i486 i386
110267519Smav. elif ${CPUTYPE} == "i586/mmx"
111267537SmavMACHINE_CPU = mmx i586 i486 i386
112267537Smav. elif ${CPUTYPE} == "i586"
113267519SmavMACHINE_CPU = i586 i486 i386
114229997Sken. elif ${CPUTYPE} == "i486"
115229997SkenMACHINE_CPU = i486 i386
116229997Sken. elif ${CPUTYPE} == "i386"
117229997SkenMACHINE_CPU = i386
118229997Sken. endif
119229997Sken.elif ${MACHINE_ARCH} == "alpha"
120229997Sken. if ${CPUTYPE} == "ev6"
121229997SkenMACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4
122229997Sken. elif ${CPUTYPE} == "pca56"
123229997SkenMACHINE_CPU = pca56 ev56 ev5 ev45 ev4
124229997Sken. elif ${CPUTYPE} == "ev56"
125229997SkenMACHINE_CPU = ev56 ev5 ev45 ev4
126229997Sken. elif ${CPUTYPE} == "ev5"
127229997SkenMACHINE_CPU = ev5 ev45 ev4
128229997Sken. elif ${CPUTYPE} == "ev45"
129229997SkenMACHINE_CPU = ev45 ev4
130229997Sken. elif ${CPUTYPE} == "ev4"
131229997SkenMACHINE_CPU = ev4
132229997Sken. endif
133229997Sken.elif ${MACHINE_ARCH} == "ia64"
134229997Sken. if ${CPUTYPE} == "itanium"
135229997SkenMACHINE_CPU = itanium
136229997Sken. endif
137229997Sken.endif
138229997Sken