Include file search path

Arnaud Lacombe lacombar at gmail.com
Wed Mar 30 15:05:26 UTC 2011


Hi,

On Wed, Mar 30, 2011 at 8:00 AM, John Baldwin <jhb at freebsd.org> wrote:
> On Tuesday, March 29, 2011 5:20:30 pm mdf at freebsd.org wrote:
>> I thought I knew something about how the compiler looks for include
>> files, but now I think maybe I don't know much. :-)
>>
>> 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.
>>
>> I see in the gcc documentation that -I paths are searched before the
>> standards paths.  But isn't the lack of -nostdinc a bug (not just for
>> libc, but for any library in /usr/src/lib)?  It somewhat feels to me
>> that all of the libraries and binaries in the source distribution
>> should use -nostdinc and include only from the source distribution
>> itself.  This isn't always an issue, but for source upgrades it seems
>> crucial, and for a hacker it saves difficulties with having to install
>> headers before re-building.
>>
>> Is that the intent, and it's not fully implemented?  How badly would
>> things break if -nostdinc was included in e.g. bsd.lib.mk? (This would
>> break non-base libraries, yes?  But as a thought experiment for the
>> base, how far off are we?)
>
> If you are building a library by hand you do want to use the includes from
> /usr/include.  I am not sure how we accomplish during buildworld (but we do).
> I think we actually build the compiler in the cross-tools stage such that
> it uses the /usr/include directory under {WORLDTMP} in place of /usr/include
> in the default search path.
>
> Some other folks might be able to verify that (perhaps ru@?).
>
FWIW (I've been hacking around `buildworld' lately), yes, and the
`_includes' stage is responsible to populate ${WORLDTMP}/usr/include.
The same goes for ${WORLDTMP}/usr/lib and `_libraries'. That was with
a 7-stable tree, I'm not sure how clang integrates in all this. The
same way I suppose.

 - Arnaud

> --
> John Baldwin
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
>


More information about the freebsd-hackers mailing list