Skip to content
  • Thomas Haller's avatar
    build: allow using GCC C99 dialect instead of C89 · ba2b2de3
    Thomas Haller authored
    We already use several GCC extenions, like typeof() and
    __attribute__((cleanup)). They are too convinient to miss
    and every supported compiler must support these.
    Currently, gcc and clang does. Maybe other compilers would
    support that too, but who knows, nobody seems to test that.
    
    We also already use stdbool.h (C99) and the imported systemd
    code is mostly gnu99 too (it's not clear to me, because I don't
    find it precisely documented. Certainly it makes use of C99 features
    too).
    
    C99/gnu99 has some nice improvements that we no longer should miss
    out. For example "flexible array members" or "variable declaration
    in init-part of for loop".
    
    It doesn't mean we have to use every obscure (badly supported?)
    feature, it means we don't have to forgo features that are well
    supported. C99 is 17 years old, I mean, really...
    
    If somebody comes along and ports NM to non-gcc/clang, we can address
    bugs about unsupported language features as they surface.
    But let's not restrict us to some hypothetical compiler (or language
    specification).
    
    Also, NetworkManager is not ported on environment beside Linux.
    We don't have to be so considerate about the required build environment.
    Gcc is probably the most portable compiler out there. I doubt porting
    NetworkManager to *BSD fails due to missing gnu99 features. And if that
    causes issues, we should fix them after they happen in practice.
    ba2b2de3