Re: NanoBSD: CURRENT unable to compile 13-STABLE : error: a function definition without a prototype is deprecated ... in C

From: FreeBSD User <freebsd_at_walstatt-de.de>
Date: Wed, 08 Mar 2023 10:19:04 UTC
Am Thu, 2 Mar 2023 11:13:51 +0100
Dimitry Andric <dim@FreeBSD.org> schrieb:

> On 2 Mar 2023, at 06:41, FreeBSD User <freebsd@walstatt-de.de> wrote:
> > 
> > Am Mon, 27 Feb 2023 23:46:21 +0100
> > Dimitry Andric <dim@FreeBSD.org> schrieb:  
> ...
> > 
> > I tried to find some documentation on my CURRENT host regarding  "WITH_SYSTEM_COMPILER".
> > None found via man src.conf, nor via make make.conf. Please delegate me to some place
> > where I can find such infos.  
> 
> Ah I was confused, WITH_SYSTEM_COMPILER is actually the default, and it
> means that you want to skip building the bootstrap compiler, and just
> use the host compiler. The src.conf(5) man page documents the inverse
> settings instead:
> 
>      WITHOUT_SYSTEM_COMPILER
>              Do not opportunistically skip building a cross-compiler during
>              the bootstrap phase of the build.  Normally, if the currently
>              installed compiler matches the planned bootstrap compiler type
>              and revision, then it will not be built.  This does not prevent a
>              compiler from being built for installation though, only for
>              building one for the build itself.  The WITHOUT_CLANG option
>              controls that.
> 
>      WITHOUT_SYSTEM_LINKER
>              Do not opportunistically skip building a cross-linker during the
>              bootstrap phase of the build.  Normally, if the currently
>              installed linker matches the planned bootstrap linker type and
>              revision, then it will not be built.  This does not prevent a
>              linker from being built for installation though, only for
>              building one for the build itself.  The WITHOUT_LLD option
>              controls that.
> 
>              This option is only relevant when WITH_LLD_BOOTSTRAP is set.
> 
> I find the double negative phrasing "do not skip" always confusing. But
> the logic is normally:
> 
> * The early phase of buildworld retrieves the versions of your host's
>   compiler and linker
> * It compares it against the versions in the source tree
> * If the host compiler and linker are deemed "good enough", they are
>   used as-is
> * If the host compiler or linker are not suitable, the compiler or
>   linker are bootstrapped from the source tree
> 
> But WITH_SYSTEM_COMPILER turns off all these checks and forces it to use
> the host compiler, which might or might not work, depending on the
> circumstances. You may have to use NO_WERROR or other tricks.
> 
> 
> ...
> >> The safest solution is to let cross-tools do its thing, which will check
> >> the host compiler, and automatically build an appropriate version of the
> >> compiler and linker for the stable branch, if required.  
> > 
> > I had a misunderstanding in the terminus "cross compiling", I check now the build with this
> > option set to be enabled.  
> 
> Yes, this is a bit confusing, but in fact it *can* be a real cross
> compiler, if you are targeting another architecture, for example doing
> "make buildworld TARGET=arm64" from an x86_64 host.
> 
> And of course if you are building natively, it is 'just' a regular
> bootstrap compiler.
> 
> -Dimitry
> 

As it turns out, I already used in both sections

CONF_BUILD=
CONF_WORLD=

of nanoBSD's configuration WITHOUT_SYSTEM_COMPILER and added also WITHOUT_SYSTEM_LINKER to be
safe.

But I don't understand why the make environment is trying to compile a piece of code that is
disabled via "nodevice" as shown in my initial report herein:

[...]
src/sys/dev/an/if_an_pci.c:143:1: error: a function definition without a prototype is
deprecated in all versions of C and is not supported in C2x
[-Werror,-Wdeprecated-non-prototype]
[...]

From my point of view neither compiler suite, LLVM14 or LLVM15, should have picked up the
if_an driver so far. Or do I miss something here? If so, my apologys.

Kind regards

Oliver

-- 
O. Hartmann