1------------------------------------------------------------------------------- 2 3 Hercules Dynamic Modules 4 5 (on Windows) 6 7------------------------------------------------------------------------------- 8 9 Required Files 10 11 12Required files: 13 14 makefile: "{modname}.msvc" defines module name and source file(s) 15 resource file: "{modname}.rc" the module's version resource file 16 17------------------------------------------------------------------------------- 18 19 makefile stub format 20 21 22Required makefile format: 23 24 # Module name: 25 26 DYNMOD = {modname} 27 28 # Source files: 29 30 DYNOBJ = \ 31 $(O){srcfile1}.obj \ 32 $(O){srcfile2}.obj \ 33 $(O){srcfile3}.obj 34 ... etc... 35 36 Your makefile is !INCLUDEd as part of Hercules's main makefile and 37 thus your dynamic module gets built along with the rest of Hercules. 38 39------------------------------------------------------------------------------- 40 41 The MAKE/BUILD command 42 43 44Building (making): 45 46 47 dynmake.bat {projdir} {modname} {build_type} {num_cpus} [-a|clean] 48 49 e.g.: 50 51 "X:\Hercules\dynmake.bat" "$(SolutionDir)" {modname} RETAIL 32 -a 52 53 54 The {projdir} value you pass MUST be a fully qualified path to your 55 dynamic module's project directory where all of your files are. The 56 dynamke.bat command you invoke should also be a fully qualifed path 57 to the desired Hercules dynmake.bat file. The other arguments (i.e. 58 {build_type}, {num_cpus}, etc) are identical to the values normally 59 specified for the main Hercules "makefile.bat" command used to build 60 Hercules with. Refer to makefile.bat for details. 61 62------------------------------------------------------------------------------- 63 64 Pre-Build event and Post-Build event callbacks 65 66 67Optional files: 68 69 prebuild.bat Called before the main Hercules makefile.bat is called. 70 postbld.bat Called after the main Hercules makefile.bat is called. 71 72 During the build process, dynmake.bat checks if the file exists in your 73 specified project directory and if it does, calls it with the following 74 parameters: 75 76 {hercdir} {modname} {build_type} {num_cpus} [-a|clean] 77 78 The {hercdir} value is the fully qualified path the main Hercules source 79 code directory. The other parameters are the same values that you passed 80 to the dynmake.bat command. 81 82------------------------------------------------------------------------------- 83 84 Resource Compiler 85 86 87For your convenience the following #defines are also passed to the resource 88compiler on the command-line during the actual build process: 89 90 VERSION The Hercules version string (e.g. "3.06-svn-5602") 91 TARGETFILENAME Your module name string (e.g. "{modname}.dll") 92 MAX_CPU_ENGINES_STR Number of CPUs as a string (e.g. "32") 93 94 Use them in your .rc resource file's VERSIONINFO structure as needed. 95 96------------------------------------------------------------------------------- 97 98 The Build Process 99 100 101Dynmake.bat first creates a work subdirectory beneath Hercules's main source 102code directory using the same name as the {modname} you passed to it. 103 104It then calls your prebuild.bat file if it exists. Use this callback to 105perform any pre-build adjustments to your source files that may be necessary 106before the actual build process begins. 107 108When your prebuild.bat returns, it then copys all *.c, *.h, *.rc, *.rc2 and 109*.msvc files from your project directory into its {modname} subdirectory and 110invokes Hercules's primary "makefile.bat" script to perform the actual build. 111 112When the build is done it then calls your postbld.bat callback if it exists. 113You can use this callback to copy the resulting binary from Hercules's output 114directory to your project directory or whatever other post-build processing 115your product may require. 116 117------------------------------------------------------------------------------- 118 119 More Information 120 121 122For additional information regarding dynamic modules please see the "Hercules 123Dynamic Loader" readme document called "README.HDL". 124 125------------------------------------------------------------------------------- 126