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