why does buildkernel set COMPILER_TYPE?

John-Mark Gurney jmg at funkthat.com
Thu Aug 22 16:23:55 UTC 2013


Dimitry Andric wrote this message on Thu, Aug 22, 2013 at 08:59 +0200:
> On Aug 22, 2013, at 06:04, John-Mark Gurney <jmg at funkthat.com> wrote:
> > I've noticed that if you do a:
> > make buildworld WITHOUT_CLANG_IS_CC=YES
> > 
> > and then do a:
> > make buildkernel
> > 
> > (w/o the WITHOUT_CLANG_IS_CC=YES option)
> > that it fails...  
> 
> Why don't you just put the WITHOUT_CLANG_IS_CC setting in /etc/src.conf,
> where it belongs?  That would save you this trouble.

Except that I'm testing code that needs to work both with clang and
gcc...  Putting an option like that in /etc/src.conf is bad as I'm
likely to forget it, plus it'll effect other trees which isn't good...

> I don't think we should support building different parts of the tree
> with incompatible settings.  E.g. compiling part of the tree using
> WITH_FOO, and some other part using WITHOUT_FOO is *not* supposed to
> work properly.

Do we have a file that is source in /usr/src (or where your source tree
is located) that we can put these options in?

When we finally are able to build and install all as a normal user
(which we are getting close now), /etc/src.conf is a really bad place
to put these things....

> > Apparently instead of letting buildkernel figure out
> > which compiler it will use, the src/Makefile.inc1 forces COMPILER_TYPE
> > to be what the options specified instead of using what bsd.compiler.mk
> > figures out...
> 
> This was added by brooks in r240468 (and further developed in r250659
> where he added external compiler support), with what I assume is the
> explanation in the commit message:
> 
> "To avoid negative performance impacts in the default case and correct
> value for COMPILER_TYPE type is determined and passed in the environment
> of submake instances while building world."
> 
> So I suspect this is really on purpose.  Brooks, any comments? :)

Except that KMAKEENV just blindly takes all of WMAKEENV...  I
understand why WMAKEENV would have COMPILER_TYPE, I'm just puzzled why
we don't let KMAKEENV figure out the correct one...

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."


More information about the freebsd-current mailing list