| Steps for building mod_dtcl under NT for Apache with MingW32 |
| (http://www.mingw.org/). |
| |
| 1) Get Apache for NT, I used version 1.3.12. You can use the binary release |
| or build it from source. I built from source because I needed to also include |
| mod_ssl. Note that I used VC++ to build Apache - they don't support MingW32 |
| yet AFAIK. |
| |
| 2) Get mod_dtcl. Copy my makefile into place. Edit the makefile to reflect |
| your environment. By default Apache (either built from scratch or the binary |
| release) puts the source under: |
| |
| C:\Program Files\Apache Group\Apache\src |
| |
| The lib directory at |
| |
| C:\Program Files\Apache Group\Apache\lib |
| |
| is generally empty in either case - you'll be putting your import library for |
| Apache there (we'll get to that in a minute). |
| |
| 3) Apply the diffs for mod_dtcl and Apache. The diff for Apache wraps a few |
| declarations and one #include directive in the os.h file that aren't needed or |
| used with the MingW32 compiler. The diff for mod_dtcl just wraps the threaded |
| TCL declaration. I used GNU patch to do this with : |
| |
| patch -c -b < os.h.diff |
| patch -c -b < mod_dtcl.c.diff |
| |
| 4) You'll need to make import libraries for Tcl and Apache. See |
| http://www.mingw.org/mingwfaq.shtml for the background on this. I did it |
| like this : |
| |
| For TCL : |
| If you compiled Tcl from scratch with VC++: |
| |
| cd <tcl source directory>\win\release |
| echo EXPORTS > c:\temp\tcl83.def |
| nm tcl83.exp | grep ' U _' | sed 's/.* U _//' >> c:\temp\tcl83.def |
| cd <tk source directory>\win\release |
| echo EXPORTS > c:\temp\tk83.def |
| nm tk83.exp | grep ' U _' | sed 's/.* U _//' >> c:\temp\tk83.def |
| |
| Otherwise if using the Scriptics binary release do this : |
| |
| cd c:\Program Files\Tcl\lib |
| echo EXPORTS > c:\temp\tcl83.def |
| echo EXPORTS > c:\temp\tk83.def |
| nm tcl83.lib | grep ' T _' | sed 's/.* T _//' >> c:\temp\tcl83.def |
| nm tk83.lib | grep ' T _' | sed 's/.* T _//' >> c:\temp\tk83.def |
| |
| Then do this (dlltool commands are all one line): |
| |
| cd c:\Program Files\Tcl\bin |
| dlltool --def c:\temp\tcl83.def --dllname tcl83.dll \ |
| --output-lib ..\lib\libtcl83.a |
| dlltool --def c:\temp\tk83.def --dllname tk83.dll \ |
| --output-lib ..\lib\libtk83.a |
| |
| For Apache : |
| |
| Use the ApacheCore.def file I've included* and do this : |
| cd C:\Program Files\Apache Group\Apache |
| dlltool --dllname ApacheCore.dll --def c:\temp\ApacheCore.def \ |
| --output-lib lib\libapachecore.a -k |
| |
| *This file was modified from one created by Apache+mod_ssl, it may |
| need to be tweaked for plain vanilla Apache or for other module |
| installs that make source changes like mod_ssl. |
| |
| 5) Go back to where you've put mod_dtcl's sources at and run make. There |
| will be some warnings about a redefinition - you can ignore it. You should be |
| left with a file called ApacheModuleDtcl.dll. |
| |
| 6) Run make install. Make the changes to your Apache configuration as |
| described on the mod_dtcl documentation, and you are off. |
| |
| Notes : |
| |
| -- I'm pretty sure Tcl needs to be in the path of the web server; I |
| always add it to the system path. |
| -- These instructions assume you have the MingW32 gcc setup as well |
| as a good collection of GNU tools on your NT machine (sed, grep, etc). |
| They also assume you have Tcl setup. |
| -- I've tried my best to make these instructions error free but |
| mistakes are possible. |
| |
| Good Luck, |
| Craig |