# Parameters: # OBJECTS: list of object files, default main.o # LIBS: list of object files, relative to ZEPHYR_BASE # O: Output directory, default outdir OBJECTS ?= main.o O ?= outdir INCLUDE += tests/ztest/include tests/include include CFLAGS += -Wall -Werror ifdef COVERAGE export GCOV_PREFIX=$(O) CFLAGS += -fprofile-arcs -ftest-coverage \ -fno-default-inline -fno-inline endif ifneq (, $(shell which valgrind 2> /dev/null)) VALGRIND = valgrind VALGRIND_FLAGS = --leak-check=full --error-exitcode=1 \ --log-file=$(O)/valgrind.log endif TARGET = $(O)/testbinary all: $(TARGET) ZTEST = tests/ztest/src LIB += $(ZTEST)/ztest.o $(ZTEST)/ztest_mock.o OBJS = $(addprefix $(O)/, $(OBJECTS) $(LIB)) INCLUDEFLAG = -I$(ZEPHYR_BASE)/ INCLUDED = $(addprefix $(INCLUDEFLAG), $(INCLUDE)) VPATH = $(ZEPHYR_BASE) $(O)/%.o : %.c mkdir -p $(@D) $(CC) -I$(ZEPHYR_BASE) $(CFLAGS) $(INCLUDED) -c $(realpath $<) -o $@ $(TARGET): $(OBJS) mkdir -p $(@D) $(CC) $(CFLAGS) $(OBJS) -o $@ -g .PHONY: run-test run-test: $(TARGET) $(VALGRIND) $(VALGRIND_FLAGS) $(TARGET) &> $(O)/unit.log .PHONY: clean clean: rm -rf $(O)