Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Mar 2011 10:26:47 -0500
From:      Nathan Whitehorn <nwhitehorn@freebsd.org>
To:        freebsd-hackers@freebsd.org
Subject:   Re: Include file search path
Message-ID:  <4D934BB7.9080201@freebsd.org>
In-Reply-To: <4D934AF4.9080503@FreeBSD.org>
References:  <AANLkTi=BiUVnzsGg83wwWPHjnTDR=XukhJ3UK6Bd5hvF@mail.gmail.com> <4D934AF4.9080503@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 03/30/11 10:23, Dimitry Andric wrote:
> On 2011-03-29 23:20, mdf@FreeBSD.org wrote:
>> So here's what I'm pondering.  When I build a library, like e.g. libc,
>> where do the include files get pulled from?  They can't (shouldn't) be
>> the ones in /usr/include, but I don't see a -nostdinc like for the
>> kernel.  There are -I directives in the Makefile for
>> -I${.CURDIR}/include -I${.CURDIR}/../../include, etc., but that won't
>> remove /usr/include from the search path.
>
> During the bootstrap stage, a copy of gcc (or clang) is built, that has
> all default search paths for headers, libraries, etc, set relative to
> ${WORLDTMP}, usually /usr/obj/usr/src/tmp.
>
> E.g:
>
> $ /usr/obj/usr/src/tmp/usr/bin/gcc -v -E -x c /dev/null -o /dev/null
> Using built-in specs.
> Target: amd64-undermydesk-freebsd
> Configured with: FreeBSD/amd64 system compiler
> Thread model: posix
> gcc version 4.2.1 20070719  [FreeBSD]
>  /usr/obj/usr/src/tmp/usr/libexec/cc1 -E -quiet -v -D_LONGLONG 
> /dev/null -o /dev/null
> #include "..." search starts here:
> #include <...> search starts here:
>  /usr/obj/usr/src/tmp/usr/include/gcc/4.2
>  /usr/obj/usr/src/tmp/usr/include
> End of search list.
>
> and:
>
> $ /usr/obj/usr/src/tmp/usr/bin/gcc -print-search-dirs
> install: /usr/obj/usr/src/tmp/usr/libexec/
> programs: 
> =/usr/obj/usr/src/tmp/usr/bin/:/usr/obj/usr/src/tmp/usr/bin/:/usr/obj/usr/src/tmp/usr/libexec/:/usr/obj/usr/src/tmp/usr/libexec/:/usr/obj/usr/src/tmp/usr/libexec/
> libraries: =/usr/obj/usr/src/tmp/usr/lib/:/usr/obj/usr/src/tmp/usr/lib/
>
> This is a rather nasty hack, though.  If we can make it work, we should
> probably try using --sysroot instead, or alternatively, -nostdinc and
> adding include dirs by hand.  The same for executable and library search
> paths, although I am not sure if there is a way to completely reset
> those with the current options.

Since you need to build two compilers anyway (one for the current 
system, to build the new one, and one to live in the new one, linked 
against new libraries), I don't see that it's such a nasty hack.
-Nathan



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