aboutsummaryrefslogtreecommitdiffstats
path: root/test/monniaux/genmake.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/monniaux/genmake.py')
-rwxr-xr-xtest/monniaux/genmake.py24
1 files changed, 22 insertions, 2 deletions
diff --git a/test/monniaux/genmake.py b/test/monniaux/genmake.py
index c0fe0d05..80ef53e3 100755
--- a/test/monniaux/genmake.py
+++ b/test/monniaux/genmake.py
@@ -42,6 +42,7 @@ basename = settings["target"]
objdeps = settings["objdeps"] if "objdeps" in settings else []
intro = settings["intro"] if "intro" in settings else ""
sources = settings["sources"] if "sources" in settings else None
+measures = settings["measures"] if "measures" in settings else []
if sources:
intro += "\nsrc=" + sources
@@ -77,6 +78,22 @@ def print_rule(env, optim):
print(" {compiler} {flags} $+ -o $@"
.format(compiler = env.compiler.full, flags = optim.full))
+def make_env_list(envs):
+ return ",".join([(env.compiler.short + ((" " + optim.short) if optim.short != "" else "") + " " + env.target)
+ for env in environments
+ for optim in env.optimizations])
+
+def print_measure_rule(environments, measures):
+ print("measures.csv: $(PRODUCTS_OUT)")
+ print(' echo ", {}" > $@'.format(make_env_list(environments)))
+ for measure in measures:
+ print(' echo "{name} {measure}"'.format(name=basename, measure=measure), end="")
+ for env in environments:
+ for optim in env.optimizations:
+ print(", $$(grep '{measure}' {outfile} | cut -d':' -f2)".format(
+ measure=measure, outfile=make_product(env, optim) + ".out"), end="")
+ print('>> $@')
+
products = []
for env in environments:
for optim in env.optimizations:
@@ -93,7 +110,7 @@ PRODUCTS_OUT=$(addsuffix .out,$(PRODUCTS))
all: $(PRODUCTS)
.PHONY:
-exec: $(PRODUCTS_OUT)
+exec: measures.csv
""".format(intro=intro, prod=" ".join(products)))
@@ -101,8 +118,11 @@ for env in environments:
for optim in env.optimizations:
print_rule(env, optim)
+print_measure_rule(environments, measures)
+
+
print("""
.PHONY:
clean:
- rm -f *.o *.s *.k1c
+ rm -f *.o *.s *.k1c *.csv
""")