The average computer user was often an expert. The folks at the FSF have had more experience than many other groups porting numerous packages to even more platforms. They looked at all the options listed above and decided to learn from that experience. Autoconf solves a lot of the problems I have listed above, making it easier to port and maintain large software packages that need to compile and run on many platforms. In this section I present one simple example of how Autoconf comes in very handy.
Some systems have the bzero function, others have the memset function, and some have both.
One way to write portable code that will take care of both is to use bzero exclusively throughout your code and map memset to it when it is the only one available. Note that a package being autoconfiscated using the above example needs to be carefully reviewed to make sure that only bzero is being used throughout. That is some of the tedious part of the autoconfiscation process that must be repeated for each and every test being added. It is no wonder that a large package such Amd can take a year's worth of one person's effort to autoconfiscate. The next section describes the efforts I undertook in more detail.