The GPLv2 requires that the corresponding source of a GPLv2-licensed binary is distributed under the terms of that GPL. The corresponding source includes any build scripts. As GPLv3-licensed build scripts cannot be distributed under the terms of the GPLv2, this combination is not possible.
However, that is not the case for NetworkManager:
- AFAIK the NetworkManager source code is licensed only under the GPLv2+, with no GPLv3 build scripts.
- Even if there were GPLv3 build scripts, the binaries could be distributed under the terms of the GPLv3 because the source is under GPLv2+.
- (Also, the requirements to make the corresponding source available only trigger when you distribute binaries – source distributions might be fine.)
NetworkManager does use Autoconf, which is licensed under the GPLv3+ plus the Autoconf Exception. When using Autoconf to create a source distribution then Autoconf copies parts of itself into that source distribution. (A source distribution is not necessarily the same as the corresponding source in the sense of the GPL.)
Does the use of Autoconf in a project subject that project to the GPLv3? Quite likely not, due to the Autoconf exception that gives you extra permissions: “You have permission to propagate output of Autoconf, even if such propagation would otherwise violate the terms of GPLv3.” I.e. as long as the generated configure scripts etc. are distributed without modifications you can use Autoconf to build source distributions under any license.
An argument could be made that configure.ac
scripts should be subject to the GPLv3 because they link with Autoconf-provided macros. The validity of this argument hinges on whether the configure.ac
file is better described as an M4 program that links with the Autoconf macro library (i.e. constitutes a derived work), or as input data that is processed by the Autoconf system (i.e. is an independent work). I'd see Autoconf in analogy to other languages and preprocessors such as Bash, Perl, and Bison. Here, there seems to be clear consensus that input files are completely independent works from the language implementations, even when the language implementation offers mechanisms to call into GPL'ed code.