--------------ms040900010709000303040103 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit From my experience using both tool chains on Windows (for the ruby-prof extension and SWIG-based extensions for GEOS and GDAL). * You can build Ruby extensions using MingW that run against Ruby built with VC++. I've done this with Ruby 1.8.2/1.8.4, various MingW releases and VC++ 2003 and VC++ 2005. This used to require changing a small bug in ruby.h for Ruby 1.8.2, but that bug has been fixed with 1.8.4. For more info see http://rubyforge.org/tracker/?func=detail&atid=1698&aid=2206&group_id=426. * However, you cannot do this with MingW using VC++ built Ruby. > ruby extconf.rb > make > make install The problem is that extconf is quite limited - it will assume you are building your extension with the same compiler that built Ruby (VC++). Python avoids this issue because disutils will recognize the compiler being used (MingW, VC++) for the extension and provide the correct command line parameters. * If mkrf (http://glu.ttono.us/articles/2006/06/28/mkrf-0-1-0-released) can work like Python distutils, then it will become simple to use MingW to build extensions that work with VC++ * When compiling with MingW do not link against the ruby *.lib files. Instead, just link directly against the DLL (msvcrt-ruby18.dll). Its faster (links much faster) and works better. * So you need to manually compile your extension or create a makefile to do it. This actually turns out be the way GEOS and GDAL work - they have autoconf based build systems so extconf.rb wouldn't fit in anyway. * The advantage of MingW is that it avoids the unmanaged assemblies that VC++8 uses, so its simpler to deal with (this is a good link about manage assemblies - http://www.grimes.demon.co.uk/workshops/fusWSThirteen.htm) * VC++ has several large advantages on Windows. First, it lets you debug your extensions while GDB does not support this on Windows (or if it does, its never worked for me). Second, it compiles much faster Third, there is a lot more help available. Forth, its quite easy to build Ruby extensions. * Using MingW on Windows is a huge barrier to entry. Gettting MingW setup, along with msys, is a time consuming process that only experienced *Nix developers will understand and be able to do. * MingW on Windows is not very easy to use. Its nice to think that you can download an open source project, type ./configure, make, make install and it will work. Alas, it doesn't really work that way. There are myriad of issues you run into. First you'll need msys. Then many projects have prequisites that you'll have to download and compile. In addition, you often times have to change the CFLAGS and LDFLAGS to get successful compiles. Linking is a pain and requires hand-holding, and sometime just doesn't work. Libtool is really flakey on Windows. For some projects, you'll have to need to download/build/install the latest version of it. You also need to get autoconf/automake installed. Many projects require bison - something I've never been able to successfully compile on Windows. All in all - it literally took me weeks to figure out how to get everything to work together. The MingW/msys tool chain is quite complex on Windows, and most people won't have the time or desire to put forth the effort to get it to work. My recommendation: * Use VC++ 2005 and get Microsoft to tell us how to properly use unmanaged assemblies so that we can avoid dll hell * Make sure that mkrf supports building Ruby extensions "out-of-the-box" on Windows using MingW if you have it installed. I think this would be the best of both worlds - you support both tool chains. VC++ is the default one, but MingW should work fine for building extensions. Hope this helps - I'd be glad to share more of my experiences if its helpful. Charlie --------------ms040900010709000303040103 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJAzCC AtwwggJFoAMCAQICEFby1ChIT+pmYLkFBWX20TIwDQYJKoZIhvcNAQEEBQAwYjELMAkGA1UE BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMT I1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA2MDUxMzIyNTQyM1oX DTA3MDUxMzIyNTQyM1owQzEfMB0GA1UEAxMWVGhhd3RlIEZyZWVtYWlsIE1lbWJlcjEgMB4G CSqGSIb3DQEJARYRY2Zpc0BzYXZhZ2V4aS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQDDPyi9Z2s8673fAOxX6/EhWhAo2bb8/BcU7xiV49a9TWExEAufzQuAKvKdRWlm MKuTwdU/QKgrZ1bCcb3cIznHjFI5AmG4nkqUMzqzgzPDDwbiE6AXYXzdd+efDF1mVUQJF/nm N26xC576KC3e+T1jK2n4DosnIxqQlTVH02huREgMrnPDR82susVvtKa3BV1xx1Fm1+8qkISp 4Ym8LaBQ72nH879OFLHeH/1oP4FAp7qfZAWtlse8mSajhHN6mAH+wFUOG1yrNsM2mKVVAhIv ByolY+VTa9RBWXgvOhdmJyQd56fag85/zaUjQfUChiYBmx4IWVbc9TKtcx6btDxrAgMBAAGj LjAsMBwGA1UdEQQVMBOBEWNmaXNAc2F2YWdleGkuY29tMAwGA1UdEwEB/wQCMAAwDQYJKoZI hvcNAQEEBQADgYEAeCTsNZ/SvrF8JPbFBychryTZlDzu415g2JQDaPa9+gBFaMpWvsE/rzNO 2nBhz4nXayb8QQMA5+RjTavo/fEmittd2ZjNYItA7glkw0R01kmf/ZEWehLQrVoQ5bbKycED giA0ykm/936Gzin+RrXwYc9qp5CGawWFj7ceOqmUv8owggLcMIICRaADAgECAhBW8tQoSE/q ZmC5BQVl9tEyMA0GCSqGSIb3DQEBBAUAMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3 dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJl ZW1haWwgSXNzdWluZyBDQTAeFw0wNjA1MTMyMjU0MjNaFw0wNzA1MTMyMjU0MjNaMEMxHzAd BgNVBAMTFlRoYXd0ZSBGcmVlbWFpbCBNZW1iZXIxIDAeBgkqhkiG9w0BCQEWEWNmaXNAc2F2 YWdleGkuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwz8ovWdrPOu93wDs V+vxIVoQKNm2/PwXFO8YlePWvU1hMRALn80LgCrynUVpZjCrk8HVP0CoK2dWwnG93CM5x4xS OQJhuJ5KlDM6s4Mzww8G4hOgF2F83XfnnwxdZlVECRf55jdusQue+igt3vk9Yytp+A6LJyMa kJU1R9NobkRIDK5zw0fNrLrFb7SmtwVdccdRZtfvKpCEqeGJvC2gUO9px/O/ThSx3h/9aD+B QKe6n2QFrZbHvJkmo4RzepgB/sBVDhtcqzbDNpilVQISLwcqJWPlU2vUQVl4LzoXZickHeen 2oPOf82lI0H1AoYmAZseCFlW3PUyrXMem7Q8awIDAQABoy4wLDAcBgNVHREEFTATgRFjZmlz QHNhdmFnZXhpLmNvbTAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBAUAA4GBAHgk7DWf0r6x fCT2xQcnIa8k2ZQ87uNeYNiUA2j2vfoARWjKVr7BP68zTtpwYc+J12sm/EEDAOfkY02r6P3x JorbXdmYzWCLQO4JZMNEdNZJn/2RFnoS0K1aEOW2ysnBA4IgNMpJv/d+hs4p/ka18GHPaqeQ hmsFhY+3HjqplL/KMIIDPzCCAqigAwIBAgIBDTANBgkqhkiG9w0BAQUFADCB0TELMAkGA1UE BhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl cyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIENBMSswKQYJ KoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUuY29tMB4XDTAzMDcxNzAwMDAw MFoXDTEzMDcxNjIzNTk1OVowYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25z dWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJ c3N1aW5nIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEpjxVc1X7TrnKmVoeaMB1 BHCd3+n/ox7svc31W/Iadr1/DDph8r9RzgHU5VAKMNcCY1osiRVwjt3J8CuFWqo/cVbLrzwL B+fxH5E2JCoTzyvV84J3PQO+K/67GD4Hv0CAAmTXp6a7n2XRxSpUhQ9IBH+nttE8YQRAHmQZ cmC3+wIDAQABo4GUMIGRMBIGA1UdEwEB/wQIMAYBAf8CAQAwQwYDVR0fBDwwOjA4oDagNIYy aHR0cDovL2NybC50aGF3dGUuY29tL1RoYXd0ZVBlcnNvbmFsRnJlZW1haWxDQS5jcmwwCwYD VR0PBAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFQcml2YXRlTGFiZWwyLTEzODAN BgkqhkiG9w0BAQUFAAOBgQBIjNFQg+oLLswNo2asZw9/r6y+whehQ5aUnX9MIbj4Nh+qLZ82 L8D0HFAgk3A8/a3hYWLD2ToZfoSxmRsAxRoLgnSeJVCUYsfbJ3FXJY3dqZw5jowgT2Vfldr3 94fWxghOrvbqNOUQGls1TXfjViF4gtwhGTXeJLHTHUb/XV9lTzGCA2QwggNgAgEBMHYwYjEL MAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAq BgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhBW8tQoSE/qZmC5 BQVl9tEyMAkGBSsOAwIaBQCgggHDMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI hvcNAQkFMQ8XDTA2MDcxOTAxMzU0OVowIwYJKoZIhvcNAQkEMRYEFBD1WbJWhCZ4dC2TrRUZ yO51pDzGMFIGCSqGSIb3DQEJDzFFMEMwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0G CCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIGFBgkrBgEEAYI3EAQxeDB2 MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQu MSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQVvLUKEhP 6mZguQUFZfbRMjCBhwYLKoZIhvcNAQkQAgsxeKB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQK ExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29u YWwgRnJlZW1haWwgSXNzdWluZyBDQQIQVvLUKEhP6mZguQUFZfbRMjANBgkqhkiG9w0BAQEF AASCAQC2vSU2FhBf8wOzwaurnIKB2SM4THma8We+aHlh60qu6dQ1X3AvNTqF94E1fbKlYI3G o4pfm0Velt+Kgo/rI+czEH0wEDmh84zEaK60wjayld9V9YmpXy3IFAFfPH+6YU0MxFaFl7UQ yqN01sYrAb2XGs4eimT2qK7Rg/ubJl5f8y/n0tMkxaU03yuQnkRMdeMXF18cWC6U6yPthaCz WQ/ItrMF7drLcMpIn/ZuyOoq0g2kopcYC/FtM0yotinYod001xMqQpbZ5ySAZCVGR+V6DWG8 HNAGeUUKPFCiyu/qRX6RLfIOU4NB2nfc8i8VnWUh2Q7wfZEtxDCxbdC7Laq2AAAAAAAA --------------ms040900010709000303040103--