------------------------------------------------------------------------------- Hercules Dynamic Modules (on Windows) ------------------------------------------------------------------------------- Required Files Required files: makefile: "{modname}.msvc" defines module name and source file(s) resource file: "{modname}.rc" the module's version resource file ------------------------------------------------------------------------------- makefile stub format Required makefile format: # Module name: DYNMOD = {modname} # Source files: DYNOBJ = \ $(O){srcfile1}.obj \ $(O){srcfile2}.obj \ $(O){srcfile3}.obj ... etc... Your makefile is !INCLUDEd as part of Hercules's main makefile and thus your dynamic module gets built along with the rest of Hercules. ------------------------------------------------------------------------------- The MAKE/BUILD command Building (making): dynmake.bat {projdir} {modname} {build_type} {num_cpus} [-a|clean] e.g.: "X:\Hercules\dynmake.bat" "$(SolutionDir)" {modname} RETAIL 32 -a The {projdir} value you pass MUST be a fully qualified path to your dynamic module's project directory where all of your files are. The dynamke.bat command you invoke should also be a fully qualifed path to the desired Hercules dynmake.bat file. The other arguments (i.e. {build_type}, {num_cpus}, etc) are identical to the values normally specified for the main Hercules "makefile.bat" command used to build Hercules with. Refer to makefile.bat for details. ------------------------------------------------------------------------------- Pre-Build event and Post-Build event callbacks Optional files: prebuild.bat Called before the main Hercules makefile.bat is called. postbld.bat Called after the main Hercules makefile.bat is called. During the build process, dynmake.bat checks if the file exists in your specified project directory and if it does, calls it with the following parameters: {hercdir} {modname} {build_type} {num_cpus} [-a|clean] The {hercdir} value is the fully qualified path the main Hercules source code directory. The other parameters are the same values that you passed to the dynmake.bat command. ------------------------------------------------------------------------------- Resource Compiler For your convenience the following #defines are also passed to the resource compiler on the command-line during the actual build process: VERSION The Hercules version string (e.g. "3.06-svn-5602") TARGETFILENAME Your module name string (e.g. "{modname}.dll") MAX_CPU_ENGINES_STR Number of CPUs as a string (e.g. "32") Use them in your .rc resource file's VERSIONINFO structure as needed. ------------------------------------------------------------------------------- The Build Process Dynmake.bat first creates a work subdirectory beneath Hercules's main source code directory using the same name as the {modname} you passed to it. It then calls your prebuild.bat file if it exists. Use this callback to perform any pre-build adjustments to your source files that may be necessary before the actual build process begins. When your prebuild.bat returns, it then copys all *.c, *.h, *.rc, *.rc2 and *.msvc files from your project directory into its {modname} subdirectory and invokes Hercules's primary "makefile.bat" script to perform the actual build. When the build is done it then calls your postbld.bat callback if it exists. You can use this callback to copy the resulting binary from Hercules's output directory to your project directory or whatever other post-build processing your product may require. ------------------------------------------------------------------------------- More Information For additional information regarding dynamic modules please see the "Hercules Dynamic Loader" readme document called "README.HDL". -------------------------------------------------------------------------------