143 lines
5.7 KiB
Ruby
Executable File
143 lines
5.7 KiB
Ruby
Executable File
#!/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
|
|
|