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