# -*- mode: makefile -*-
# The first line sets the emacs major mode to Makefile


################################################################
# Use this file to give project-specific definitions of the command
# line arguments to pass to CBMC tools like goto-cc to build the goto
# binaries and cbmc to do the property and coverage checking.
#
# Use this file to override most default definitions of variables in
# Makefile.common.
################################################################

# Flags to pass to goto-cc for compilation (typically those passed to gcc -c)
# COMPILE_FLAGS =

# Flags to pass to goto-cc for linking (typically those passed to gcc)
# LINK_FLAGS =

# Preprocessor include paths -I...
INCLUDES += -I$(CBMC_ROOT)/include
INCLUDES += -I$(CBMC_ROOT)/aws-verification-model-for-libcrypto/include
INCLUDES += -I$(SRCDIR)
INCLUDES += -I$(SRCDIR)/api
INCLUDES += -I$(SRCDIR)/crypto

# OpenSSL Model Source
OPENSSL_SOURCE = $(CBMC_ROOT)/aws-verification-model-for-libcrypto/source

# Preprocessor definitions -D...

# Whether a proof needs these checks should be decided on a proof by proof basis.
# Checks can be enabled by setting AWS_DEEP_CHECKS to 1 in the makefile
# of the proof that requires them
AWS_DEEP_CHECKS ?= 0
DEFINES += -DAWS_DEEP_CHECKS=$(AWS_DEEP_CHECKS)

# Extra CBMC flags not enabled by Makefile.common
# CHECKFLAGS += --enum-range-check
CHECKFLAGS += --pointer-primitive-check

################################################################
# Remove function bodies that are not used in the proofs.
# Removing the function from the goto program helps CBMC's
# function pointer analysis

# We override abort() to be assert(0)
PROOF_SOURCES += $(PROOF_STUB)/abort_override_assert_false.c
REMOVE_FUNCTION_BODY += abort

# Useful for setting unwind limits to one more than some value.
addone = $(shell echo $$(( $(1) + 1)))
