1. A computer-implemented method for generating a dispatching function in an executable parent program module, the method comprising computer-implemented operations for: generating, through a computer comprising a processor and a memory coupled to the processor, a first description file, a second description file, and a third description file, the first description file comprising a first routine identifier identifying a first initialization routine to be called by a first dispatching function and a first parent program module identifier identifying an executable first parent program module, the executable first parent program module comprising the first dispatching function, the second description file comprising a second routine identifier identifying a second initialization routine to be called by the first dispatching function after calling the first initialization routine and a second parent program module identifier identifying the executable first parent program module, the third description file comprising a third routine identifier identifying a third initialization routine to be called by a second dispatching function and a third parent program module identifier identifying an executable second parent program module, the executable second parent program module comprising the second dispatching function, the executable first parent program module comprising a firmware, the first initialization routine and the second initialization routine comprising routines for customizing operation of the firmware; determining, through the computer, whether the first parent program module identifier matches the executable first parent program module; in response to determining that the first parent program module identifier matches the executable first parent program module, adding, through the computer, a first call to the first initialization routine to the first dispatching function; determining, through the computer, whether the second parent program module identifier matches the executable first parent program module; in response to determining that the second parent program module identifier matches the executable first parent program module, adding, through the computer, a second call to the second initialization routine to the first dispatching function; determining, through the computer, whether the third parent program module identifier matches the executable first parent program module; in response to determining that the third parent program module identifier does not match the executable first parent program module, omitting, through the computer, a third call to the third initialization routine from the first dispatching function; building, through the computer, a list of routine identifiers containing the first routine identifier from the first description file and the second routine identifier from the second description file, the first routine identifier identifying the first initialization routine to be called by the first dispatching function and the second routine identifier identifying the second initialization to be called by the first dispatching function; executing, through the computer, a makefile macro to generate an initialization source file comprising program code configured to call the first initialization routine and the second initialization corresponding to the first routine identifier and the second routine identifier in the list of routine identifiers; compiling, through the computer, the initialization source file; compiling, through the computer, program code for the executable first parent program module; and linking, through the computer, the compiled initialization source file and the compiled program code for the executable first parent program module to generate the executable first parent program module containing the first dispatching function configured to call the first initialization routine and the second initialization corresponding to the first routine identifier and the second routine identifier in the list of routine identifiers.