Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Apr 2014 08:43:16 +0200
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        Simon Gerraty <sjg@juniper.net>
Cc:        freebsd-arch@freebsd.org
Subject:   Re: make WITH[OUT]_* more useful?
Message-ID:  <20140401064316.GQ99393@ivaldir.etoilebsd.net>
In-Reply-To: <20140401051327.F20F958097@chaos.jnpr.net>
References:  <20140401051327.F20F958097@chaos.jnpr.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--9+VnUxDxRuy97YQ+
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Mon, Mar 31, 2014 at 10:13:27PM -0700, Simon Gerraty wrote:
> I really like the idea of WITH[OUT]_* knobs translating to MK_* knobs,
> but I find the current implementation much less useful than I think it
> could be.  Not the least of its problems is being implemented in
> bsd.own.mk which ties policy and mechanism together.
>=20
> It is not always (rarely) safe  to include the in-tree bsd.own.mk which
> means that in many cases you cannot rely on MK_* at all, but have to
> re-implement the WITH_* vs WITHOUT_* logic repeatedly.
>=20
> It is also generally bad to include bsd.own.mk from sys.mk, which means
> any knobs you need early must re-implement the WITH_* vs WITHOUT_* logic
> repeatedly.
>=20
> contrib/bmake/mk/options.mk is an example of a more generic
> implementation with (I think) some advantages.
>=20
> The key semantic changes are (DOMINANT_* is from a newer version
> than in contrib):
>=20
> # NO_* takes precedence
> # If both WITH_* and WITHOUT_* are defined, WITHOUT_ wins unless
> # DOMINANT_* is set to "yes"
> # Otherwise WITH_* and WITHOUT_* override the default.
> and
> MK_* can be pre-set without causing an error.
>=20
> The key advantage is that the mechanism is separate from the policy.
> You can thus have knobs that get set much earlier (eg during sys.mk)
> and other knobs that get set later. Ie. both sys.mk and bsd.own.mk can
> include options.mk to process options that they care about, allowing
> MK_* to be used more consistently - you could use different prefix to
> avoid overlap, but that's probably not necessary.
>=20
> You can in fact have per-makefile option lists if you want (see
> contrib/bmake/Makefile)=20
>=20
> Thoughts?

I would be interested in having your opinion on what we did for ports.

Basically we have in the end a variable: PORT_OPTIONS that contains the the
options that are considered like "MK_*" =3D yes and all the one considerer =
as
are not it.

one can activate variables via make.conf:
OPTIONS_SET=3D OPT1 OPT2
OPTIONS_UNSET=3D OPT3

We added a couple of sugar so that options are not on yes/no but can be a
selection in a list etc.

Can be looked at here: http://svnweb.freebsd.org/ports/head/Mk/bsd.options.=
mk

Having it creating in the end the MK_* variables would be really realy easy.

regards,
Bapt

--9+VnUxDxRuy97YQ+
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (FreeBSD)

iEYEARECAAYFAlM6YAQACgkQ8kTtMUmk6EwqCwCcC19iLPOR3T7h+CxzzimZZ179
FDEAn3LXCkxynr91lPnVyRGhS9qtWIc3
=YKB2
-----END PGP SIGNATURE-----

--9+VnUxDxRuy97YQ+--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140401064316.GQ99393>