32 lines
807 B
Makefile
32 lines
807 B
Makefile
COMPLR = $(shell which clang >/dev/null; echo $$?)
|
|
ifeq "$(COMPLR)" "0"
|
|
CC = clang
|
|
CFLAGS=-Oz -pedantic -Wall -Wextra -Weverything
|
|
else
|
|
CC = gcc
|
|
CFLAGS=-O3 -pedantic -Wall -Wextra -std=c99
|
|
endif
|
|
|
|
CBMCH = $(shell cbmc --help)
|
|
CBMCFLAGS = --unwind 8 --partial-loops --bounds-check --pointer-check \
|
|
--div-by-zero-check --signed-overflow-check
|
|
|
|
TARGET = sha256
|
|
|
|
$(TARGET).o: sha256.c sha256.h
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
test: sha256.c sha256.h
|
|
$(CC) $(CFLAGS) -o $(TARGET) -DSELF_TEST $<
|
|
|
|
all: $(TARGET)
|
|
|
|
.PHONY: clean verify
|
|
|
|
clean:
|
|
rm -f $(TARGET) *.o
|
|
|
|
verify:
|
|
@# Unsigned overflows are deliberate, so we skip such checks to avoid
|
|
@# code complication with wrapping additions into a safeguard function
|
|
cbmc sha256.c -DSELF_TEST $(CBMCFLAGS) $(findstring --memory-leak-check,$(CBMCH))
|