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 return " printf(\"%s\\n\",#{line.chomp});" if line =~ /symbolWithPointer/ 34 return " printf(\"#{line.chomp}\\n\");" 35end 36 37TEMPLATE = <<-EOF 38#include "config.h" 39#include <stdio.h> 40#include <wtf/Assertions.h> 41 42#ifdef _WIN64 43#define symbolWithPointer(symbol32Bit, symbol64Bit) #symbol64Bit 44#else 45#define symbolWithPointer(symbol32Bit, symbol64Bit) #symbol32Bit 46#endif 47 48int main(int, char**) 49{ 50<%- input.each_line do |line| -%> 51<%= line_for_output line %> 52<%- end -%> 53 54 return 0; 55} 56EOF 57 58File.open(output_file, "w") do |output| 59 File.open(input_file) do |input| 60 renderer = ERB.new(TEMPLATE, 0, "-") 61 output << renderer.result(binding) 62 end 63end 64 65STDERR.puts "Wrote output to #{output_file}" 66