From b973deb64041707d302bb244c6c280586629925c Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Wed, 17 Jul 2019 12:04:11 +0200 Subject: Removing the genmake.py and the generate_makefiles.sh --- test/monniaux/generate_makefiles.sh | 8 --- test/monniaux/genmake.py | 139 ------------------------------------ 2 files changed, 147 deletions(-) delete mode 100755 test/monniaux/generate_makefiles.sh delete mode 100755 test/monniaux/genmake.py (limited to 'test/monniaux') diff --git a/test/monniaux/generate_makefiles.sh b/test/monniaux/generate_makefiles.sh deleted file mode 100755 index ecbbdf4d..00000000 --- a/test/monniaux/generate_makefiles.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -source benches.sh - -for bench in $benches; do - ./genmake.py $bench/make.proto > $bench/Makefile -done - diff --git a/test/monniaux/genmake.py b/test/monniaux/genmake.py deleted file mode 100755 index 89e19a27..00000000 --- a/test/monniaux/genmake.py +++ /dev/null @@ -1,139 +0,0 @@ -#!/usr/bin/env python3 - -""" Custom Makefile generator - -Generates the Makefiles for the various benches, including extra rules for each different optimization options and/or compilers. - -See the source for more info. -""" - -from collections import namedtuple -from typing import * -import sys -import yaml - -Optim = namedtuple("Optim", ["short", "full"]) -Env = namedtuple("Env", ["compiler", "optimizations", "target"]) -Compiler = namedtuple("Compiler", ["short", "full"]) - -## -# Variables you can change. -## - -# Defining the compilers and optimizations - -gcc_x86 = Env(compiler = Compiler("gcc", "$(CC)"), optimizations = [Optim("", "$(CFLAGS)")], target = "host") -gcc_k1c = Env(compiler = Compiler("gcc", "$(K1C_CC)"), optimizations = [Optim("", "$(K1C_CFLAGS)"), Optim("o1", "$(K1C_CFLAGS_O1)")], target = "k1c") -ccomp_x86 = Env(compiler = Compiler("ccomp", "$(CCOMP)"), optimizations = [Optim("", "$(CCOMPFLAGS)")], target = "host") -ccomp_k1c = Env(compiler = Compiler("ccomp", "$(K1C_CCOMP)"), optimizations = [Optim("", "$(K1C_CCOMPFLAGS)")], target = "k1c") - -environments = [gcc_x86, ccomp_x86, gcc_k1c, ccomp_k1c] - -## -# Argument parsing -## -if len(sys.argv) != 2: - raise Exception("Only 1 argument should be given to this script: the make.proto file") -yaml_file = sys.argv[1] - -with open(yaml_file, "r") as f: - settings = yaml.load(f.read(), Loader=yaml.SafeLoader) - -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 [] -name = settings["name"] if "name" in settings else None - -if sources: - intro += "\nsrc=" + sources - -for objdep in objdeps: - if objdep["compiler"] not in ("gcc", "ccomp", "both"): - raise Exception('Invalid compiler specified in make.proto:objdeps, should be either "gcc" or "ccomp" or "both"') - -## -# Printing the rules -## - -def make_product(env: Env, optim: Optim) -> str: - return basename + "." + env.compiler.short + (("." + optim.short) if optim.short != "" else "") + "." + env.target - -def make_obj(name: str, env: Env, compiler_short: str) -> str: - return name + "." + compiler_short + "." + env.target + ".o" - -def make_clock(env: Env, optim: Optim) -> str: - clock_optim = env.optimizations[0] - return "clock.gcc" + (("." + clock_optim.short) if clock_optim.short != "" else "") + "." + env.target - -def make_sources(env: Env, optim: Optim) -> str: - if sources: - return "$(src:.c=." + env.compiler.short + (("." + optim.short) if optim.short != "" else "") + "." + env.target + ".o)" - else: - return "{product}.o".format(product = make_product(env, optim)) - -def print_rule(env: Env, optim: Optim) -> None: - print("{product}: {sources} ../{clock}.o " - .format(product = make_product(env, optim), - sources = make_sources(env, optim), clock = make_clock(env, optim)) - + " ".join([make_obj(objdep["name"], env, (objdep["compiler"] if objdep["compiler"] != "both" else env.compiler.short)) for objdep in objdeps])) - print(" {compiler} {flags} $+ -lm -o $@" - .format(compiler = env.compiler.full, flags = optim.full)) - -def make_env_list(envs: List[Env]) -> str: - 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: List[Env], measures: List[Union[List[str], str]]) -> None: - print("measures.csv: $(PRODUCTS_OUT)") - print(' echo "benches, {}" > $@'.format(make_env_list(environments))) - for measure in measures: - display_measure_name = (len(measures) > 1) - if isinstance(measure, list): - measure_name, measure_short = measure - display_measure_name = True - else: - measure_name = measure_short = measure - print(' echo "{name} {measure}"'.format(name=basename if not name else name, measure=measure_short if display_measure_name else ""), end="") - for env in environments: - for optim in env.optimizations: - print(", $$(grep '{measure}' {outfile} | cut -d':' -f2)".format( - measure=measure_name, outfile=make_product(env, optim) + ".out"), end="") - print('>> $@') - -products = [] -for env in environments: - for optim in env.optimizations: - products.append(make_product(env, optim)) - -print(""" -include ../rules.mk - -{intro} - -PRODUCTS?={prod} -PRODUCTS_OUT=$(addsuffix .out,$(PRODUCTS)) - -all: $(PRODUCTS) - -.PHONY: -run: measures.csv - -""".format(intro=intro, prod=" ".join(products))) - -for env in environments: - for optim in env.optimizations: - print_rule(env, optim) - -print_measure_rule(environments, measures) - - -print(""" -.SECONDARY: - -.PHONY: -clean: - rm -f *.o *.s *.k1c *.csv -""") -- cgit