class Object
Public Instance Methods
construct_ios_framework(platform_name, *source_platforms)
click to toggle source
# File lib/rxcode/tasks/ios_framework.rb, line 144 def construct_ios_framework(platform_name, *source_platforms) build_dir = ENV['BUILD_DIR'] configuration = ENV['CONFIGURATION'] project_name = ENV['PROJECT_NAME'] product_name = ENV['PRODUCT_NAME'] static_target = ENV['STATIC_TARGET'] if source_platforms.empty? source_platforms = [ platform_name ] end source_library_paths = source_platforms.collect do |source_platform_name| "\"#{build_dir}/#{configuration}-#{source_platform_name}/lib#{static_target}.a\"" end platform_dir = "#{build_dir}/#{configuration}-#{platform_name}" platform_library_path = "#{platform_dir}/#{product_name}" framework = "#{platform_dir}/#{product_name}.framework" # Create framework directory structure. # rm -rf "${FRAMEWORK}" && # mkdir -p "${UNIVERSAL_LIBRARY_DIR}" && # mkdir -p "${FRAMEWORK}/Versions/A/Headers" && # mkdir -p "${FRAMEWORK}/Versions/A/Resources" && FileUtils.rm_rf framework FileUtils.mkdir_p platform_dir FileUtils.mkdir_p "#{framework}/Versions/A/Headers" FileUtils.mkdir_p "#{framework}/Versions/A/Resources" # Generate universal binary from desktop, device, and simulator builds. # lipo "${SIMULATOR_LIBRARY_PATH}" "${DEVICE_LIBRARY_PATH}" -create -output "${UNIVERSAL_LIBRARY_PATH}" && `lipo #{source_library_paths.join(' ')} -create -output "#{platform_library_path}"` # Move files to appropriate locations in framework paths. # cp "${UNIVERSAL_LIBRARY_PATH}" "${FRAMEWORK}/Versions/A" && # cd "${FRAMEWORK}/Versions" && # ln -s "A" "Current" && # cd "${FRAMEWORK}" && # ln -s "Versions/Current/Headers" "Headers" && # ln -s "Versions/Current/Resources" "Resources" && # ln -s "Versions/Current/${PRODUCT_NAME}" "${PRODUCT_NAME}" FileUtils.cp platform_library_path, "#{framework}/Versions/A" Dir.chdir(framework) do Dir.chdir("Versions") do FileUtils.ln_s "A", "Current" end FileUtils.ln_s "Versions/Current/Headers", "Headers" FileUtils.ln_s "Versions/Current/Resources", "Resources" FileUtils.ln_s "Versions/Current/#{product_name}", product_name end # Copy headers from a cocoa framework script_input_file_count = ENV['SCRIPT_INPUT_FILE_COUNT'].to_i script_input_files = [] script_input_file_count.times do |i| input_file_glob = ENV["SCRIPT_INPUT_FILE_#{i}"] script_input_files.concat(Dir[ENV["SCRIPT_INPUT_FILE_#{i}"]]) end script_input_files.each do |input_file_path| if input_file_path =~ /\.h$/ destination_file_path = File.join("#{framework}/Versions/Current/Headers", File.basename(input_file_path)) FileUtils.cp input_file_path, destination_file_path end end end