This avoids having patched CMake modules in the source tree of the gflags library. Usually a C compiler is installed along a C++ compiler (or it is used for C as well). The only slight downside is the extra configuration time needed by CMake to check the C compiler.
These CMake variables are now set to a default which both maintains binary backwards compatibility with previous versions of the library, but at the same time allows already the use of the new "gflags" namespace instead of "google". Users may still override the default using the -D option of cmake, for example, when they use the library directly as submodule in their own project and prefer a different namespace/installation directory.
This ensures binary compatibility with previous 2.x release versions while allowing users to refer to the gflags library symbols using the preferred "gflags" namespace identifier.
The first element in the GFLAGS_NAMESPACE list is used as primary/default namespace. The symbols are then imported from this primary namespace into each of the other alternative namespaces with the using keyword. This is in particular used to maintain backwards compatibility with previous gflags library versions that used the "google" namespace instead of the new default "gflags" namespace.
The "SONAME_FLAG" was introduced in CMake 2.8.9, while the current CMake scripts require 2.8.4 (first line of CMakeLists.txt). Increasing the required CMake version will block building in less recent OSes (e.g., for Ubuntu 12.04 LTS, the latest version from the official repositories is currently 2.8.7). The more compatible solution will be to use the old variable name, i.e. the one which was used before CMake was patched.
NB: this issue is triggered upon specifying -DBUILD_SHARED_LIBS=ON.
Related bug report: http://public.kitware.com/Bug/view.php?id=13884
Commit which implemented this new variable: http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e1409ac5