tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: A better method to require compiler features



On 7/13/23 13:08, Greg Troxel wrote:
nia <nia%NetBSD.org@localhost> writes:

On Thu, Jul 13, 2023 at 10:12:49AM -0400, Greg Troxel wrote:
You didn't address c99 and other things that might be in the same class,
but it seems that the USE_CXX_FEATURES should have a USE_C_FEATURES
analog, with c99, c10(?) and whatever else has or will come along.  I
see that as both a good thing to do and necessary to adopt "don't put
c99 in USE_LANGUAGES".  I'm guessing you agree but the discussion has
just been about the harder case of C++?

I've thought about this, c11 is actually where it matters most
currently. And has_include. Maybe USE_CXX_FEATURES could be used
for both, there is certainly some overlap when it comes to things
like compiler builtins and the desire to use e.g. AVX intrinsics.

We have to accomodate c(89) vs c99 vs c11 somehow.  I think it has to be
declarative, so we end up with no "GCC_REQD" for things that can be
described as language version/feature.  The details I am unclear on.  (I
don't care if we stick c99 and c++11 in the same feature variable.)

I am guessing you will prepare a patch for review and people can think
about something actual; it seems like abstract discussion has been about
as useful as it can be.

Others haven't spoken up much; I think where we are satisfies most
concerns raised earlier, but @all please speak up if not.

The problem is that the most reasonable shortening of "C language
families" is already taken by a compiler based on LLVM.

If you are referring to language/flavor vs family/language, then I don't
think that matters much, as long as the semantics are clear.

Perhaps FAIL_UNMET_COMPILER_REQUIREMENTS?

I think I have decided on "ALLOW_NEWER_COMPILER" (default yes).

That sort of implies that if one has bootstrapped with a newer one it
won't work, but as long as its documented to break in the cases we are
talking about that seems ok.

FreeBSD has a highly evolved system for specifying compiler requirements
that might generate some ideas:

https://github.com/freebsd/freebsd-ports/blob/main/Mk/Uses/compiler.mk

Note that this only adds compiler dependencies, and compiler flags such
as -std=xxx have to be added separately to C[XX]FLAGS.

There are some issues with tool chain mixing, but standardized solutions
have evolved over time.



Home | Main Index | Thread Index | Old Index