75 lines
2.5 KiB
Makefile
75 lines
2.5 KiB
Makefile
# indent with spaces
|
|
.RECIPEPREFIX := $(.RECIPEPREFIX) $(.RECIPEPREFIX)
|
|
|
|
# Various directories
|
|
# Note: for this to work in subdirectories, this makefile must be the first one included.
|
|
UT_ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
|
|
|
BUILD_DIR := $(UT_ROOT_DIR)/build
|
|
DOC_DIR := $(BUILD_DIR)/doc
|
|
COVERAGE_DIR := $(BUILD_DIR)/coverage
|
|
BIN_DIR := $(BUILD_DIR)/bin
|
|
GENERATED_DIR := $(BUILD_DIR)/generated
|
|
LIB_DIR := $(BUILD_DIR)/lib
|
|
TOOLS_DIR := $(UT_ROOT_DIR)/tools
|
|
|
|
FREERTOS_DIR := $(abspath $(UT_ROOT_DIR)../../../FreeRTOS)
|
|
KERNEL_DIR := $(abspath $(UT_ROOT_DIR)/../../../FreeRTOS/Source)
|
|
|
|
CMOCK_DIR := $(UT_ROOT_DIR)/CMock
|
|
CMOCK_SRC_DIR := $(CMOCK_DIR)/src
|
|
UNITY_DIR := $(CMOCK_DIR)/vendor/unity
|
|
UNITY_SRC_DIR := $(UNITY_DIR)/src
|
|
UNITY_INC_DIR := $(UNITY_DIR)/src
|
|
UNITY_BIN_DIR := $(UNITY_DIR)/auto
|
|
UNITY_EXTRAS_DIR := $(UNITY_DIR)/extras
|
|
UNITY_MEM_DIR := $(UNITY_EXTRAS_DIR)/memory/src
|
|
C_EXCEPTION_SRC_DIR := $(CMOCK_DIR)/vendor/c_exception/lib
|
|
CMOCK_EXEC_DIR := $(CMOCK_DIR)/lib
|
|
|
|
# Include directories
|
|
INCLUDE_DIR := -I$(KERNEL_DIR)/include
|
|
INCLUDE_DIR += -I.
|
|
INCLUDE_DIR += -I$(UT_ROOT_DIR)/config
|
|
INCLUDE_DIR += -I$(UNITY_INC_DIR)
|
|
INCLUDE_DIR += -I$(CMOCK_SRC_DIR)
|
|
INCLUDE_DIR += -I$(UNITY_MEM_DIR)
|
|
INCLUDE_DIR += -I$(C_EXCEPTION_SRC_DIR)
|
|
|
|
# Preprocessor flags
|
|
CPPFLAGS :=
|
|
|
|
# Compiler flags
|
|
CFLAGS := $(INCLUDE_DIR) -O0 -ggdb -pthread --std=c99 -Werror -Wall
|
|
ifeq ($(ENABLE_SANITIZER),1)
|
|
CFLAGS += -fstack-protector-all
|
|
CFLAGS += -Wformat -Werror=format-security -Werror=array-bounds
|
|
CFLAGS += -D_FORTIFY_SOURCE=2
|
|
CFLAGS += -fsanitize=address,undefined -fsanitize-recover=address
|
|
else
|
|
CFLAGS += -U_FORTIFY_SOURCE
|
|
endif
|
|
|
|
# Linker flags
|
|
LDFLAGS := -L$(LIB_DIR) -Wl,-rpath,$(LIB_DIR)
|
|
LDFLAGS += -pthread
|
|
LDFLAGS += -lunity
|
|
LDFLAGS += -lunitymemory
|
|
LDFLAGS += -lcexception
|
|
LDFLAGS += -lcmock
|
|
LDFLAGS += -lgcov
|
|
ifeq ($(ENABLE_SANITIZER),1)
|
|
LDFLAGS += -fsanitize=address,undefined
|
|
endif
|
|
|
|
# Shared libraries
|
|
LIBS := libunity
|
|
LIBS += libcmock
|
|
LIBS += libunitymemory
|
|
LIBS += libcexception
|
|
|
|
LCOV_OPTS := --config-file $(UT_ROOT_DIR)/lcovrc
|
|
|
|
# export everything in this file
|
|
export
|