The function for distinguishing local and remote files added in r295768
unconditionally uses linux/magic.h header to provide necessary
filesystem magic numbers. However, in kernel headers predating 2.6.18
the magic numbers are spread throughout multiple include files.
Furthermore, LLVM did not require kernel headers being installed so far.
To increase the portability across different versions of Linux kernel
and different Linux systems, add CMake header checks for linux/magic.h
and -- if it is missing -- the linux/nfs_fs.h and linux/smb.h headers
which contained the numbers previously.
Furthermore, since the numbers are static and the feature does not seem
critical enough to make LLVM require kernel headers at all, add fallback
constants for the case when none of the necessary headers is available.
The three HAVE_LINUX_ referenced here aren't listed in include/llvm/Config/config.h.cmake, so they never make it across from the cmake world to the C world -- they're never defined here. Since this also adds fallback code defining _SUPER_MAGIC things still work, but the cmake checks above are effectively dead code. Since we already have the fallbacks, maybe we should just delete the cmake checks instead of adding yet more stuff to config.h.cmake?