Date: Wed, 2 Nov 2016 16:45:38 +0000 From: Brooks Davis <brooks@freebsd.org> To: Jonathan Anderson <jonathan@FreeBSD.org> Cc: Dimitry Andric <dim@FreeBSD.org>, src-committers <src-committers@freebsd.org>, svn-src-all@freebsd.org, svn-src-head@freebsd.org, Ed Maste <emaste@freebsd.org> Subject: Re: svn commit: r308181 - in head: . share/mk Message-ID: <20161102164538.GA83465@spindle.one-eyed-alien.net> In-Reply-To: <69A64340-FE51-4AF0-9905-B46220D041E9@FreeBSD.org> References: <201611012127.uA1LRg0B045900@repo.freebsd.org> <46715A69-03C5-404F-B133-C8FE89D59A9B@FreeBSD.org> <69A64340-FE51-4AF0-9905-B46220D041E9@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
On Wed, Nov 02, 2016 at 04:55:22AM -0230, Jonathan Anderson wrote:
> Hi,
>
> On 1 Nov 2016, at 21:10, Dimitry Andric wrote:
>
> > Please note, I reverted r307823 (which changed the suffixes from .bco
> > and .llo to .bc and .ll) in r308003, since it caused a number of ports
> > failures. These ports were already using .ll as a suffix for C++ lex
> > scripts.
>
> The changes to bsd.suffixes-posix.mk (included by sys.mk) would have affected anything compiled with bmake, and indeed, I'd imagine that adding a .c->.ll rule alongside .c->.o could cause problems with C++ lex rules. In fact, part of brooks' original motivation for introducing .llo suffixes was to avoid name conflicts (although conflicts with program IR like we're introducing in this commit). The changes in this commit should only be picked up by things that explicit include bsd.{lib,prog}.mk, however, and they also have slightly more esoteric names (e.g., progname.full.ll) that are less likely to cause a conflict. Perhaps I ought to have done an exp-run, but I suspect that this commit will cause much less / no fallout. I don't suppose you have a list of the ports that failed after your r307823 change so that I could do spot checks?
As a bit of background, the original motivation for the .bco and .llo
files what that I wanted to differentiate between IR files produced from
single translation units (.c files) and IR files produced by llvm-link
so I didn't have to worry about things like name space collisions in the
case of transitions like:
clang llvm-link opt ld
(prog.c, utils.c) => (prog.llo, util.llo) => prog.ll => prog.o => prog
Part of the fun is that you might instead want:
clang opt ld
(prog.c, utils.c) => (prog.llo, util.llo) => (prog.o, util.o) => prog
and for extra fun you might insert instrumentation at any IR stage so
yet more suffixes may be required if your tools don't fit neatly into
clang, opt, etc plugins.
Make is lousy at this stuff so a certain about of ugliness is likely
to remain required.
-- Brooks
[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
iQEcBAEBAgAGBQJYGhgyAAoJEKzQXbSebgfAHToH/A0zptfJES+9bRZRLrUEJjpR
tEsoFE4v/xJPb1iz7LGKB327NX1nM7sFSalHcnFOy++5o9gAUzEmhQMHWx6dWyo2
HzOhIGySxhUqvieG1o8Yj01E9ObyhpBBPXGAeA1G4kWRlO2wi5Ze7ZwdmJPP0Cel
aNsBo0p2O0coT+qhbphs0GbQH112zsErvFdfSgjgz5HnACaXl5mr85rDxCYXxKye
nbWka0+HsFMMUxmeQWBoj5/jgrPI0H8sV86Wf7TZklijPvROa+r5HCI9kFzu+Xe6
gNc94FJDYOH8K1qwKATzCDFYvSJnvN7J2umBRxygNtECIA9DWrx1bSXcK8VPY9M=
=VM2J
-----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20161102164538.GA83465>
