77 lines
3.0 KiB
Makefile
77 lines
3.0 KiB
Makefile
# Change according to what your unit test directory is.
|
|
# For example if testing queue.c your directory should be called queue
|
|
# and the project name should be queue
|
|
# if testing list.c your directory should be called list
|
|
# and the project name should be list
|
|
PROJECT := timers
|
|
|
|
# List the dependency files you wish to mock
|
|
MOCK_FILES_FP := $(KERNEL_DIR)/include/task.h
|
|
MOCK_FILES_FP += $(KERNEL_DIR)/include/queue.h
|
|
MOCK_FILES_FP += $(KERNEL_DIR)/include/list.h
|
|
MOCK_FILES_FP += $(UT_ROOT_DIR)/config/fake_assert.h
|
|
|
|
# List the options the compilation would need
|
|
CPPFLAGS += -DconfigSUPPORT_DYNAMIC_ALLOCATION=1
|
|
CPPFLAGS += -DconfigSUPPORT_STATIC_ALLOCATION=1
|
|
|
|
|
|
# Try not to edit beyond this line
|
|
MOCK_FILES := $(notdir $(MOCK_FILES_FP))
|
|
MOCK_OBJ := $(addprefix mock_,$(MOCK_FILES:.h=.o))
|
|
MOCK_SRC := $(addprefix mock_,$(MOCK_FILES:.h=.c))
|
|
EXEC := $(PROJECT)_utest
|
|
PROJECT_DIR := $(abspath .)
|
|
SCRATCH_DIR := $(GENERATED_DIR)/$(PROJECT)
|
|
PROJ_LIB_DIR := $(SCRATCH_DIR)/lib
|
|
MOCK_OBJ_LIST := $(addprefix $(PROJ_LIB_DIR)/,$(MOCK_OBJ))
|
|
MOCKS_DIR := $(SCRATCH_DIR)/mocks
|
|
MOCK_SRC_LIST := $(addprefix $(MOCKS_DIR)/,$(MOCK_SRC))
|
|
CFLAGS += -I$(MOCKS_DIR)
|
|
COVERAGE_OPTS := -fprofile-arcs -ftest-coverage -fprofile-generate
|
|
|
|
ifeq ($(MOCK_FILES_FP),)
|
|
$(shell mkdir -p $(MOCKS_DIR))
|
|
$(shell touch -a $(MOCKS_DIR)/mock_dummy.c)
|
|
endif
|
|
|
|
$(MOCKS_DIR)/mock_%.c : Makefile $(PROJECT_DIR)/$(PROJECT).yml | directories
|
|
cd $(SCRATCH_DIR) && \
|
|
ruby $(CMOCK_EXEC_DIR)/cmock.rb -o$(PROJECT_DIR)/$(PROJECT).yml \
|
|
$(MOCK_FILES_FP)
|
|
|
|
$(PROJ_LIB_DIR)/mock_%.o : $(MOCKS_DIR)/mock_%.c
|
|
$(CC) -c $< -fPIC $(CFLAGS) -o $@
|
|
|
|
$(BIN_DIR)/$(EXEC) : $(SCRATCH_DIR)/test_runner.o \
|
|
$(SCRATCH_DIR)/$(PROJECT).o \
|
|
$(SCRATCH_DIR)/$(PROJECT)_utest.o \
|
|
$(MOCK_OBJ_LIST)
|
|
$(CC) $+ $(LDFLAGS) -o $@
|
|
|
|
$(SCRATCH_DIR)/test_runner.o : $(SCRATCH_DIR)/test_runner.c \
|
|
$(SCRATCH_DIR)/$(PROJECT).o
|
|
$(CC) -c $< $(CPPFLAGS) $(CFLAGS) -o $@
|
|
|
|
$(SCRATCH_DIR)/$(PROJECT)_utest.o : $(PROJECT_DIR)/$(PROJECT)_utest.c \
|
|
$(MOCKS_DIR)/mock_*.c \
|
|
| directories
|
|
$(CC) -c $< $(CPPFLAGS) $(CFLAGS) -o $@
|
|
|
|
$(SCRATCH_DIR)/$(PROJECT).o : $(KERNEL_DIR)/$(PROJECT).c
|
|
$(CC) -c $< $(CPPFLAGS) $(CFLAGS) $(COVERAGE_OPTS) -o $@
|
|
|
|
$(SCRATCH_DIR)/test_runner.c : $(SCRATCH_DIR)/$(PROJECT)_utest.o \
|
|
Makefile | directories
|
|
ruby $(UNITY_BIN_DIR)/generate_test_runner.rb $(EXEC).c \
|
|
$(PROJECT_DIR)/$(PROJECT).yml $@
|
|
|
|
.PHONY: directories
|
|
directories :
|
|
-mkdir $(SCRATCH_DIR)
|
|
-mkdir $(MOCKS_DIR)
|
|
-mkdir $(PROJ_LIB_DIR)
|
|
|
|
# prevent deletion by chain of implicit rules
|
|
NO_DELETE: $(MOCK_SRC_LIST)
|