diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rwxr-xr-x | ext/extmk.rb | 4 | ||||
-rw-r--r-- | ext/tk/extconf.rb | 2 | ||||
-rw-r--r-- | lib/mkmf.rb | 9 | ||||
-rw-r--r-- | test/mkmf/test_framework.rb | 5 |
5 files changed, 20 insertions, 6 deletions
@@ -1,3 +1,9 @@ +Fri Sep 7 01:21:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * ext/extmk.rb (extmake), lib/mkmf.rb (have_framework): fix splitting + options with an argument, not using NUL as special character. + [ruby-core:47447] [Bug #6987] + Thu Sep 6 14:49:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org> * .gdbinit (rp): FLONUM support. diff --git a/ext/extmk.rb b/ext/extmk.rb index e3685d0c7d..3082a00994 100755 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -258,9 +258,9 @@ def extmake(target) $extlibs ||= [] $extpath ||= [] unless $mswin - $extflags = ($extflags.split | $DLDFLAGS.split | $LDFLAGS.split).join(" ") + $extflags = split_libs($extflags, $DLDFLAGS, $LDFLAGS).uniq.join(" ") end - $extlibs = merge_libs($extlibs, $libs.split(/\s+(?=-|\z)/), $LOCAL_LIBS.split(/\s+(?=-|\z)/)) + $extlibs = merge_libs($extlibs, split_libs($libs), split_libs($LOCAL_LIBS)) $extpath |= $LIBPATH end ensure diff --git a/ext/tk/extconf.rb b/ext/tk/extconf.rb index 778201c396..72dd6cf21d 100644 --- a/ext/tk/extconf.rb +++ b/ext/tk/extconf.rb @@ -1995,7 +1995,7 @@ if TkLib_Config["tcltk-framework"] end end end - $LDFLAGS << ' ' << libs.gsub(/((?:\A|\s)-framework)\s/, "\\1\0") + $LDFLAGS << ' ' << libs $libs << ' -ltk -ltcl' setup_for_macosx_framework(tclver, tkver) if tcl_cfg_dir && tk_cfg_dir end diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 39113b5130..5a0d2743d1 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -234,6 +234,10 @@ module MakeMakefile t if times.all? {|n| n <= t} end + def split_libs(*strs) + strs.map {|s| s.split(/\s+(?=-|\z)/)}.flatten + end + def merge_libs(*libs) libs.inject([]) do |x, y| xy = x & y @@ -1018,11 +1022,10 @@ SRC def have_framework(fw, &b) checking_for fw do src = cpp_include("#{fw}/#{fw}.h") << "\n" "int main(void){return 0;}" - if try_link(src, "-ObjC -framework #{fw}", &b) + if try_link(src, opt = "-ObjC -framework #{fw}", &b) $defs.push(format("-DHAVE_FRAMEWORK_%s", fw.tr_cpp)) # TODO: non-worse way than this hack, to get rid of separating # option and its argument. - opt = " -ObjC -framework\0#{fw}" $LDFLAGS << opt true else @@ -1804,7 +1807,7 @@ INCFLAGS = -I. #$INCFLAGS DEFS = #{CONFIG['DEFS']} CPPFLAGS = #{extconf_h}#{$CPPFLAGS} CXXFLAGS = $(CFLAGS) #{CONFIG['CXXFLAGS']} -ldflags = #{$LDFLAGS.tr("\0", " ")} +ldflags = #{$LDFLAGS} dldflags = #{$DLDFLAGS} #{CONFIG['EXTDLDFLAGS']} ARCH_FLAG = #{$ARCH_FLAG} DLDFLAGS = $(ldflags) $(dldflags) $(ARCH_FLAG) diff --git a/test/mkmf/test_framework.rb b/test/mkmf/test_framework.rb index 12f60dee9c..39171a0bb6 100644 --- a/test/mkmf/test_framework.rb +++ b/test/mkmf/test_framework.rb @@ -5,5 +5,10 @@ class TestMkmf def test_core_foundation_framework assert(have_framework("CoreFoundation"), mkmflog("try as Objective-C")) end + + def test_multi_frameworks + assert(have_framework("CoreFoundation"), mkmflog("try as Objective-C")) + assert(have_framework("Cocoa"), mkmflog("try as Objective-C")) + end end end if /darwin/ =~ RUBY_PLATFORM |