diff --git a/data/Rakefile b/data/Rakefile index e7c5b1fd..285350f9 100644 --- a/data/Rakefile +++ b/data/Rakefile @@ -126,20 +126,22 @@ task :bridgesupport_files do sdk_path = "#{platform_dev_path}/SDKs/iPhoneSimulator#{sdk_version}.sdk" sdk_frameworks = "#{sdk_path}/System/Library/Frameworks" mkdir_p "ios/#{sdk_version}/BridgeSupport" + mkdir_p "ios/#{sdk_version}/BridgeSupport/child" Dir.glob('*.bridgesupport').each { |bs| cp bs, "ios/#{sdk_version}/BridgeSupport" } Dir.glob('ios/*.bridgesupport').each { |bs| cp bs, "ios/#{sdk_version}/BridgeSupport" } - Dir.glob(File.join(sdk_frameworks, '*.framework')).each do |framework_path| + generate_bridgesupport_file = lambda do |sdk_path, sdk_version, framework_path, is_handle_nested| framework = File.basename(framework_path, '.framework') - next if EXCLUDED_FRAMEWORKS.include?(framework) - next unless File.exist?(File.join(framework_path, framework)) - next unless File.exist?(File.join(framework_path, 'Headers')) + break if EXCLUDED_FRAMEWORKS.include?(framework) + break unless File.exist?(File.join(framework_path, framework)) + break unless File.exist?(File.join(framework_path, 'Headers')) dest = "ios/#{sdk_version}/BridgeSupport/#{framework}.bridgesupport" + dest = "ios/#{sdk_version}/BridgeSupport/child/#{framework}.bridgesupport" if is_handle_nested unless File.exist?(dest) a = sdk_version.scan(/(\d+)\.(\d+)/)[0] sdk_version_headers = ((a[0].to_i * 10000) + (a[1].to_i * 100)).to_s - sh "/usr/bin/gen_bridge_metadata --format complete --no-64-bit --cflags \"-isysroot #{sdk_path} -miphoneos-version-min=#{sdk_version} -DTARGET_OS_IPHONE -D__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__=#{sdk_version_headers} -framework #{framework}\" --framework #{sdk_frameworks}/#{framework}.framework > #{dest}" + sh "/usr/bin/gen_bridge_metadata --format complete --no-64-bit --cflags \"-isysroot #{sdk_path} -miphoneos-version-min=#{sdk_version} -DTARGET_OS_IPHONE -D__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__=#{sdk_version_headers} -framework #{framework}\" --framework #{framework_path} > #{dest}" apply_bridgesupport_fixes(dest) if framework == 'Foundation' and sdk_version >= '7.0' @@ -147,6 +149,20 @@ task :bridgesupport_files do sh "/usr/bin/gen_bridge_metadata --format complete --no-64-bit --cflags \"-isysroot #{sdk_path} -miphoneos-version-min=#{sdk_version} -DTARGET_OS_IPHONE -D__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__=#{sdk_version_headers} -framework #{framework} -I#{sdk_path}/usr/include \" objc/NSObject.h objc/NSObjCRuntime.h > /tmp/NSObject.bridgesupport" merge_bridgesupport dest, '/tmp/NSObject.bridgesupport' end + + return dest + end + return dest if is_handle_nested + end + + Dir.glob(File.join(sdk_frameworks, '*.framework')).each do |framework_path| + base_bridgesupport_path = generate_bridgesupport_file.call(sdk_path, sdk_version, framework_path, false) + if base_bridgesupport_path + child_framework_paths = Dir.glob(File.join(framework_path, '/Frameworks/*.framework')) + child_framework_paths.each do |child_framework_path| + merge_path = generate_bridgesupport_file.call(sdk_path, sdk_version, child_framework_path, true) + merge_bridgesupport(base_bridgesupport_path, merge_path) + end end end end