bsd.cpu.mk revision 96421
172878Skris# $FreeBSD: head/share/mk/bsd.cpu.mk 96421 2002-05-11 20:18:54Z obrien $
272878Skris
372878Skris# Set default baseline values of CPUTYPE based on MACHINE_ARCH -- this is
472878Skris# the minimum CPU type we support for each architecture
572878Skris
672878Skris.if ${MACHINE_ARCH} == "i386"
772878SkrisCPUTYPE ?= i386
872878Skris.elif ${MACHINE_ARCH} == "alpha"
972878SkrisCPUTYPE ?= ev4
1072878Skris.elif ${MACHINE_ARCH} == "ia64"
1172878SkrisCPUTYPE ?= itanium
1296312Sobrien.elif ${MACHINE_ARCH} == "sparc64"
1396312SobrienCPUTYPE ?= ultrasparc
1472878Skris.endif
1572878Skris
1672878Skris# Handle aliases (not documented in make.conf to avoid user confusion
1772878Skris# between e.g. i586 and pentium)
1872878Skris
1972878Skris.if ${MACHINE_ARCH} == "i386"
2072878Skris. if ${CPUTYPE} == "pentiumpro"
2172878SkrisCPUTYPE = i686
2272878Skris. elif ${CPUTYPE} == "pentium"
2372878SkrisCPUTYPE = i586
2472878Skris. elif ${CPUTYPE} == "athlon"
2596421SobrienCPUTYPE = k7
2672878Skris. endif
2772878Skris.endif
2872878Skris
2996421Sobrien# Logic to set up correct gcc optimization flag.  This must be included
3072878Skris# after /etc/make.conf so it can react to the local value of CPUTYPE
3196421Sobrien# defined therein.  Consult:
3296421Sobrien#	http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html
3396421Sobrien#	http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html
3496421Sobrien#	http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html
3596421Sobrien#	http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html
3672878Skris
3774146Skris.if !defined(NO_CPU_CFLAGS) || !defined(NO_CPU_COPTFLAGS)
3872878Skris. if ${MACHINE_ARCH} == "i386"
3996421Sobrien.  if ${CPUTYPE} == "k7"
4096419Sobrien_CPUCFLAGS = -march=athlon
4173145Skris.  elif ${CPUTYPE} == "k6-2"
4274146Skris_CPUCFLAGS = -march=k6
4372878Skris.  elif ${CPUTYPE} == "k6"
4474146Skris_CPUCFLAGS = -march=k6
4572878Skris.  elif ${CPUTYPE} == "k5"
4674146Skris_CPUCFLAGS = -march=pentium
4773145Skris.  elif ${CPUTYPE} == "p4"
4874146Skris_CPUCFLAGS = -march=pentiumpro
4973145Skris.  elif ${CPUTYPE} == "p3"
5074146Skris_CPUCFLAGS = -march=pentiumpro
5173145Skris.  elif ${CPUTYPE} == "p2"
5274146Skris_CPUCFLAGS = -march=pentiumpro
5372878Skris.  elif ${CPUTYPE} == "i686"
5474146Skris_CPUCFLAGS = -march=pentiumpro
5573145Skris.  elif ${CPUTYPE} == "i586/mmx"
5674146Skris_CPUCFLAGS = -march=pentium
5772878Skris.  elif ${CPUTYPE} == "i586"
5874146Skris_CPUCFLAGS = -march=pentium
5972878Skris.  elif ${CPUTYPE} == "i486"
6094987Sru_CPUCFLAGS = -march=i486
6172878Skris.  endif
6272878Skris. elif ${MACHINE_ARCH} == "alpha"
6372878Skris.  if ${CPUTYPE} == "ev6"
6474146Skris_CPUCFLAGS = -mcpu=ev6
6572878Skris.  elif ${CPUTYPE} == "pca56"
6674146Skris_CPUCFLAGS = -mcpu=pca56
6772878Skris.  elif ${CPUTYPE} == "ev56"
6874146Skris_CPUCFLAGS = -mcpu=ev56
6972878Skris.  elif ${CPUTYPE} == "ev5"
7074146Skris_CPUCFLAGS = -mcpu=ev5
7172878Skris.  elif ${CPUTYPE} == "ev45"
7274146Skris_CPUCFLAGS = -mcpu=ev4		# No -mcpu=ev45 for gcc
7372878Skris.  elif ${CPUTYPE} == "ev4"
7474146Skris_CPUCFLAGS = -mcpu=ev4
7572878Skris.  endif
7672878Skris. endif
7772878Skris.endif
7872878Skris
7974146Skris# NB: COPTFLAGS is handled in /usr/src/sys/conf/Makefile.<arch>
8074146Skris
8174146Skris.if !defined(NO_CPU_CFLAGS)
8274146SkrisCFLAGS += ${_CPUCFLAGS}
8374146Skris.endif
8474146Skris
8572878Skris# Set up the list of CPU features based on the CPU type.  This is an
8672878Skris# unordered list to make it easy for client makefiles to test for the
8772878Skris# presence of a CPU feature.
8872878Skris
8972878Skris.if ${MACHINE_ARCH} == "i386"
9096421Sobrien. if ${CPUTYPE} == "k7"
9196421SobrienMACHINE_CPU = k7 3dnow mmx k6 k5 i586 i486 i386
9273145Skris. elif ${CPUTYPE} == "k6-2"
9374069SsobomaxMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386
9472878Skris. elif ${CPUTYPE} == "k6"
9574069SsobomaxMACHINE_CPU = mmx k6 k5 i586 i486 i386
9672878Skris. elif ${CPUTYPE} == "k5"
9772878SkrisMACHINE_CPU = k5 i586 i486 i386
9873145Skris. elif ${CPUTYPE} == "p4"
9973145SkrisMACHINE_CPU = sse i686 mmx i586 i486 i386
10073145Skris. elif ${CPUTYPE} == "p3"
10173145SkrisMACHINE_CPU = sse i686 mmx i586 i486 i386
10273145Skris. elif ${CPUTYPE} == "p2"
10374553SkrisMACHINE_CPU = i686 mmx i586 i486 i386
10472878Skris. elif ${CPUTYPE} == "i686"
10572878SkrisMACHINE_CPU = i686 i586 i486 i386
10673145Skris. elif ${CPUTYPE} == "i586/mmx"
10773145SkrisMACHINE_CPU = mmx i586 i486 i386
10872878Skris. elif ${CPUTYPE} == "i586"
10972878SkrisMACHINE_CPU = i586 i486 i386
11072878Skris. elif ${CPUTYPE} == "i486"
11172878SkrisMACHINE_CPU = i486 i386
11272878Skris. elif ${CPUTYPE} == "i386"
11372878SkrisMACHINE_CPU = i386
11472878Skris. endif
11572878Skris.elif ${MACHINE_ARCH} == "alpha"
11672878Skris. if ${CPUTYPE} == "ev6"
11772878SkrisMACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4
11872878Skris. elif ${CPUTYPE} == "pca56"
11972878SkrisMACHINE_CPU = pca56 ev56 ev5 ev45 ev4
12072878Skris. elif ${CPUTYPE} == "ev56"
12172878SkrisMACHINE_CPU = ev56 ev5 ev45 ev4
12272878Skris. elif ${CPUTYPE} == "ev5"
12372878SkrisMACHINE_CPU = ev5 ev45 ev4
12472878Skris. elif ${CPUTYPE} == "ev45"
12572878SkrisMACHINE_CPU = ev45 ev4
12672878Skris. elif ${CPUTYPE} == "ev4"
12772878SkrisMACHINE_CPU = ev4
12872878Skris. endif
12972878Skris.elif ${MACHINE_ARCH} == "ia64"
13072878Skris. if ${CPUTYPE} == "itanium"
13172878SkrisMACHINE_CPU = itanium
13272878Skris. endif
13372878Skris.endif
134