Last Friday the morning session of my Languages for Scientific Computing class was about Makefile. Well, largely there was nothing interesting since I know how Makefile works already. But, still the teaching assistant could surprise me with:
Since the first day I fidded with a GNU/Linux system, I have called
make mrproper for several times when building a Linux kernel again and again with different configurations. But, I had never known what it means by
mrproper except that it fixed a build problem that I encountered. So, I thought that it was about making a proper dependency tree.
The teaching assistant was showing the step-by-step refinement of a simple Makefile into a rather complex one. After mentioning the
clean target whose semantic I really do understand, he introduced
mrproper that cleans more than the
clean target. What? So, I asked the teaching assistant what
mrproper stands for. He said that it is the name of a guy that advertises a cleaning product. The guy is called Mr. Proper. Ah, now I know the semantic of
mrproper. Well, I really should have googled for that since years ago, but I grew up in an era and a place where Internet and search engine were not readily accessible so that I was not accustomed to looking up trivial things with a search engine.
make mrproper has the semantic of returning the source tree to its former clean state without any generated artifact while
make clean may still leave generated artifacts like the executable objects or generated reports while removing all intermediate artifacts like the object files that make up an executable object. The target
mrproper stands for Mr. Proper, the name of a guy in a cleaning product advertisement as can be seen here.