The auto-tools way ./configure --with-this --without-that --option=foo A zillion languages configure.ac is written in M4 configure is unadorned sh (= binary file) Makefile.am is written in god-knows-what ... If it breaks, you are lost No way to ship a configuration to the user You can ship a over-long command line Actually, your developer rarely offers serious built-time config Which may be a plus: fewer options means fewer bugs