'Rules/C_depender.pm'
This is a PBS (Perl Build System) module.
When is ''Rules/C_depender.pm' used?
Whenever C or CPP files need to be depended. This module is automatically used when 'Rules/C.pm' is used.
What 'Rules/C_depender.pm' does.
It adds a rule to start the C depender whenevenra C or CPP node is added to the dependency graph.
it also add a rule to "build" C files. The build does nothing and is there merely to handle the case where PBS finds a dependency (a header file) must be rebuild thus forcing the rebuild of the C node too.
How does the C depender work?
The C depender first checks to see if a C dependency cache exists for the C file to depend. If the cache exists, it is read, verified and a dependency graph regenerated from the cache.
If the cache file doesn't exist, The 'PreprocessorDepend' is called to find which header files the C file depends on.
'PreprocessorDepend' must be defined in your config.
A graph is generated from the dependencies and it is serialized into a cache with the MD5 of all the nodes in the dependency graph.
The dependency graph is then merged with the global dependency graph. I finally returns the direct dependencies to the C file. As the nodes have already been merged, PBS will only link to those dependencies.
Since the header files are also considered source, we need to tell PBS that the C file must be "rebuild". This is done by returning "__PBS_FORCE_TRIGGER" as one of the dependencies.