[Buildroot] [PATCH] autotools: add with/without and enable/disable helpers

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Fri Nov 19 07:55:18 UTC 2010


On Thu, 18 Nov 2010 23:33:57 -0500
Mike Frysinger <vapier at gentoo.org> wrote:

> Rather than have to write ugly logic in every package .mk file to check
> a config var and then expand into a --{en,dis}able-foo flag, add helpers
> so code can cleanly expand things.

Sounds a very good idea!

> +# $(call _USE_CONF,enable,disable,LIB_FFMPEG,video,blah) -> --enable-video=blah if LIB_FFMPEG
> +# $(call _USE_CONF,with,without,LIB_FFMPEG,video)        -> --with-video if LIB_FFMPEG
> +_USE_CONF = $(shell \
> +	opt="$(5)"; test "$${opt:+set}" = "set" && opt="=$${opt}"; \
> +	test "$(BR2_$(3))" = "y" \
> +		&& echo "--$(1)-$(4)$${opt}" \
> +		|| echo "--$(2)-$(4)")

However, I'm worried that this will start a shell process when
evaluating *each* USE_ENABLE/USE_WITH call, and this will slow down the
start up of Buildroot. In the past, we were forking/execing "tr" once
per-package and it was slowing down Buildroot startup needlessly
(~10-15 seconds doing hundreds of fork/exec).

It'd be nicer if we could use a pure Makefile implementation. What
about a simpler :

USE_WITH = $(if $(BR2_$(1)),--with-$(2),--without-$(2))
USE_ENABLE = $(if $(BR2_$(1),--enable-$(2),--disable-$(2)))

However, their usage might be a little limited: often when the option
is enabled, we need to add a dependency to the package as well.


Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.

More information about the buildroot mailing list