Răsfoiți Sursa

Add makefile for compiling and running unit tests

Fred Sundvik 9 ani în urmă
părinte
comite
e9a1474bb6
2 a modificat fișierele cu 50 adăugiri și 0 ștergeri
  1. 1 0
      serial_link.mk
  2. 49 0
      tests/Makefile

+ 1 - 0
serial_link.mk

@@ -2,6 +2,7 @@ CGREEN_LIB = $(BUILDDIR)/cgreen/build-c/src/libcgreen.a
 
 .phony testserial:
 testserial: $(CGREEN_LIB)
+	make -C $(SERIAL_DIR)/tests BUILDDIR=../../$(BUILDDIR)
 
 CGREEN_DIR = "$(CURDIR)/$(SERIAL_DIR)/cgreen/cgreen"
 CGREEN_BUILD_DIR = "$(CURDIR)/$(BUILDDIR)/cgreen"

+ 49 - 0
tests/Makefile

@@ -0,0 +1,49 @@
+CC = gcc
+CFLAGS	= 
+INCLUDES = -I.
+LDFLAGS = -L$(BUILDDIR)/cgreen/build-c/src
+LDLIBS = -lcgreen
+UNITOBJ = $(BUILDDIR)/testserial/unitobj
+DEPDIR = $(BUILDDIR)/testserial/unit.d
+UNITEXE = $(BUILDDIR)/testserial/unitexe
+DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Td
+EXT = 
+UNAME := $(shell uname)
+ifneq (, $(findstring mingw, $(UNAME)))
+	EXT += exe
+endif
+ifneq (, $(findstring cygwin, $(UNAME)))
+	EXT += exe
+endif
+	
+SRC = $(wildcard *.c)
+EXE = $(patsubst %.c, $(UNITEXE)/%$(EXT), $(SRC))
+$(shell mkdir -p $(DEPDIR) >/dev/null)
+
+test: $(EXE)
+	@for f in $^; do \
+	echo "++++++++++++++++++"; \
+	echo "Running unit tests"; \
+	echo $$(basename $$f); \
+	echo "++++++++++++++++++"; \
+	echo ""; \
+	$$f || exit 1; \
+	echo ""; \
+	echo "******************"; \
+	echo ""; \
+	done
+
+$(UNITEXE)/%$(EXT): $(UNITOBJ)/%.o
+	mkdir -p $(UNITEXE)
+	$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
+
+$(UNITOBJ)/%.o : %.c
+$(UNITOBJ)/%.o: %.c $(DEPDIR)/%.d
+	mkdir -p $(UNITOBJ)
+	$(CC) $(CFLAGS) $(DEPFLAGS) -c $< -o $@
+	mv -f $(DEPDIR)/$*.Td $(DEPDIR)/$*.d
+	
+$(DEPDIR)/%.d: ;
+.PRECIOUS: $(DEPDIR)/%.d
+
+-include $(patsubst %,$(DEPDIR)/%.d,$(basename $(SRC).c))