This commit allows all table-gen files to be generated irrespective of the
back-ends that were requested to be built. The purpose of this change is to
allow target-specific behaviour to be included in a generic target description
library that will always be built and be accessible to LLVM internal libraries
such as the assemblers and generic code-gen, as well all external tools, such
as Clang, lli, llc, lld, lldb, etc.
With this information available, the external tools will be able to use the
target-specific knowledge LLVM already has, externalised via the target
description API, to query, parse and understand architecture behaviour and
propseties without carrying such knowledge themselves.
This would ultimately common up *all* knowledge of all targets, so not only
we reduce the amount of duplication, but also we get it right on every tool,
not just the ones that we happened to coincide.
The biggest beneficiary of this change will be Clang, especially related to
the driver (for parsing and undertanding command-line options), as well as
ABI decisions and specific target behaviour during IR generation.
There is an obvious addition of compile time, but since table generation is
only a small part of the total compilation time (no more than 5% if all tables
are built), it won't amount to any significant change, even on slow targets,
such as ARM boards. Also, no generated file will be included if not strictly
needed, so the additional space taken on final binaries will be zero.