blob: a8b4259645e6509b7e03d2d8f70f0bd96c9d5442 [file] [log] [blame]
#!/usr/bin/env ruby
# Copyright (C) 2014, 2015 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
require "pathname"
require "shellwords"
VERSION = "1.1"
DIRECTORY_NAME = "JetStream-#{VERSION}"
CDJS_FILES = [
"constants.js",
"util.js",
"red_black_tree.js",
"call_sign.js",
"vector_2d.js",
"vector_3d.js",
"motion.js",
"reduce_collision_set.js",
"simulator.js",
"collision.js",
"collision_detector.js",
"benchmark.js"
]
raise unless system("rm -rf " + DIRECTORY_NAME)
raise unless system("mkdir -p " + DIRECTORY_NAME)
raise unless system("mkdir -p #{DIRECTORY_NAME}/sunspider")
raise unless system("mkdir -p #{DIRECTORY_NAME}/sources")
raise unless system("cp sunspider/*.js #{DIRECTORY_NAME}/sunspider")
raise unless system("mkdir -p #{DIRECTORY_NAME}/cdjs")
CDJS_FILES.each {
| filename |
raise unless system("cp cdjs/#{filename} #{DIRECTORY_NAME}/cdjs")
}
raise unless system("cp -r JetStream.css JetStreamDriver.js LLVM-test-suite-LICENSE.txt simple Octane2 Octane2Setup.js SimpleSetup.js SunSpiderSetup.js Octane OctaneSetup.js CDjsSetup.js Reference.js TestingSetup.js JetStream-Logo.png JetStream-Logo@2x.png Swoosh.png Swoosh@2x.png " + DIRECTORY_NAME)
def detemplatize(basename)
File.open(DIRECTORY_NAME + "/#{basename}.html", "w") {
| outp |
outp.write(IO::read("#{basename}-TEMPLATE.html").gsub(/@VERSION@/, VERSION.to_s))
}
end
detemplatize("index")
detemplatize("in-depth")
def transferSource(benchmarkName, *files)
files.each {
| filename |
pathname = Pathname.new(filename)
originalBasename = pathname.basename
extname = originalBasename.extname
basename = originalBasename.basename(extname)
if basename.to_s.start_with? benchmarkName
resultPathname = Pathname.new(DIRECTORY_NAME) + "sources" + "#{basename}"
resultName = basename.to_s
else
resultPathname = Pathname.new(DIRECTORY_NAME) + "sources" + "#{benchmarkName}-#{basename}"
resultName = "#{benchmarkName} / #{basename}"
end
raise unless system("cp #{Shellwords.shellescape(pathname.to_s)} #{Shellwords.shellescape(resultPathname.to_s + extname)}")
}
end
File.open(DIRECTORY_NAME + "/SimplePayload.js", "w") {
| outp |
outp.puts "// THIS IS AUTO-GENERATED BY create.rb"
outp.puts "var SimplePayload = ["
directory = Pathname.new("simple")
Dir.foreach(directory) {
| filename |
next unless filename =~ /\.js$/
baseName = $~.pre_match
outp.puts " {name: #{baseName.inspect}, content:#{IO::read(directory + filename).inspect}},"
if filename.to_s =~ /\.(cp*)\.js/
transferSource($~.pre_match, directory + ($~.pre_match + "." + $1), directory + filename)
else
transferSource(baseName, directory + filename)
end
}
outp.puts "];"
}
File.open(DIRECTORY_NAME + "/SunSpiderPayload.js", "w") {
| outp |
outp.puts "// THIS IS AUTO-GENERATED BY create.rb"
outp.puts "var SunSpiderPayload = ["
directory = Pathname.new("sunspider")
Dir.foreach(directory) {
| filename |
next unless filename =~ /\.js$/
baseName = $~.pre_match
outp.puts " {name: #{baseName.inspect}, content:#{IO::read(directory + filename).inspect}},"
transferSource(baseName, directory + filename)
}
outp.puts "];"
}
transferSource("code-multi-load", "Octane/code-load.js")
transferSource("richards", "Octane2/richards.js")
transferSource("deltablue", "Octane2/deltablue.js")
transferSource("crypto", "Octane2/crypto.js")
transferSource("raytrace", "Octane2/raytrace.js")
transferSource("earley-boyer", "Octane2/earley-boyer.js")
transferSource("regexp", "Octane2/regexp.js")
transferSource("splay", "Octane2/splay.js")
transferSource("navier-stokes", "Octane2/navier-stokes.js")
transferSource("pdfjs", "Octane2/pdfjs.js")
transferSource("mandreel", "Octane2/mandreel.js")
transferSource("gbemu", "Octane2/gbemu-part1.js", "Octane2/gbemu-part2.js")
transferSource("code-first-load", "Octane2/code-load.js")
transferSource("box2d", "Octane2/box2d.js")
transferSource("zlib", "Octane2/zlib.js", "Octane2/zlib-data.js")
transferSource("typescript", "Octane2/typescript.js", "Octane2/typescript-compiler.js", "Octane2/typescript-input.js")
transferSource("cdjs", *(CDJS_FILES.collect { | filename | "cdjs/#{filename}" }))
puts "You can now run JetStream by navigating to file://" + (Pathname.new(DIRECTORY_NAME) + "index.html").realpath.to_s