From: Scott Gonyea Date: 2010-11-20T07:43:30+09:00 Subject: [ruby-core:33260] [Ruby 1.9-Bug#4074][Open] mkmf hardcoding prevents ObjC/ObjC++ ruby extensions from building properly --mimepart_4ce6fd8c52ee5_1156b674f8e44b Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Bug #4074: mkmf hardcoding prevents ObjC/ObjC++ ruby extensions from buil= ding properly http://redmine.ruby-lang.org/issues/show/4074 Author: Scott Gonyea Status: Open, Priority: High Category: lib ruby -v: ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0] Sent to the ruby-core list on Oct 8, 2010. Submitting patch / ticket. This is in regards to patch 28765 (Jul 27, 2010). The patch notes are ra= ther blas=C3=A9: * lib/mkmf.rb (have_framework): added. http://github.com/ruby/ruby/commit/444b943e354725bf623a050c88a4a8bd3f926= c74 But it's a pretty big change, as it makes writing Ruby Extensions in Obje= ctive-C a far less stressful experience. Prior to this patch, only ".c" = files would be compiled with C compiler flags--as it was otherwise hard-c= oded as such, in mkmf.rb. I've attached a patch, to make mkmf.rb closer to what I think makes sense= . Specifically: - Adds support for the comedy-option known as Objective-C++ (.mm file ext= ension) - Banishes the hardcoding of file-extensions, when generating compiler op= tions, as I feel it leads to very unexpected behavior. - I may simply be ignorant, and I'd love to hear some thoughts... But it= seems that a "COMPILE_OBJC" constant, in mkmf, isn't all that necessary.= ie, I can't really think of a case where you'd want to compile your C and= your ObjC code (or C++ and ObjC++), differently from each other. If it is necessary, then there will be a need for COMPILE_C, COMPILE_CXX,= COMPILE_OBJC, and a COMPILE_OBJCXX. My own opinion, in that case, is mk= mf.rb could use some minor changes to make this whole process much more i= ntuitive. ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4ce6fd8c52ee5_1156b674f8e44b Content-Type: application/octet-stream; name=mkmf_objc_objcpp-sgonyea.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=mkmf_objc_objcpp-sgonyea.patch ZGlmZiAtLWdpdCBhL2xpYi9ta21mLnJiIGIvbGliL21rbWYucmIKaW5kZXgg NjI0YjRjYi4uOTNjMWQ2YiAxMDA2NDQKLS0tIGEvbGliL21rbWYucmIKKysr IGIvbGliL21rbWYucmIKQEAgLTksNyArOSw3IEBAIHJlcXVpcmUgJ3NoZWxs d29yZHMnCiBDT05GSUcgPSBSYkNvbmZpZzo6TUFLRUZJTEVfQ09ORklHCiBP UklHX0xJQlBBVEggPSBFTlZbJ0xJQiddCiAKLUNYWF9FWFQgPSAld1tjYyBj eHggY3BwXQorQ1hYX0VYVCA9ICV3W2NjIG1tIGN4eCBjcHBdCiBpZiBGaWxl OjpGTk1fU1lTQ0FTRS56ZXJvPwogICBDWFhfRVhULmNvbmNhdCgld1tDXSkK IGVuZApAQCAtMTk3MywxOCArMTk3MywxMiBAQCBzaXRlLWluc3RhbGwtcmI6 IGluc3RhbGwtcmIKICAgICAgIG1maWxlLnByaW50Zihjb21waWxlX2NvbW1h bmQsIENPTVBJTEVfQ1hYKQogICAgIGVuZAogICBlbmQKLSAgJXdbY10uZWFj aCBkbyB8ZXwKKyAgU1JDX0VYVC5lYWNoIGRvIHxlfAogICAgIENPTVBJTEVf UlVMRVMuZWFjaCBkbyB8cnVsZXwKICAgICAgIG1maWxlLnByaW50ZihydWxl LCBlLCAkT0JKRVhUKQogICAgICAgbWZpbGUucHJpbnRmKGNvbXBpbGVfY29t bWFuZCwgQ09NUElMRV9DKQogICAgIGVuZAogICBlbmQKLSAgJXdbbV0uZWFj aCBkbyB8ZXwKLSAgICBDT01QSUxFX1JVTEVTLmVhY2ggZG8gfHJ1bGV8Ci0g ICAgICBtZmlsZS5wcmludGYocnVsZSwgZSwgJE9CSkVYVCkKLSAgICAgIG1m aWxlLnByaW50Zihjb21waWxlX2NvbW1hbmQsIENPTVBJTEVfT0JKQykKLSAg ICBlbmQKLSAgZW5kCiAKICAgbWZpbGUucHJpbnQgIiQoUlVCWUFSQ0hESVIp LyIgaWYgJGV4dG91dAogICBtZmlsZS5wcmludCAiJChETExJQik6ICIKQEAg LTIxNTEsNyArMjE0NSw2IEBAIENPTVBJTEVfUlVMRVMgPSBjb25maWdfc3Ry aW5nKCdDT01QSUxFX1JVTEVTJywgJnNwbGl0KSB8fCAld1suJXMuJXM6XQog UlVMRV9TVUJTVCA9IGNvbmZpZ19zdHJpbmcoJ1JVTEVfU1VCU1QnKQogQ09N UElMRV9DID0gY29uZmlnX3N0cmluZygnQ09NUElMRV9DJykgfHwgJyQoQ0Mp ICQoSU5DRkxBR1MpICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAkKENPVVRGTEFH KSRAIC1jICQ8JwogQ09NUElMRV9DWFggPSBjb25maWdfc3RyaW5nKCdDT01Q SUxFX0NYWCcpIHx8ICckKENYWCkgJChJTkNGTEFHUykgJChDUFBGTEFHUykg JChDWFhGTEFHUykgJChDT1VURkxBRykkQCAtYyAkPCcKLUNPTVBJTEVfT0JK QyA9IGNvbmZpZ19zdHJpbmcoJ0NPTVBJTEVfT0JKQycpIHx8IENPTVBJTEVf QwogVFJZX0xJTksgPSBjb25maWdfc3RyaW5nKCdUUllfTElOSycpIHx8CiAg ICIkKENDKSAje09VVEZMQUd9Y29uZnRlc3QgJChJTkNGTEFHUykgJChDUFBG TEFHUykgIiBcCiAgICIkKENGTEFHUykgJChzcmMpICQoTElCUEFUSCkgJChM REZMQUdTKSAkKEFSQ0hfRkxBRykgJChMT0NBTF9MSUJTKSAkKExJQlMpIgo= --mimepart_4ce6fd8c52ee5_1156b674f8e44b--