DEPENDENCIES= glibc-static CC= clang PROG= spectre CFLAGS= -march=native CFLAGS+= -W CFLAGS+= -Wall CFLAGS+= -Werror CFLAGS+= -Wno-unused-parameter CFLAGS+= -Wno-missing-field-initializers OPTIMIZATIONS= 0 1 2 3 LINKAGE= static OPROGS= $(foreach O, $(OPTIMIZATIONS), $(addsuffix -O$(O), $(PROG))) PROGS+= $(OPROGS) $(foreach L, $(LINKAGE), $(addsuffix -$(L), $(foreach O, $(OPTIMIZATIONS), $(addsuffix -O$(O), $(PROG))))) .PHONY: clean .SILENT: .NOTPARALLEL: all: $(PROGS) echo -e "\033[1mCPU\t\t" $$(LC_ALL=en_US.UTF-8 lscpu | grep "Model name" | cut -d":" -f 2 | sort | uniq | awk '{$$1=$$1;print}') echo -e "Kernel\t\t" $$(uname -a) echo -e "Test date\t" $$(date "+%d-%m-%Y") echo -e "Clang\t\t" $$(clang -v 2>&1 | head -n 1)"\033[0m" for p in $(PROGS); do \ sleep 1; \ echo -e "\033[4m$$p\033[0m "; \ taskset 01 ./$$p; \ echo; done $(foreach O, $(OPTIMIZATIONS), $(addsuffix -O$(O), $(PROG))): $(CC) $(CFLAGS) -$(word 2, $(subst -, ,$@)) -o $@ $(PROG).c $(foreach L, $(LINKAGE), $(addsuffix -$(L), $(foreach O, $(OPTIMIZATIONS), $(addsuffix -O$(O), $(PROG))))): $(CC) $(addprefix -, $(word 3, $(subst -, ,$@))) $(CFLAGS) -$(word 2, $(subst -, ,$@)) -o $@ $(PROG).c clean: rm -rf $(PROGS)