Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

mkmf.rb: fix splitting options with an argument

* 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]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information...
commit d0d68df7d00f58c8ebb9a74f577dca389876d882 1 parent 977bec1
@nobu nobu authored
View
6 ChangeLog
@@ -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.
View
4 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
View
2  ext/tk/extconf.rb
@@ -1995,7 +1995,7 @@ def pthread_check()
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
View
9 lib/mkmf.rb
@@ -234,6 +234,10 @@ def modified?(target, times)
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 @@ def have_header(header, preheaders = nil, opt = "", &b)
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 @@ def configuration(srcdir)
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)
View
5 test/mkmf/test_framework.rb
@@ -5,5 +5,10 @@ class TestHaveFramework < 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
Please sign in to comment.
Something went wrong with that request. Please try again.