• Marco Elver's avatar
    kbuild: Only default to -Werror if COMPILE_TEST · b339ec9c
    Marco Elver authored
    The cross-product of the kernel's supported toolchains, architectures,
    and configuration options is large. So large, that it's generally
    accepted to be infeasible to enumerate and build+test them all
    (many compile-testers rely on randomly generated configs).
    
    Without the possibility to enumerate all possible combinations of
    toolchains, architectures, and configuration options, it is inevitable
    that compiler warnings in this space exist.
    
    With -Werror, this means that an innumerable set of kernels are now
    broken, yet had been perfectly usable before (confused compilers, code
    with warnings unused, or luck).
    
    Distributors will necessarily pick a point in the toolchain X arch X
    config space, and if unlucky, will have a broken build. Granted, those
    will likely disable CONFIG_WERROR and move on.
    
    The kernel's default configuration is unlikely to be suitable for all
    users, but it's inappropriate to force many users to set CONFIG_WERROR=n.
    
    This also holds for CI systems which are focused on runtime testing,
    where the odd warning in some subsystem will disrupt testing of the rest
    of the kernel. Many of those runtime-focused CI systems run tests or
    fuzz the kernel using runtime debugging tools. Runtime testing of
    different subsystems can proceed in parallel, and potentially uncover
    serious bugs; halting runtime testing of the entire kernel because of
    the odd warning (now error) in a subsystem or driver is simply
    inappropriate.
    
    Therefore, runtime-focused CI systems will likely choose CONFIG_WERROR=n
    as well.
    
    The appropriate usecase for -Werror is therefore compile-test focused
    builds (often done by developers or CI systems).
    
    Reflect this in the Kconfig option by making the default value of WERROR
    match COMPILE_TEST.
    Signed-off-by: default avatarMarco Elver <elver@google.com>
    Acked-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
    Reviwed-by: default avatarMark Brown <broonie@kernel.org>
    Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b339ec9c
Kconfig 76 KB