Re: [PATCH] Add a 'make toolchains' target

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
Date: Thu, 10 Feb 2011 13:22:00 +0000 (UTC)
On Thu, 10 Feb 2011, John Baldwin wrote:

> This patch adds a 'make toolchains' target that invokes 'make toolchain' for
> each target.  The use case I want it for is a cheaper way to just test kernels
> via make tinderbox so I can do:
>
>  make toolchains
>  make MAKE_JUST_KERNELS=yes tinderbox
>
> It is implemented by adding a new frob to tweak the target that make universe
> builds for the world stage of universe (UNIVERSE_TARGET).  If that frob is
> set, then the kernel build step for a universe is skipped.  With this, the
> toolchains target is a simple wrapper for:
>
>  make UNIVERSE_TARGET=toolchains universe
>
> Index: Makefile
> ===================================================================
> --- Makefile	(revision 218481)
> +++ Makefile	(working copy)
> _at__at_ -30,6 +30,7 _at__at_
> # delete-old-libs     - Delete obsolete libraries.
> # targets             - Print a list of supported TARGET/TARGET_ARCH pairs
> #                       for world and kernel targets.
> +# toolchains          - Build a toolchain for all world and kernel targets.

Should also go to build(7).


> # This makefile is simple by design. The FreeBSD make automatically reads
> # the /usr/share/mk/sys.mk unless the -m argument is specified on the
> _at__at_ -307,9 +308,11 _at__at_ make: .PHONY
> 		${MMAKE} install DESTDIR=${MAKEPATH} BINDIR=
>
> tinderbox:
> -	_at_cd ${.CURDIR} && \
> -		DOING_TINDERBOX=YES ${MAKE} JFLAG=${JFLAG} universe
> +	_at_cd ${.CURDIR} && ${MAKE} DOING_TINDERBOX=YES universe

You lost th JFLAG again that you had lately added.  On purpose?


> +toolchains:
> +	_at_cd ${.CURDIR} && ${MAKE} UNIVERSE_TARGET=toolchain universe
> +
> #
> # universe
> #
> _at__at_ -328,6 +331,12 _at__at_ TARGET_ARCHES_sun4v?=	sparc64
> TARGET_ARCHES_${target}?= ${target}
> .endfor
>
> +.if defined(UNIVERSE_TARGET)
> +MAKE_JUST_WORLDS=	YES

Not sure that's ideal but ok for a start;  Eventually someone could think
that UNIVERSE_TARGET=kernels  could replace the MAKE_JUST_KERNELS=yes.
With the current logic that however is almost impossible to do.
Call it UNIVERSE_WORLD_TARGET?


> +.else
> +UNIVERSE_TARGET?=	buildworld
> +.endif
> +
> targets:
> 	_at_echo "Supported TARGET/TARGET_ARCH pairs for world and kernel targets"
> .for target in ${TARGETS}
> _at__at_ -361,16 +370,16 _at__at_ universe_${target}_prologue:
> .for target_arch in ${TARGET_ARCHES_${target}}
> universe_${target}: universe_${target}_${target_arch}
> universe_${target}_${target_arch}: universe_${target}_prologue
> -	_at_echo ">> ${target}.${target_arch} buildworld started on `LC_ALL=C date`"
> +	_at_echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} started on `LC_ALL=C
> date`"
> 	_at_(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \
> -	    ${MAKE} ${JFLAG} buildworld \
> +	    ${MAKE} ${JFLAG} ${UNIVERSE_TARGET} \
> 	    TARGET=${target} \
> 	    TARGET_ARCH=${target_arch} \
> -	    > _.${target}.${target_arch}.buildworld 2>&1 || \
> -	    (echo "${target}.${target_arch} world failed," \
> -	    "check _.${target}.${target_arch}.buildworld for details" | \
> +	    > _.${target}.${target_arch}.${UNIVERSE_TARGET} 2>&1 || \
> +	    (echo "${target}.${target_arch} ${UNIVERSE_TARGET} failed," \
> +	    "check _.${target}.${target_arch}.${UNIVERSE_TARGET} for details" | \
> 	    ${MAKEFAIL}))
> -	_at_echo ">> ${target}.${target_arch} buildworld completed on `LC_ALL=C
> date`"
> +	_at_echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} completed on
> `LC_ALL=C date`"
> .endfor
> .endif
> .if !defined(MAKE_JUST_WORLDS)
>
>

-- 
Bjoern A. Zeeb                                 You have to have visions!
          Stop bit received. Insert coin for new address family.
Received on Thu Feb 10 2011 - 12:25:08 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:11 UTC