During generation, mkmk goes down the build tree and creates a Makefile, for each build directory. The Makefiles are used to build the binary files and each of these Makefiles is autonomous. This means that you can set make running from any directory and all files located in the subdirectories attached to that directory are automatically built. The Makefile content depends on the mkmk production files.
In each directory, where mkmk produces a Makefile, mkmk:
Calculates the initial value of the variables, in relation to the Makefile of the parent directory.
Activates the .df script files, located in the current directory, in a parallel shell.
Asks the shell to recover the values of the variables defined by the .df files.
The list of files to be compiled varies depending on the merge operation. Writing a Makefile that will work on several configurations can be complicated. The solution offered by mkmk is described by the following two steps:
To place the .mf files found in split trees at the same directory level as the sources files to be compiled.
To concatenate the .mf files inside the Makefile that it produces.
The .mf files do not have an equivalent within the imake tool.
The mkmk tool will regenerate the Makefile produced, if the .df, .bf or .mf files used to build it change.