stable
This commit is contained in:
parent
ef7b492b24
commit
ace9659ef5
9 changed files with 445 additions and 21 deletions
48
src/Makefile
48
src/Makefile
|
|
@ -1,4 +1,4 @@
|
|||
.PHONY: all clean install uninstall test gcov_report dvi dist run style format
|
||||
.PHONY: all clean install uninstall test test_coverage gcov_report dvi dist run style format
|
||||
|
||||
CC ?= gcc
|
||||
CFLAGS ?= -Wall -Wextra -Werror -std=c11 -g -D_POSIX_C_SOURCE=199309L -MMD -MP
|
||||
|
|
@ -8,9 +8,9 @@ CHECK_CFLAGS ?= -I/usr/include/check
|
|||
CHECK_LIBS_AVAILABLE := $(shell ldconfig -p 2>/dev/null | grep -q libsubunit && echo yes || echo no)
|
||||
|
||||
ifeq ($(CHECK_LIBS_AVAILABLE),yes)
|
||||
LDFLAGS ?= -lcheck -lrt -lpthread -lm -lncurses -lsubunit
|
||||
LDFLAGS ?= -lcheck -lrt -lpthread -lm -lncurses -lsubunit
|
||||
else
|
||||
LDFLAGS ?= -lcheck -lrt -lpthread -lm -lncurses
|
||||
LDFLAGS ?= -lcheck -lrt -lpthread -lm -lncurses
|
||||
endif
|
||||
|
||||
BUILDDIR = build
|
||||
|
|
@ -25,6 +25,7 @@ TETRIS_SRC = $(shell find $(TETRISDIR) -name "*.c")
|
|||
TETRIS_OBJ = $(TETRIS_SRC:.c=.o)
|
||||
CLI_SRC = $(shell find $(CLIDIR) -name "*.c")
|
||||
CLI_OBJ = $(CLI_SRC:.c=.o)
|
||||
TEST_SRC = $(filter-out $(TESTDIR)/test.c, $(shell find $(TESTDIR) -name "*.c"))
|
||||
|
||||
LIB_TETRIS = $(BUILDDIR)/libtetris.a
|
||||
TARGET = $(BUILDDIR)/tetris_bin.out
|
||||
|
|
@ -36,7 +37,7 @@ BINDIR = $(PREFIX)/bin
|
|||
|
||||
all: $(TARGET)
|
||||
|
||||
run: $(TARGET)
|
||||
run: clean $(TARGET)
|
||||
./$(TARGET)
|
||||
|
||||
install: $(TARGET)
|
||||
|
|
@ -51,24 +52,38 @@ uninstall:
|
|||
clean:
|
||||
rm -rf $(CLI_OBJ) $(TETRIS_OBJ) $(TARGET) $(LIB_TETRIS) $(TEST_TARGET)
|
||||
rm -rf $(TETRISDIR)/*.d $(CLIDIR)/*.d
|
||||
rm -rf $(TETRISDIR)/*.gcda $(TETRISDIR)/*.gcno $(TETRISDIR)/*.gcov
|
||||
rm -rf $(GCOV_DIR) $(DVI_DIR)
|
||||
|
||||
test: $(LIB_TETRIS)
|
||||
$(CC) $(CFLAGS) $(TESTDIR)/test.c -L$(BUILDDIR) -ltetris $(LDFLAGS) -o $(TEST_TARGET)
|
||||
test: clean $(LIB_TETRIS)
|
||||
$(CC) $(CFLAGS) $(TEST_SRC) -L$(BUILDDIR) -ltetris $(LDFLAGS) -o $(TEST_TARGET)
|
||||
./$(TEST_TARGET)
|
||||
|
||||
gcov_report: CFLAGS += --coverage
|
||||
gcov_report: LDFLAGS += --coverage
|
||||
gcov_report: clean test
|
||||
@mkdir -p $(GCOV_DIR)
|
||||
gcov $(TETRIS_SRC) -o $(TETRISDIR)
|
||||
lcov --capture --directory $(TETRISDIR) --output-file $(GCOV_DIR)/coverage.info --ignore-errors unused
|
||||
lcov --extract $(GCOV_DIR)/coverage.info '*/brick_game/tetris/*' -o $(GCOV_DIR)/coverage.info --ignore-errors unused
|
||||
genhtml $(GCOV_DIR)/coverage.info --output-directory $(GCOV_DIR)
|
||||
@mv *.gcov $(GCOV_DIR)/ 2>/dev/null || true
|
||||
test_coverage: CFLAGS += --coverage
|
||||
test_coverage: LDFLAGS += --coverage
|
||||
test_coverage: clean $(LIB_TETRIS)
|
||||
$(CC) $(CFLAGS) $(TEST_SRC) -L$(BUILDDIR) -ltetris $(LDFLAGS) -o $(TEST_TARGET)
|
||||
./$(TEST_TARGET)
|
||||
|
||||
gcov_report: test_coverage
|
||||
@mkdir -p $(GCOV_DIR)/obj
|
||||
@find $(TETRISDIR) -name "*.gcda" -exec mv {} $(GCOV_DIR)/obj/ \;
|
||||
@find $(TETRISDIR) -name "*.gcno" -exec mv {} $(GCOV_DIR)/obj/ \;
|
||||
@cd $(GCOV_DIR) && for src in $(addprefix ../,$(TETRIS_SRC)); do \
|
||||
gcov $$src -o obj/ 2>/dev/null; \
|
||||
done
|
||||
lcov --capture --directory $(GCOV_DIR)/obj \
|
||||
--output-file $(GCOV_DIR)/coverage.info \
|
||||
--ignore-errors unused
|
||||
lcov --extract $(GCOV_DIR)/coverage.info '*/brick_game/tetris/*' \
|
||||
-o $(GCOV_DIR)/coverage.info \
|
||||
--ignore-errors unused
|
||||
genhtml $(GCOV_DIR)/coverage.info \
|
||||
--output-directory $(GCOV_DIR)
|
||||
@echo "Report: $(GCOV_DIR)/index.html"
|
||||
xdg-open $(GCOV_DIR)/index.html
|
||||
|
||||
|
||||
dvi:
|
||||
@mkdir -p $(DVI_DIR)
|
||||
@echo "Generating documentation with Doxygen..."
|
||||
|
|
@ -79,8 +94,7 @@ dvi:
|
|||
echo "Copying doc.md as fallback..."; \
|
||||
cp doc.md $(DVI_DIR)/; \
|
||||
fi
|
||||
xdg-open dvi/html/index.html
|
||||
|
||||
xdg-open $(DVI_DIR)/html/index.html
|
||||
|
||||
dist: clean
|
||||
tar -czf tetris.tar.gz Makefile $(TETRISDIR) $(CLIDIR) $(TESTDIR) README.md doc.md
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue