1#!/usr/bin/env ruby 2 3# Copyright (C) 2010 Apple Inc. All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions 7# are met: 8# 1. Redistributions of source code must retain the above copyright 9# notice, this list of conditions and the following disclaimer. 10# 2. Redistributions in binary form must reproduce the above copyright 11# notice, this list of conditions and the following disclaimer in the 12# documentation and/or other materials provided with the distribution. 13# 14# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 15# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 16# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 17# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 18# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 24# THE POSSIBILITY OF SUCH DAMAGE. 25 26input_file = ARGV[0] 27output_file = ARGV[1] 28 29require 'erb' 30 31def line_for_output line 32 return line.chomp if line =~ /#/ 33 " printf(\"#{line.chomp}\\n\");" 34end 35 36TEMPLATE = <<-EOF 37#include "config.h" 38#include <stdio.h> 39 40int main(int, char**) 41{ 42<%- input.each_line do |line| -%> 43<%= line_for_output line %> 44<%- end -%> 45 46 return 0; 47} 48EOF 49 50File.open(output_file, "w") do |output| 51 File.open(input_file) do |input| 52 renderer = ERB.new(TEMPLATE, 0, "-") 53 output << renderer.result(binding) 54 end 55end 56 57STDERR.puts "Wrote output to #{output_file}" 58