ifneq ($(origin RMOD), undefined) MODME=${RMOD} else MODME=mul mulm # exp endif ifneq ($(origin RDIR), undefined) DIRME=${RDIR} else DIRME=inmul tmul inadd endif ifneq ($(origin RTES), undefined) ORTES=${RTES} else ORTES=${MODME} ${DIRME} endif THREADS=4 ifneq ($(origin LOOPS), undefined) OLOOPS=${LOOPS} else OLOOPS=22 endif MGTES=$(filter-out ${DIRME},${ORTES}) DETES=$(filter ${DIRME},${ORTES}) SUFFIXES=mul mulm inmul tmul inadd exp inv_arazi MEANINGS=Modular_multiplication In_place_modular_multiplication In_place_multiplication Multiplication In_place_addition Modular_exponentiation Base_inverse EXEC=${ORTES:%=benchmark-recint_%} WSRC=${EXEC:%=-W %.C} OUTP=output.rint MODEL=$(shell cat /proc/cpuinfo | grep "model name" | head -1|cut -d':' -f2| tr -s ' '|sed 's/^ //') SHELL := /bin/bash index = $(words $(shell a="$(2)";echo $${a/$(1)*/$(1)} )) swap = $(word $(call index,$(1),${SUFFIXES}),${MEANINGS}) remun = $(shell a="$(1)";echo $${a}|sed 's/_/ /g') SIZES=6 7 8 9 10 11 12 13 MONTG=MG_INACTIVE PREFI= all: outclean ${SIZES:%=all_%} outcleanmg ${SIZES:%=allmg_%} plot plotmg mkplot = $(foreach fil, $(1), sed 's/FUNCTION/${PREFI}${fil}/g;s/MODEL/${MODEL}/g;s/MEANING/$(call remun,$(call swap,${fil}) $(2))/' generic.gnuplot > ${PREFI}${fil}.gnuplot; gnuplot ${PREFI}${fil}.gnuplot;) mkruns = make -j ${THREADS} "OPTFLAGS=-DSTD_RECINT_SIZE=$(1) -DMG_DEFAULT=${MONTG}" $(addprefix ./benchmark-recint_,$(2)) ${WSRC}; $(foreach fil, $(2), ./benchmark-recint_${fil} `echo '10^((${OLOOPS}-$(1))/2)'|bc` >> ${OUTP}.${PREFI}${fil};) mkocl = $(foreach fil, $(1), - rm ${OUTP}.${PREFI}${fil};) all_%: $(call mkruns,$*, ${ORTES}) plot: $(call mkplot, ${DETES}) $(call mkplot, ${MGTES}, (${MONTG})) outclean: $(call mkocl, ${ORTES}) allmg_%: MONTG=MG_ACTIVE allmg_%: PREFI=mg_ allmg_%: $(call mkruns,$*, ${MGTES}) plotmg: MONTG=MG_ACTIVE plotmg: PREFI=mg_ plotmg: $(call mkplot, ${MGTES}, (${MONTG})) outcleanmg: PREFI=mg_ outcleanmg: $(call mkocl, ${MGTES})