Edgar Fuß <ef%math.uni-bonn.de@localhost> writes:
> Default GCC version for C++:
> I guess some _GCC_CXX_VERSION_DEFALULT in platform-specific files will do.
> Of course, someone need to fill in the desired values.
Yes, but we are making progress on consensus about how to choose.
Then, choosing is fairly easy.
> Mixing different GCC versions for C and C++:
> -- Either it's neccessary to build everything with the same compiler,
> then just remove the .if !empty(USE_LANGUAGES:Mc++)
yes, if we land there.
> -- Or only a few packages are affected, then either add c++ to their
> USE_LANGUAGES (including a comment) or tag them with some
> need-the-same-gcc-as-c++ flag that invokes the same branch as if
> USE_LANGUAGES contained c++.
I would want a GCC_MUST_MATCH_G++ (but that name is bad) instead of
blurring declarative vs what we want the effects to be today. But yes
in principle. And I think this belongs in bl3 of the libs that have
this issue.
> Support for various C++ versions by individual GCC versions:
> -- If, for any (X,Y) GCC version X accepts -std=c++Y but is considered to
> in fact not really do so, simply add this combination to my
> _GCC_CXX_STD_UNSUPP.
> -- If this would be too gross, add GCC_REQD to the affected packages.
I think the notion of "gcc X implements std Y" is just coded as you did.
The only issue, I think, is gcc 4.9 and maybe 4.8 and C++11. There, we
either agree that 4.8/4.9 do not implemenet C++11 (which seems strictly
true), or we say they do and make a package that has an issue with that
set GCC_REQD=5.
> Bootstrapping issues:
> -- When built with gcc-inplace-math and -nls, the only dependency of
> lang/gcc{49,5,6} is gsed. I doubt that is correct, but it would be
> harmless, no?
On NetBSD 7, pkgsrc gsed provides no libraries and only uses base
libraries. So I think there are no issues.
> -- lang/gcc48 additionally depends on gmp, isl and cloog. Do we need
> lang/gcc48 as a default C++ compiler?
Probably not, because if we need a better-than-base compiler, 48 seems
like a bad choice.
> -- We need to assure gcc-inplace-math (and -nls) when building GCC as a
> build dependency, either by making that the default or temporarily
> overriding the options.
That is the perhaps controversial point.
> -- for lang/gccN itself, we could set a special flag circumventing the
> must-build-GCC-first logic or invent a native-c++ pseudo-USE_LANGUAGES
> value.
So do you think we need two versions, the "real" gcc6, and the
"bootstrap" gcc6? Two packages from same source? Something else?
> People never using C++:
> In case any choice of the above options would affect people never ever
> building anything using C++ (embedded systems come to my mind), we could
> use a special setting of GCC_CXX_VERSION (empty or "none") that would
> preserve the current behaviour for non-c++ packages and fail for c++
> packages.
I think if C is built with base, then what would be done for C++ won't
happen if you don't build C++.
But I suppose if GCC_CXX_VERSION is set to none, then any attempt to
use a C++ compiler would fail hard, and that seems ok.
Attachment:
signature.asc
Description: PGP signature