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

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

> On Thursday, February 10, 2011 8:22:00 am Bjoern A. Zeeb wrote:
>> 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).
>
> Ok.
>
>>> # 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?
>
> It was redundant.  The JFLAG was already being passed via MAKEOPTIONS.
>
>>> +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?
>
> Actually, I would love to have a 'kernels' target and use
> 'make UNIVERSE_TARGET=kernels universe' to replace MAKE_JUST_KERNELS,

or rather ="toolchains kernels" universe?

> but the kernel build stuff is quite convoluted.  One could though
> do something like 'make UNIVERSE_TARGET=buildkernel' assuming that
> 'make buildkernel' always chose a suitable KERNCONF (I'm betting it doesn't
> on powerpc64), so it's not strictly speaking just for world targets.
>
> I think the main idea is that if UNIVERSE_TARGET is set, only that step is
> done for all targets.  Otherwise the default action is to build world +
> kernels for all targets.  In that case having it be UNIVERSE_TARGET makes
> sense I think.

I'd say go for it.  I haven't tested things but I cannot see any
problems either.

/bz

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

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