/
goodfile
36 lines (29 loc) · 1.7 KB
/
goodfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
if not Build.environment.has("rustup")
then
Build.error("i don't know i want to handle dependencies yet")
end
Build.metric(
"nightly version",
"rustc --version"
)
Build.run({"cargo", "build"}, {step="build"}) -- `run` automatically records stdout and stderr to log files named after the command
Build.run({"cargo", "test"}, {step="test", name="test stdlib/fmt"}) -- artifacts are stored under `name` if that's present
Build.run({"cargo", "+nightly", "build", "-Z", "build-std", "--examples", "--release", "--no-default-features", "--target", "x86_64-unknown-linux-gnu"}, {step="benchmark (size)/build"})
artifacts = "target/x86_64-unknown-linux-gnu/release/examples/"
Build.run({"ls", artifacts.."liblength_decode.so"}, {step="ffi_validate"})
baseline_size = Build.environment.size(artifacts.."libempty.so")
-- baseline_disasm = Build.output({"objdump --disassemble=invalid artifacts..libempty.so"}).lines()
-- length_disasm = Build.output({"objdump --disassemble=invalid artifacts..liblength_decode.so"}).lines()
-- instr_disasm = Build.output({"objdump --disassemble=invalid artifacts..libinstr_decode.so"}).lines()
-- Build.metric("length decode instruction count", length_disasm - baseline_disasm)
-- Build.metric("instruction decode instruction count", instr_disasm - baseline_disasm)
Build.metric(
"length decode size (bytes, upper bound)",
Build.environment.size(artifacts.."liblength_decode.so") - Build.environment.size(artifacts.."libempty.so")
)
Build.metric(
"inst decode size (bytes, upper bound)",
Build.environment.size(artifacts.."libinst_decode.so") - Build.environment.size(artifacts.."libempty.so")
)
Build.artifact(artifacts.."liblength_decode.so")
Build.artifact(artifacts.."libinst_decode.so")