Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Mar 2011 08:00:11 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-hackers@freebsd.org
Cc:        mdf@freebsd.org
Subject:   Re: Include file search path
Message-ID:  <201103300800.11548.jhb@freebsd.org>
In-Reply-To: <AANLkTi=BiUVnzsGg83wwWPHjnTDR=XukhJ3UK6Bd5hvF@mail.gmail.com>
References:  <AANLkTi=BiUVnzsGg83wwWPHjnTDR=XukhJ3UK6Bd5hvF@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday, March 29, 2011 5:20:30 pm mdf@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@?).

-- 
John Baldwin



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