TARGET_CPUTYPE should exist solely in Makefile.inc1, similar to

TARGET_ARCH and TARGET.  This is problematic when one has the =
(unconditional) type of assigment for CPUTYPE in /etc/make.conf.
(This would override what was set on the command line to "make
buildworld".)

Add a (horrible) kludge to Makefile.inc1 to check the type of
assignment for CPUTYPE (only for those who attempts to set it to
a different value).  Fix an example make.conf.  Fix the kernel's
build-tools target (aicasm only at the moment) to catch up with
bsd.cpu.mk,v 1.15 (BOOTSTRAPPING replaced with NO_CPU_CFLAGS in
Makefile.inc1's BMAKE).

Reviewed by:	jhb
This commit is contained in:
Ruslan Ermilov 2002-08-02 18:04:22 +00:00
parent 4dd8f14efb
commit 32f8ca450d
3 changed files with 11 additions and 10 deletions

View File

@ -126,11 +126,15 @@ MAKEOBJDIRPREFIX?= /usr/obj
TARGET_ARCH?= ${MACHINE_ARCH} TARGET_ARCH?= ${MACHINE_ARCH}
.if ${TARGET_ARCH} == ${MACHINE_ARCH} .if ${TARGET_ARCH} == ${MACHINE_ARCH}
TARGET?= ${MACHINE} TARGET?= ${MACHINE}
TARGET_CPUTYPE?= ${CPUTYPE} TARGET_CPUTYPE?=${CPUTYPE}
.else .else
TARGET?= ${TARGET_ARCH} TARGET?= ${TARGET_ARCH}
TARGET_CPUTYPE?= TARGET_CPUTYPE?=
.endif .endif
_CPUTYPE!= cd ${.CURDIR}; ${MAKE} CPUTYPE=${TARGET_CPUTYPE} -V CPUTYPE
.if ${_CPUTYPE} != ${TARGET_CPUTYPE}
.error CPUTYPE global should be set with ?=.
.endif
.if make(buildworld) .if make(buildworld)
BUILD_ARCH!= sysctl -n hw.machine_arch BUILD_ARCH!= sysctl -n hw.machine_arch
.if ${MACHINE_ARCH} != ${BUILD_ARCH} .if ${MACHINE_ARCH} != ${BUILD_ARCH}
@ -175,6 +179,7 @@ INSTALLTMP!= /usr/bin/mktemp -d -u -t install
CROSSENV= MAKEOBJDIRPREFIX=${OBJTREE} \ CROSSENV= MAKEOBJDIRPREFIX=${OBJTREE} \
MACHINE_ARCH=${TARGET_ARCH} \ MACHINE_ARCH=${TARGET_ARCH} \
MACHINE=${TARGET} \ MACHINE=${TARGET} \
CPUTYPE=${TARGET_CPUTYPE} \
OBJFORMAT_PATH=${WORLDTMP}/usr/libexec \ OBJFORMAT_PATH=${WORLDTMP}/usr/libexec \
GROFF_BIN_PATH=${WORLDTMP}/usr/bin \ GROFF_BIN_PATH=${WORLDTMP}/usr/bin \
GROFF_FONT_PATH=${WORLDTMP}/usr/share/groff_font \ GROFF_FONT_PATH=${WORLDTMP}/usr/share/groff_font \
@ -476,7 +481,7 @@ buildkernel:
.endif .endif
cd ${KRNLOBJDIR}/${_kernel}; \ cd ${KRNLOBJDIR}/${_kernel}; \
MAKESRCPATH=${KRNLSRCDIR}/dev/aic7xxx/aicasm \ MAKESRCPATH=${KRNLSRCDIR}/dev/aic7xxx/aicasm \
${MAKE} -DBOOTSTRAPPING -f ${KRNLSRCDIR}/dev/aic7xxx/aicasm/Makefile ${MAKE} -DNO_CPU_CFLAGS -f ${KRNLSRCDIR}/dev/aic7xxx/aicasm/Makefile
.if !defined(NO_KERNELDEPEND) .if !defined(NO_KERNELDEPEND)
cd ${KRNLOBJDIR}/${_kernel}; \ cd ${KRNLOBJDIR}/${_kernel}; \
${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} depend ${KMAKEENV} ${MAKE} KERNEL=${INSTKERNNAME} depend

View File

@ -29,7 +29,9 @@
# Alpha/AXP architecture: ev6 pca56 ev56 ev5 ev45 ev4 # Alpha/AXP architecture: ev6 pca56 ev56 ev5 ev45 ev4
# Intel ia64 architecture: itanium # Intel ia64 architecture: itanium
# #
#CPUTYPE=i686 # (?= allows to buildworld for a different CPUTYPE.)
#
#CPUTYPE?=i686
#NO_CPU_CFLAGS= true # Don't add -march=<cpu> to CFLAGS automatically #NO_CPU_CFLAGS= true # Don't add -march=<cpu> to CFLAGS automatically
#NO_CPU_COPTFLAGS=true # Don't add -march=<cpu> to COPTFLAGS automatically #NO_CPU_COPTFLAGS=true # Don't add -march=<cpu> to COPTFLAGS automatically
# #

View File

@ -1,16 +1,10 @@
# $FreeBSD$ # $FreeBSD$
# Allow TARGET_CPUTYPE to override CPUTYPE to handle the cross-build case.
.if defined(TARGET_CPUTYPE)
CPUTYPE = ${TARGET_CPUTYPE}
.endif
# Set default CPU compile flags and baseline CPUTYPE for each arch. The # Set default CPU compile flags and baseline CPUTYPE for each arch. The
# compile flags must support the minimum CPU type for each architecture but # compile flags must support the minimum CPU type for each architecture but
# may tune support for more advanced processors. # may tune support for more advanced processors.
.if !defined(CPUTYPE) || ${CPUTYPE} == "" .if !defined(CPUTYPE) || empty(CPUTYPE)
. if ${MACHINE_ARCH} == "i386" . if ${MACHINE_ARCH} == "i386"
_CPUCFLAGS = -mcpu=pentiumpro _CPUCFLAGS = -mcpu=pentiumpro
CPUTYPE = i386 CPUTYPE = i386