zephyr/tests/unit/Makefile.unittest

53 lines
1.1 KiB
Makefile

# 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
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)