Two sets of include directories are distinguished: system include directories
and project include directories. The former is just the contents of the
INCLUDE environment variable. The latter is not so easy to obtain,
and the way it can be obtained can vary greatly for different projects.
Therefore, a customizable variable
flymake-proc-get-project-include-dirs-function is used to provide the
way to implement the desired behavior.
The default implementation,
uses a make call. This requires a correct base directory, that is, a
directory containing a correct Makefile, to be determined.
As obtaining the project include directories might be a costly operation, its return value is cached in the hash table. The cache is cleared in the beginning of every syntax check attempt.