Move the architecture guessing from Makefile.inc1 to Makefile. We

need to do this because variables specified on the command line
override those specified in the Makefile.  This is why we also moved
from TARGET to _TARGET in Makefile, and then set TARGET on the command
line when we fork a submake with Makefile.inc1.

This makes mips/mips work again, even without the workaround committed to
lib/libc/Makefile.
This commit is contained in:
Warner Losh 2011-01-31 15:17:47 +00:00
parent 493d8e5a83
commit fda074e41d
2 changed files with 33 additions and 28 deletions

View File

@ -126,6 +126,38 @@ BINMAKE= \
-m ${.CURDIR}/share/mk -m ${.CURDIR}/share/mk
_MAKE= PATH=${PATH} ${BINMAKE} -f Makefile.inc1 _MAKE= PATH=${PATH} ${BINMAKE} -f Makefile.inc1
# Guess machine architecture from machine type, and vice versa.
.if !defined(TARGET_ARCH) && defined(TARGET)
_TARGET_ARCH= ${TARGET:S/pc98/i386/:S/sun4v/sparc64/:S/mips/mipsel/}
.elif !defined(TARGET) && defined(TARGET_ARCH) && \
${TARGET_ARCH} != ${MACHINE_ARCH}
_TARGET= ${TARGET_ARCH:C/mips.*e[lb]/mips/:C/armeb/arm/}
.endif
# Legacy names, for a transition period mips:mips -> mipsel:mips
.if defined(TARGET) && defined(TARGET_ARCH) && \
${TARGET_ARCH} == "mips" && ${TARGET} == "mips"
.warning "TARGET_ARCH of mips is deprecated in favor of mipsel or mipseb"
.if defined(TARGET_BIG_ENDIAN)
_TARGET_ARCH=mipseb
.else
_TARGET_ARCH=mipsel
.endif
.endif
# arm with TARGET_BIG_ENDIAN -> armeb
.if defined(TARGET_ARCH) && ${TARGET_ARCH} == "arm" && defined(TARGET_BIG_ENDIAN)
.warning "TARGET_ARCH of arm with TARGET_BIG_ENDIAN is deprecated. use armeb"
_TARGET_ARCH=armeb
.endif
.if defined(TARGET) && !defined(_TARGET)
_TARGET=${TARGET}
.endif
.if defined(TARGET_ARCH) && !defined(_TARGET_ARCH)
_TARGET_ARCH=${TARGET_ARCH}
.endif
# Otherwise, default to current machine type and architecture.
_TARGET?= ${MACHINE}
_TARGET_ARCH?= ${MACHINE_ARCH}
# #
# Make sure we have an up-to-date make(1). Only world and buildworld # Make sure we have an up-to-date make(1). Only world and buildworld
# should do this as those are the initial targets used for upgrades. # should do this as those are the initial targets used for upgrades.
@ -173,8 +205,7 @@ cleanworld:
# #
${TGTS}: ${TGTS}:
${_+_}@cd ${.CURDIR}; \ ${_+_}cd ${.CURDIR}; ${_MAKE} TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} ${.TARGET}
${_MAKE} ${.TARGET}
# Set a reasonable default # Set a reasonable default
.MAIN: all .MAIN: all

View File

@ -116,32 +116,6 @@ VERSION!= uname -srp
VERSION+= ${OSRELDATE} VERSION+= ${OSRELDATE}
.endif .endif
# Guess machine architecture from machine type, and vice versa.
.if !defined(TARGET_ARCH) && defined(TARGET)
TARGET_ARCH= ${TARGET:S/pc98/i386/:S/sun4v/sparc64/:S/mips/mipsel/}
.elif !defined(TARGET) && defined(TARGET_ARCH) && \
${TARGET_ARCH} != ${MACHINE_ARCH}
TARGET= ${TARGET_ARCH:C/mips.*e[lb]/mips/:C/armeb/arm/}
.endif
# Legacy names, for a transition period mips:mips -> mipsel:mips
.if defined(TARGET) && defined(TARGET_ARCH) && \
${TARGET_ARCH} == "mips" && ${TARGET} == "mips"
.warning "TARGET_ARCH of mips is deprecated in favor of mipsel or mipseb"
.if defined(TARGET_BIG_ENDIAN)
TARGET_ARCH=mipseb
.else
TARGET_ARCH=mipsel
.endif
.endif
# arm with TARGET_BIG_ENDIAN -> armeb
.if defined(TARGET_ARCH) && ${TARGET_ARCH} == "arm" && defined(TARGET_BIG_ENDIAN)
.warning "TARGET_ARCH of arm with TARGET_BIG_ENDIAN is deprecated. use armeb"
TARGET_ARCH=armeb
.endif
# Otherwise, default to current machine type and architecture.
TARGET?= ${MACHINE}
TARGET_ARCH?= ${MACHINE_ARCH}
KNOWN_ARCHES?= amd64 arm armeb/arm i386 i386/pc98 ia64 mipsel/mips mipseb/mips mips64el/mips mips64eb/mips mipsn32el/mips mipsn32eb/mips powerpc powerpc64/powerpc sparc64 sparc64/sun4v KNOWN_ARCHES?= amd64 arm armeb/arm i386 i386/pc98 ia64 mipsel/mips mipseb/mips mips64el/mips mips64eb/mips mipsn32el/mips mipsn32eb/mips powerpc powerpc64/powerpc sparc64 sparc64/sun4v
.if ${TARGET} == ${TARGET_ARCH} .if ${TARGET} == ${TARGET_ARCH}
_t= ${TARGET} _t= ${TARGET}