D.11 Automatically generated Makefile
s
PuTTY is intended to compile on multiple platforms, and with multiple compilers. It would be horrifying to try to maintain a single Makefile
which handled all possible situations, and just as painful to try to directly maintain a set of matching Makefile
s for each different compilation environment.
Therefore, we have moved the problem up by one level. In the PuTTY source archive is a file called Recipe
, which lists which source files combine to produce which binaries; and there is also a script called mkfiles.pl
, which reads Recipe
and writes out the real Makefile
s. (The script also reads all the source files and analyses their dependencies on header files, so we get an extra benefit from doing it this way, which is that we can supply correct dependency information even in environments where it's difficult to set up an automated make depend
phase.)
You should never edit any of the PuTTY Makefile
s directly. They are not stored in our source repository at all. They are automatically generated by mkfiles.pl
from the file Recipe
.
If you need to add a new object file to a particular binary, the right thing to do is to edit Recipe
and re-run mkfiles.pl
. This will cause the new object file to be added in every tool that requires it, on every platform where it matters, in every Makefile
to which it is relevant, and to get all the dependency data right.
If you send us a patch that modifies one of the Makefile
s, you just waste our time, because we will have to convert it into a change to Recipe
. If you send us a patch that modifies all of the Makefile
s, you will have wasted a lot of your time as well!
(There is a comment at the top of every Makefile
in the PuTTY source archive saying this, but many people don't seem to read it, so it's worth repeating here.)