Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Aug 2013 09:23:53 -0700
From:      John-Mark Gurney <jmg@funkthat.com>
To:        Dimitry Andric <dim@FreeBSD.org>
Cc:        Brooks Davis <brooks@FreeBSD.org>, current@FreeBSD.org
Subject:   Re: why does buildkernel set COMPILER_TYPE?
Message-ID:  <20130822162353.GF94127@funkthat.com>
In-Reply-To: <49A46D2E-D736-4D57-BB54-5B68C1FE2466@FreeBSD.org>
References:  <20130822040418.GE94127@funkthat.com> <49A46D2E-D736-4D57-BB54-5B68C1FE2466@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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@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."



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