diff options
author | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-08-03 13:44:30 +0000 |
---|---|---|
committer | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-08-03 13:44:30 +0000 |
commit | ab660694feb8128c8a1c5bdadea21acb5af89810 (patch) | |
tree | f196c62223729288518a84847a9d498e134de3cc | |
parent | a1525108b87dac3032754f4152d37258f3ea4c0c (diff) |
merge revision(s) 41777,41779: [Backport #8593]
* lib/mkmf.rb (have_framework): allow header file to check.
[ruby-core:55745] [Bug #8593]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@42357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/mkmf.rb | 10 | ||||
-rw-r--r-- | test/mkmf/test_framework.rb | 32 | ||||
-rw-r--r-- | version.h | 2 |
4 files changed, 47 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Sat Aug 3 22:40:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * lib/mkmf.rb (have_framework): allow header file to check. + [ruby-core:55745] [Bug #8593] + Sat Aug 3 22:24:44 2013 Shota Fukumori <her@sorah.jp> * lib/uri/common.rb (URI.decode_www_form_component): diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 6fec4bd8f4..8ea4d8eb32 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -1054,9 +1054,17 @@ SRC # the +HAVE_FRAMEWORK_RUBY+ preprocessor macro would be passed to the # compiler. # + # If +fw+ is a pair of the framework name and its header file name + # that header file is checked, instead of the normally used header + # file which is named same as the framework. def have_framework(fw, &b) + if Array === fw + fw, header = *fw + else + header = "#{fw}.h" + end checking_for fw do - src = cpp_include("#{fw}/#{fw}.h") << "\n" "int main(void){return 0;}" + src = cpp_include("#{fw}/#{header}") << "\n" "int main(void){return 0;}" opt = " -framework #{fw}" if try_link(src, "-ObjC#{opt}", &b) $defs.push(format("-DHAVE_FRAMEWORK_%s", fw.tr_cpp)) diff --git a/test/mkmf/test_framework.rb b/test/mkmf/test_framework.rb index 39171a0bb6..1b595aab7a 100644 --- a/test/mkmf/test_framework.rb +++ b/test/mkmf/test_framework.rb @@ -2,6 +2,24 @@ require_relative 'base' class TestMkmf class TestHaveFramework < TestMkmf + def create_framework(fw, hdrname = "#{fw}.h") + Dir.mktmpdir("frameworks") do |dir| + fwdir = "#{dir}/#{fw}.framework" + hdrdir = "#{fwdir}/Headers" + FileUtils.mkdir_p(hdrdir) + File.write("#{hdrdir}/#{hdrname}", "") + src = "#{fwdir}/main.c" + File.write(src, "void #{fw}(void) {}") + cmd = LINK_SO.dup + RbConfig.expand(cmd, RbConfig::CONFIG.merge("OBJS"=>src)) + cmd.sub!("$@", "#{fwdir}/#{fw}") + cmd.sub!(/ -bundle /, ' -dynamiclib ') + assert(xsystem(cmd), MKMFLOG) + $INCFLAGS << " " << "-F#{dir}".quote + yield fw, hdrname + end + end + def test_core_foundation_framework assert(have_framework("CoreFoundation"), mkmflog("try as Objective-C")) end @@ -10,5 +28,19 @@ class TestMkmf assert(have_framework("CoreFoundation"), mkmflog("try as Objective-C")) assert(have_framework("Cocoa"), mkmflog("try as Objective-C")) end + + def test_empty_framework + create_framework("MkmfTest") do |fw| + assert(have_framework(fw), MKMFLOG) + end + end + + def test_different_name_header + bug8593 = '[ruby-core:55745] [Bug #8593]' + create_framework("MkmfTest", "test_mkmf.h") do |fw, hdrname| + assert(!have_framework(fw), MKMFLOG) + assert(have_framework([fw, hdrname]), MKMFLOG) + end + end end end if /darwin/ =~ RUBY_PLATFORM @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.0.0" #define RUBY_RELEASE_DATE "2013-08-03" -#define RUBY_PATCHLEVEL 285 +#define RUBY_PATCHLEVEL 286 #define RUBY_RELEASE_YEAR 2013 #define RUBY_RELEASE_MONTH 8 |