svn commit: r218130 - head

Rob Farmer rfarmer at predatorlabs.net
Wed Feb 2 20:20:53 UTC 2011


On Mon, Jan 31, 2011 at 7:17 AM, Warner Losh <imp at freebsd.org> wrote:
> Author: imp
> Date: Mon Jan 31 15:17:47 2011
> New Revision: 218130
> URL: http://svn.freebsd.org/changeset/base/218130
>
> Log:
>  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.
>
> Modified:
>  head/Makefile
>  head/Makefile.inc1
>
> Modified: head/Makefile
> ==============================================================================
> --- head/Makefile       Mon Jan 31 11:50:11 2011        (r218129)
> +++ head/Makefile       Mon Jan 31 15:17:47 2011        (r218130)
> @@ -126,6 +126,38 @@ BINMAKE= \
>        -m ${.CURDIR}/share/mk
>  _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
>  # should do this as those are the initial targets used for upgrades.
> @@ -173,8 +205,7 @@ cleanworld:
>  #
>
>  ${TGTS}:
> -       ${_+_}@cd ${.CURDIR}; \
> -               ${_MAKE} ${.TARGET}
> +       ${_+_}cd ${.CURDIR}; ${_MAKE} TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} ${.TARGET}
>
>  # Set a reasonable default
>  .MAIN: all
>
> Modified: head/Makefile.inc1
> ==============================================================================
> --- head/Makefile.inc1  Mon Jan 31 11:50:11 2011        (r218129)
> +++ head/Makefile.inc1  Mon Jan 31 15:17:47 2011        (r218130)
> @@ -116,32 +116,6 @@ VERSION!=  uname -srp
>  VERSION+=      ${OSRELDATE}
>  .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
>  .if ${TARGET} == ${TARGET_ARCH}
>  _t=            ${TARGET}
> _______________________________________________
> svn-src-head at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe at freebsd.org"
>

Hello,

This breaks "make world" as used by ports tinderbox:

[rfarmer at turquoise] /usr/src# env DESTDIR=/tmp/world make -DNO_CLEAN world
--------------------------------------------------------------
>>> make world started on Wed Feb  2 11:45:08 PST 2011
--------------------------------------------------------------
"/usr/src/Makefile.inc1", line 120: Malformed conditional (${TARGET}
== ${TARGET_ARCH})
"/usr/src/Makefile.inc1", line 122: if-less else
"/usr/src/Makefile.inc1", line 124: if-less endif
"/usr/src/Makefile.inc1", line 127: Unknown target :.
*** Error code 1

Stop in /usr/src.

-- 
Rob Farmer


More information about the svn-src-head mailing list