Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Feb 2015 20:27:05 -0700
From:      Warner Losh <imp@bsdimp.com>
To:        "Simon J. Gerraty" <sjg@juniper.net>
Cc:        "freebsd-arch@freebsd.org" <arch@freebsd.org>
Subject:   Re: Better way to do conditional inclusion in make
Message-ID:  <6B52B39B-EC45-4723-99AE-71EFC917B9A0@bsdimp.com>
In-Reply-To: <6819.1423185743@chaos>
References:  <39C20BA1-E6B1-4DAE-95BB-8011A0A64D54@bsdimp.com> <54D40DC4.9070907@freebsd.org> <6819.1423185743@chaos>

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

> On Feb 5, 2015, at 6:22 PM, Simon J. Gerraty <sjg@juniper.net> wrote:
>=20
> Julian Elischer <julian@freebsd.org> wrote:
>> how does it cope with the case where a single file is dependent on
>> either of two options.
>> (we have this in our tree.. not sure if it occurs in the FreeBSD =
tree.)
>> file could occur in both lists or twice in one list..
>=20
> If you accept the premise that order of the list shouldn't matter,
> one can simply apply :O:u to suppress dups.

The order of the list doesn=E2=80=99t matter. If it does, that=E2=80=99s =
a bug in the list and/or
the dependencies and that should be fixed. I=E2=80=99m not aware of any =
place in the
tree where this matters that doesn=E2=80=99t have some secondary =
ordering mechanism
(see the libraries for one such thing).

The phabricator review already has this construct to sort and suppress =
dups.

Where this conditional breaks down is when you have something predicated
on MACHINE_ARCH and MK_foo. Makes it very hard to have FILES.${MACHINE}
added as well. In user land this isn=E2=80=99t so common (it happens, =
but not so much
and most of it would disappear if we had some kind of always no flag for
options that flat out can=E2=80=99t work on a given arch)[*]. In the =
kernel though it happens
a lot with a lot of annoying duplication.

Warner

[*] Consider having something like
.if ${MACHINE} !=3D =E2=80=9Ci386=E2=80=9D && ${MACHINE} !=3D =
=E2=80=9Camd64=E2=80=9D
__ALWAYS_NO+=3D GERBILS PUPPIES WHALES
.endif
then MK_GERBILS would always be no (you aren=E2=80=99t allowed to set =
another value),
and you don=E2=80=99t have to check for architectures where it is used =
to exclude it. I
haven=E2=80=99t worked out all the details of this yet, which is why I =
haven=E2=80=99t posted it
for discussion.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6B52B39B-EC45-4723-99AE-71EFC917B9A0>