Okay. I've got Ruby compiling. I'm attempting to get everything in
place, but there are a couple of issues to resolve still.

1. The zlib team recommends that you only compile to zlib1.dll if you
are linking against msvcrt.dll, because of zlib's intended status as a
"system component". As such, I am creating ruby-zlib1.dll. How can I
tell Ruby that's the version of zlib to compile against for zlib.so?
This applies to OpenSSL as well.

2. The dynamic discovery of DLLs is harder. It is possible to put
msvcr80.dll in the Ruby bin/ directory, but it is not the recommended
way to do it, since msvcr80.dll is intended to be an SxS
(side-by-side) assembly. I have made modifications to the Zlib and
OpenSSL build processes (and now pdcurses, too) to make this happen,
but the Ruby build process is a little too... confusing to me to deal
with. Basically, there's a link step and a post-link step. After the
link is done, a .manifest file is generated, e.g.:

  ruby.exe
  ruby.exe.manifest
  msvcr80-ruby18.dll
  msvcr80-ruby18.dll.manifest

Don't ask my *why*, but the linker doesn't give the ability to
automatically embed the manifest in the DLL or the EXE. However, there
is a way to do it using mt ("manifest tool").

  mt -nologo -manifest ruby.exe.manifest -outputresource:ruby.exe;1
  mt -nologo -manifest msvcr80-ruby18.dll.manifest
-outputresource:msvcr80-ruby18.dll;2

In [n]make terms, that's:

  mt -nologo $@.manifest -outputresource:$@;1 # for .exe only
  mt -nologo $@.manifest -outputresource:$@;2 # for .dll only

There's a more complex step available that supports incremental
builds, but I don't think that's the way that we want to or need to
deal with it, to be honest.

Without this step, the installer must install not only the .exe or
.dll, but the .manifest file along with it. With this step, the
installer needs be made no smarter and binaries just work the way they
always have on Windows.

I really hate to ask, in some ways, but what exactly do I have to do
to get this stuff to work?

Thanks,
-austin
--
Austin Ziegler * halostatue / gmail.com
               * Alternate: austin / halostatue.ca