diff --git a/Makefile b/Makefile index 88b486e..fc3d127 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,14 @@ .PHONY: clean build upload .SILENT: -EXECUTABLES= clang gcc uuid rsync lld taskset + +ifeq ($(shell uname),OpenBSD) + GCC:= egcc +else + GCC:= gcc +endif + +EXECUTABLES= clang $(GCC) uuid lld taskset XXXX:= $(foreach exec,$(EXECUTABLES), $(if $(shell which $(exec) 2> /dev/null),X,$(error "No '$(exec)' in PATH, please install it and restart octopus !"))) ### Generic flags @@ -30,7 +37,7 @@ CFLAGS+= -Wno-missing-field-initializers LDFLAGS= -fuse-ld=lld ### Octopus flags -CCS= clang gcc +CCS= clang $(GCC) OPTIMIZATIONS= 0 1 2 3 fast s RETPOLINE= mretpoline UUID:= $(shell uuid || uuidgen) @@ -41,7 +48,7 @@ OCTOFLAGS= -j ### Octopus internals CPU:= $(shell LC_ALL=en_US.UTF-8 lscpu | grep "Model name" | cut -d":" -f 2 | sort | uniq | awk '{$$1=$$1;print}') -UCODE:= $(shell grep microcode /proc/cpuinfo | sort | uniq | awk '{print $$NF}') +UCODE:= $(shell grep microcode /proc/cpuinfo | sort | uniq | awk '{print $$NF}' || printf none) KERN:= $(shell uname -svm) CLANGV:= $(shell clang -v 2>&1 | head -n 1) GCCV:= $(shell gcc -v 2>&1 | grep 'gcc version') @@ -108,53 +115,54 @@ PROGS+= $(RGROGS) PROGS+= $(RSGPROGS) all: upload - echo -e "\033[1mThank you for helping science today !\033[0m" + printf "\033[1mThank you for helping science today !\033[0m\n" upload: $(RESULTS_FILE) - echo -e "\033[4mUploading $^ to www.sk4.nz\033[0m" + printf "\033[4mUploading $^ to www.sk4.nz\033[0m\n" chmod 600 $(SSH_KEY) - sftp -b - -i $(SSH_KEY) -o BatchMode=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ - octoupload@www.sk4.nz: <<< $$'put $^' + printf 'put $^\n' | sftp -b - -i $(SSH_KEY) \ + -o BatchMode=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ + octoupload@www.sk4.nz: build: $(PROGS) $(RESULTS_FILE): build - echo -e "\033[1m\033[94m________ __"; - echo "\_____ \ _____/ |_ ____ ______ __ __ ______"; - echo " / | \_/ ___\ __\/ _ \\____ \| | \/ ___/"; - echo "/ | \ \___| | ( <_> ) |_> > | /\___ \ "; - echo "\_______ /\___ >__| \____/| __/|____//____ >"; - echo -e " \/ \/ |__| \/\033[0m"; - echo -e " Samuel AUBERTIN - EURECOM\n" - echo -e "\033[4mUUID\033[0m\t\t$(UUID)" - echo -e "\033[4mCPU\033[0m\t\t$(CPU)" - echo -e "\033[4mMicrocode\033[0m\t$(UCODE)" - echo -e "\033[4mKernel\033[0m\t\t$(KERN)" - echo -e "\033[4mClang\033[0m\t\t$(CLANGV)" - echo -e "\033[4mGCC\033[0m\t\t$(GCCV)" - echo -e "\033[4mSpectre v1\033[0m\t$(VULN1)" - echo -e "\033[4mSpectre v2\033[0m\t$(VULN2)" - echo -e "{ \"$(UUID)\": {" >> $@ - echo -e "\"cpu\": \"$(CPU)\"," >> $@ - echo -e "\"microcode\": \"$(UCODE)\"," >> $@ - echo -e "\"kernel\": \"$(KERN)\"," >> $@ - echo -e "\"clang\": \"$(CLANGV)\"," >> $@ - echo -e "\"gcc\": \"$(GCCV)\"," >> $@ - echo -e "\"spectre_v1\": \"$(VULN1)\"," >> $@ - echo -e "\"spectre_v2\": \"$(VULN2)\"," >> $@ - echo -e "\"results\": [" >> $@ + printf "\033[1m\033[94m________ __\n"; + printf "\_____ \ _____/ |_ ____ ______ __ __ ______\n"; + printf " / | \_/ ___\ __\/ _ \\____ \| | \/ ___/\n"; + printf "/ | \ \___| | ( <_> ) |_> > | /\___ \ \n"; + printf "\_______ /\___ >__| \____/| __/|____//____ >\n"; + printf " \/ \/ |__| \/\033[0m\n"; + printf " Samuel AUBERTIN - EURECOM\n" + printf "\033[4mUUID\033[0m\t\t$(UUID)\n" + printf "\033[4mCPU\033[0m\t\t$(CPU)\n" + printf "\033[4mMicrocode\033[0m\t$(UCODE)\n" + printf "\033[4mKernel\033[0m\t\t$(KERN)\n" + printf "\033[4mClang\033[0m\t\t$(CLANGV)\n" + printf "\033[4mGCC\033[0m\t\t$(GCCV)\n" + printf "\033[4mSpectre v1\033[0m\t$(VULN1)\n" + printf "\033[4mSpectre v2\033[0m\t$(VULN2)\n" + printf "{ \"$(UUID)\": {\n" >> $@ + printf "\"cpu\": \"$(CPU)\",\n" >> $@ + printf "\"microcode\": \"$(UCODE)\",\n" >> $@ + printf "\"kernel\": \"$(KERN)\",\n" >> $@ + printf "\"clang\": \"$(CLANGV)\",\n" >> $@ + printf "\"gcc\": \"$(GCCV)\",\n" >> $@ + printf "\"spectre_v1\": \"$(VULN1)\",\n" >> $@ + printf "\"spectre_v2\": \"$(VULN2)\",\n" >> $@ + printf "\"results\": [\n" >> $@ for p in $(PROGS); do \ for t in $$(seq $(TIMES)); do \ sleep 0.1; \ (taskset 01 ./$$p $(OCTOFLAGS) || printf "{ \"$$p\": false }")>> $@; \ if ! [ "$$p" = "$(lastword $(PROGS))" ]; \ - then echo ',' >> $@; \ + then printf ',\n' >> $@; \ else if ! [ $$t -eq $(TIMES) ]; \ - then echo ',' >> $@; fi; \ + then printf ',\n' >> $@; fi; \ fi; \ done \ done - echo -e "\n]}}" >> $@ + printf "\n]}}\n" >> $@ $(OPROGS): @$(PROGRESS) $(SUB_TWO) $(CFLAGS) $(LDFLAGS) -$(SUB_THREE) -o $@ $(SUB_ONE).c