[uClinux-dev] parallel compiles
David McCullough
David_Mccullough at securecomputing.com
Thu Feb 7 06:45:56 EST 2008
Jivin Mike Frysinger lays it down ...
> On Wednesday 06 February 2008, David McCullough wrote:
> > > is there a reason for forcing -j1 in sub-packages ? we've dropped the
> > > -j1 in {lib,user}/Makefile for the DIRS target and generally had great
> > > success. you can really feel the difference on an 8 or 16 proc system.
> > > i also replaced the -j1 for the _only targets with -j$(HOST_NCPU).
> >
> > Interesting result, do you have an measured build times with and
> > without the change ? It would be nice to know, and if the gains
> > justify the fixing of any potentially broken sub dirs :-)
>
> just doing a simple `time make AnalogDevices/BF537-STAMP_default` here ...
> - with NON_SMP_BUILD set: ~8min
> - without NON_SMP_BUILD set (and the -j1 pieces removed): ~1.5min
> pretty consistent here ... +/-10seconds
I was hoping for the "with -j1" and "without -j1" numbers,
comparing against NON_SMP_BUILD=1 is not really fair ;-)
> > If you have a patch, send it in and I'll try it here and see how bad it
> > is for our builds, if it's relatively isolated I am happy to fix up
> > some bits and include it, anything that speeds builds is good,
>
> i'm pushing this for our next-next release (so current development tree).
> only noticed net-tools failing so far (but i posted a patch for that)
Patch is small enough, I try it if you don't get time to compare the
before an after.
Cheers,
Davidm
> ---
> Do not force -j1 in subdirs and use -j$(HOST_NCPU) for _only targets.
>
> Signed-off-by: Mike Frysinger <vapier at gentoo.org>
> ---
> diff --git a/lib/Makefile b/lib/Makefile
> index 0de9193..e9e9372 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -136,16 +136,16 @@ all:
> # the actual dir target
> .PHONY: $(DIRS_y)
> $(DIRS_y):
> - [ ! -d "$@" ] || ( touch $@/.sgbuilt_lib && $(MAKE) -j1 -C $@ ) || exit $$?
> + [ ! -d "$@" ] || ( touch $@/.sgbuilt_lib && $(MAKE) -C $@ ) || exit $$?
>
> %_only:
> - touch $(@:_only=)/.sgbuilt_lib && $(MAKE) -j1 -C $(@:_only=)
> + touch $(@:_only=)/.sgbuilt_lib && $(MAKE) -j$(HOST_NCPU) -C $(@:_only=)
>
> %_clean:
> $(MAKE) -j1 -C $(@:_clean=) clean; rm -f $(@:_clean=)/.sgbuilt_lib; true
>
> %_romfs:
> - $(MAKE) -j1 -C $(@:_romfs=) romfs
> + $(MAKE) -C $(@:_romfs=) romfs
>
>
> ##############################################################################
>
> diff --git a/user/Makefile b/user/Makefile
> index d452260..18b8f00 100644
> --- a/user/Makefile
> +++ b/user/Makefile
> @@ -440,16 +440,16 @@ asterisk-addons: mysql asterisk
> miniupnpd : iptables
>
> $(sort $(dir_y) $(dir_p)): config
> - [ ! -d "$@" ] || ( touch $@/.sgbuilt_user && $(MAKE) -j1 -C $@ ) || exit $$?
> + [ ! -d "$@" ] || ( touch $@/.sgbuilt_user && $(MAKE) -C $@ ) || exit $$?
>
> %_only:
> - touch $(@:_only=)/.sgbuilt_user && $(MAKE) -j1 -C $(@:_only=)
> + touch $(@:_only=)/.sgbuilt_user && $(MAKE) -j$(HOST_NCPU) -C $(@:_only=)
>
> %_clean:
> $(MAKE) -j1 -C $(@:_clean=) clean; rm -f $(@:_clean=)/.sgbuilt_user; true
>
> %_romfs:
> - $(MAKE) -j1 -C $(@:_romfs=) romfs
> + $(MAKE) -C $(@:_romfs=) romfs
>
> romfs:
> for i in $(sort $(dir_y)) $(dir_p) ; do \
>
--
David McCullough, david_mccullough at securecomputing.com, Ph:+61 734352815
Secure Computing - SnapGear http://www.uCdot.org http://www.cyberguard.com
More information about the uClinux-dev
mailing list