Lastly, let's say that steel.c needs to be compiled with a different C compiler from everything else. For this example we'll use metalcc. This is because the source files already depend on the headers, and the filesystem has recorded this. At the time of compilation, these are pre-existing dependencies, and do not need to be explicitly given. Whilst there is nothing syntactically incorect about stating thse dependencies explicitly, it keeps the approach consistant, not to do so.
Any filename occuring on the left-hand side of any dependency is called a target .
RelFS will accept any one or more targets in the environment variables it uses. Build Rules RelFS allows the user to define a number of build rules with each target . These can contain one or more standard shell commands. Traditionally, one use for build rules is to define how the given source file is to be compiled. Because RelFS defines all dependencies, including those between the source file and an appropriate compiler, build rules of this kind are largely redundant.