Rather than making a 'shared' makefile, this may be more clear if it were renamed and limited to the precise task of system identification which seems like its main purpose here.

The outputs from the 'system-id.mk' (or whatever name) file should be:
* UNAME
* ARCH
* OSFAMILY (linux, windows, macosx)
* OSENV (maybe something like cygwin, msys, posix)
* ROOT_DIR

That makes its job very clear and it also makes it unambiguous what should go into that file so it doesn't end up being a dumping ground.