Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Aug 2010 12:49:59 +0100
From:      Bob Bishop <rb@gid.co.uk>
To:        Dimitry Andric <dimitry@andric.com>
Cc:        current@freebsd.org
Subject:   Re: Building world with clang
Message-ID:  <19F5467B-6432-4531-BF04-62D8EB4F3093@gid.co.uk>
In-Reply-To: <4C6A7357.8000606@andric.com>
References:  <4C6A7357.8000606@andric.com>

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

On 17 Aug 2010, at 12:32, Dimitry Andric wrote:

> Hi,
>=20
> Since clang has gone into the tree, there has been an effort to get =
head
> in a state where world can optionally be built with it.
> [...]
> Now, for building clang as the bootstrap compiler, there are basically
> two methods to make it use the correct headers, C startup objects, and
> libraries from the object tree (${WORLDTMP}):
>=20
> 1) The "isysroot" method: build a regular version of clang, and make
>   sure WMAKEENV contains something like:
>=20
>   CC=3D"${CC} -isysroot ${WORLDTMP} -B${WORLDTMP}/usr/lib/ \
>                                   -L${WORLDTMP}/usr/lib/"
>=20
> 2) The "tools-prefix" method: build a special version of clang, that
>   has its default search paths for headers, startup objects and
>   libraries modified, to look for everything under ${WORLDTMP}.
>=20
> Method 1) is used in the clangbsd project branch.
>=20
> Method 2) is similar to what is used for building the in-tree gcc as
> the bootstrap compiler.  During the cross-tools stage, TOOLS_PREFIX is
> defined to point at ${WORLDTMP}, and the bootstrap gcc's built-in
> search paths get prefixed with it.
>=20
> An advantage of method 1) is that it does not require any =
modifications
> to the compiler, and basically just a few extra command line =
arguments.
> The same method could probably even be made to work for gcc.
>=20
> However, a disadvantage is that the built-in search paths of the
> bootstrap compiler are not entirely disabled by using the -isysroot, =
-B
> and -L flags,

This could be viewed as a bug ...

> so there is still a chance that headers, objects or
> libraries outside of ${WORLDTMP} will be picked up during the world
> stage.

... and the last thing you want in buildworld is this kind of POLA =
violation ...

> An advantage of method 2) is that you can be 100% sure all built-in
> search paths of the bootstrap compiler point to directories under
> ${WORLDTMP}.  Of course, a disadvantage is that you have to make some
> modifications to the compiler source itself.

... so, which fix to the compiler do you want to make?

> [etc]

--
Bob Bishop
rb@gid.co.uk







Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19F5467B-6432-4531-BF04-62D8EB4F3093>