bsd.cpu.mk revision 96680
121769Sjkh# $FreeBSD: head/share/mk/bsd.cpu.mk 96680 2002-05-15 18:16:43Z obrien $
221769Sjkh
321769Sjkh# Set default baseline values of CPUTYPE based on MACHINE_ARCH -- this is
421769Sjkh# the minimum CPU type we support for each architecture
521769Sjkh
621769Sjkh.if ${MACHINE_ARCH} == "i386"
721769SjkhCPUTYPE ?= i386
821769Sjkh.elif ${MACHINE_ARCH} == "alpha"
921769SjkhCPUTYPE ?= ev5
1021769Sjkh.elif ${MACHINE_ARCH} == "ia64"
1121769SjkhCPUTYPE ?= itanium
1221769Sjkh.elif ${MACHINE_ARCH} == "sparc64"
1321769SjkhCPUTYPE ?= ultrasparc
1421769Sjkh.endif
1521769Sjkh
1621769Sjkh# Handle aliases (not documented in make.conf to avoid user confusion
1721769Sjkh# between e.g. i586 and pentium)
1821769Sjkh
1921769Sjkh.if ${MACHINE_ARCH} == "i386"
2021769Sjkh. if ${CPUTYPE} == "pentiumpro"
2121769SjkhCPUTYPE = i686
2221769Sjkh. elif ${CPUTYPE} == "pentium"
2321769SjkhCPUTYPE = i586
2421769Sjkh. elif ${CPUTYPE} == "athlon"
2521769SjkhCPUTYPE = k7
2629877Smsmith. endif
2750477Speter.endif
2852286Smdodd
2952286Smdodd# Logic to set up correct gcc optimization flag.  This must be included
3052286Smdodd# after /etc/make.conf so it can react to the local value of CPUTYPE
3121769Sjkh# defined therein.  Consult:
3221769Sjkh#	http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html
3321769Sjkh#	http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html
3429877Smsmith#	http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html
3521769Sjkh#	http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html
3621769Sjkh
3721769Sjkh.if !defined(NO_CPU_CFLAGS) || !defined(NO_CPU_COPTFLAGS)
3821769Sjkh. if ${MACHINE_ARCH} == "i386"
3921769Sjkh.  if ${CPUTYPE} == "k7"
4021769Sjkh_CPUCFLAGS = -march=athlon
4121769Sjkh.  elif ${CPUTYPE} == "k6-2"
4221769Sjkh_CPUCFLAGS = -march=k6
4321769Sjkh.  elif ${CPUTYPE} == "k6"
4421769Sjkh_CPUCFLAGS = -march=k6
4552286Smdodd.  elif ${CPUTYPE} == "k5"
4621769Sjkh_CPUCFLAGS = -march=pentium
4724204Sbde.  elif ${CPUTYPE} == "p4"
4821769Sjkh_CPUCFLAGS = -march=pentiumpro
4921769Sjkh.  elif ${CPUTYPE} == "p3"
5021769Sjkh_CPUCFLAGS = -march=pentiumpro
5152286Smdodd.  elif ${CPUTYPE} == "p2"
5252286Smdodd_CPUCFLAGS = -march=pentiumpro
5352286Smdodd.  elif ${CPUTYPE} == "i686"
5452286Smdodd_CPUCFLAGS = -march=pentiumpro
5552286Smdodd.  elif ${CPUTYPE} == "i586/mmx"
5652286Smdodd_CPUCFLAGS = -march=pentium
5752286Smdodd.  elif ${CPUTYPE} == "i586"
5850026Smdodd_CPUCFLAGS = -march=pentium
5921769Sjkh.  elif ${CPUTYPE} == "i486"
6021769Sjkh_CPUCFLAGS = -march=i486
6150026Smdodd.  endif
6250026Smdodd. elif ${MACHINE_ARCH} == "alpha"
6350026Smdodd.  if ${CPUTYPE} == "ev6"
6421769Sjkh_CPUCFLAGS = -mcpu=ev6
6521769Sjkh.  elif ${CPUTYPE} == "pca56"
6621769Sjkh_CPUCFLAGS = -mcpu=pca56
6721769Sjkh.  elif ${CPUTYPE} == "ev56"
6852286Smdodd_CPUCFLAGS = -mcpu=ev56
6952286Smdodd.  elif ${CPUTYPE} == "ev5"
7052286Smdodd_CPUCFLAGS = -mcpu=ev5
7121769Sjkh.  elif ${CPUTYPE} == "ev45"
7221769Sjkh_CPUCFLAGS = -mcpu=ev4		# No -mcpu=ev45 for gcc
7321769Sjkh.  elif ${CPUTYPE} == "ev4"
7452286Smdodd_CPUCFLAGS = -mcpu=ev4
7552286Smdodd.  endif
7652286Smdodd. endif
7752286Smdodd.endif
7821769Sjkh
7921769Sjkh# NB: COPTFLAGS is handled in /usr/src/sys/conf/Makefile.<arch>
8052286Smdodd
8121769Sjkh.if !defined(NO_CPU_CFLAGS)
8252286SmdoddCFLAGS += ${_CPUCFLAGS}
8321769Sjkh.endif
8421769Sjkh
8521769Sjkh# Set up the list of CPU features based on the CPU type.  This is an
8621769Sjkh# unordered list to make it easy for client makefiles to test for the
8721769Sjkh# presence of a CPU feature.
8821769Sjkh
8952286Smdodd.if ${MACHINE_ARCH} == "i386"
9052286Smdodd. if ${CPUTYPE} == "k7"
9152286SmdoddMACHINE_CPU = k7 3dnow mmx k6 k5 i586 i486 i386
9221769Sjkh. elif ${CPUTYPE} == "k6-2"
9352286SmdoddMACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386
9452286Smdodd. elif ${CPUTYPE} == "k6"
9552286SmdoddMACHINE_CPU = mmx k6 k5 i586 i486 i386
9652286Smdodd. elif ${CPUTYPE} == "k5"
9752286SmdoddMACHINE_CPU = k5 i586 i486 i386
9852286Smdodd. elif ${CPUTYPE} == "p4"
9952286SmdoddMACHINE_CPU = sse i686 mmx i586 i486 i386
10052286Smdodd. elif ${CPUTYPE} == "p3"
10152286SmdoddMACHINE_CPU = sse i686 mmx i586 i486 i386
10252286Smdodd. elif ${CPUTYPE} == "p2"
10352286SmdoddMACHINE_CPU = i686 mmx i586 i486 i386
10452286Smdodd. elif ${CPUTYPE} == "i686"
10552286SmdoddMACHINE_CPU = i686 i586 i486 i386
10652286Smdodd. elif ${CPUTYPE} == "i586/mmx"
10752286SmdoddMACHINE_CPU = mmx i586 i486 i386
10852286Smdodd. elif ${CPUTYPE} == "i586"
10952286SmdoddMACHINE_CPU = i586 i486 i386
11052286Smdodd. elif ${CPUTYPE} == "i486"
11152286SmdoddMACHINE_CPU = i486 i386
11252286Smdodd. elif ${CPUTYPE} == "i386"
11352286SmdoddMACHINE_CPU = i386
11452286Smdodd. endif
11552286Smdodd.elif ${MACHINE_ARCH} == "alpha"
11652286Smdodd. if ${CPUTYPE} == "ev6"
11752286SmdoddMACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4
11852286Smdodd. elif ${CPUTYPE} == "pca56"
11952286SmdoddMACHINE_CPU = pca56 ev56 ev5 ev45 ev4
12052286Smdodd. elif ${CPUTYPE} == "ev56"
12152286SmdoddMACHINE_CPU = ev56 ev5 ev45 ev4
12252286Smdodd. elif ${CPUTYPE} == "ev5"
12352286SmdoddMACHINE_CPU = ev5 ev45 ev4
12452286Smdodd. elif ${CPUTYPE} == "ev45"
12552286SmdoddMACHINE_CPU = ev45 ev4
12621769Sjkh. elif ${CPUTYPE} == "ev4"
12721769SjkhMACHINE_CPU = ev4
12852286Smdodd. endif
12952286Smdodd.elif ${MACHINE_ARCH} == "ia64"
13052286Smdodd. if ${CPUTYPE} == "itanium"
13152286SmdoddMACHINE_CPU = itanium
13221769Sjkh. endif
13352286Smdodd.endif
13452286Smdodd