GNU m4 is an open source implementation of the traditional UNIX macro processor. It is mostly SVR4 compatible although it has some extensions (for example, handling more than 9 positional parameters to macros).