sunchb_cson/demo/Makefile
2020-05-07 15:21:56 +08:00

63 lines
1.6 KiB
Makefile

MD := @mkdir -p
RM := @rm -rf
LIB_PATH += -L../output
CC=gcc
INC += -I../inc
OUT_DIR := ./output
TARGET := $(OUT_DIR)/test
## source files
SRC_DIR = ../src
SRC_FILES += $(wildcard $(SRC_DIR)/*.c)
## adapter files
ADAP_DIR = ../adapter/cjson
ADAP_FILES += $(wildcard $(ADAP_DIR)/*.c)
## test source files
TEST_SRC_DIR = .
TEST_SRC_FILES += $(wildcard $(TEST_SRC_DIR)/*.c)
# TEST_SRC_FILES += ./test.c
# TEST_SRC_FILES += ./test5.c
# TEST_SRC_FILES += ./main.c
## *.o
OBJS += $(patsubst $(SRC_DIR)/%.c, $(OUT_DIR)/%.o, $(SRC_FILES))
OBJS += $(patsubst $(TEST_SRC_DIR)/%.c, $(OUT_DIR)/%.o, $(TEST_SRC_FILES))
OBJS += $(patsubst $(ADAP_DIR)/%.c, $(OUT_DIR)/%.o, $(ADAP_FILES))
$(TARGET):$(OBJS)
@$(CC) $(LIB_PATH) -g -Wl,--whole-archive -Wl,-O1 -Wl,-Map,$(OUT_DIR)/test.map -Wl,--no-whole-archive -fPIC $(OBJS) -o $(TARGET) -lgcov
## rule for source file
$(OUT_DIR)/%.o:$(SRC_DIR)/%.c
@$(MD) $(OUT_DIR)
$(CC) $(INC) -Wno-int-conversion -fprofile-arcs -ftest-coverage -c -g $< -o $@
$(OUT_DIR)/%.o:$(ADAP_DIR)/%.c
@$(MD) $(OUT_DIR)
$(CC) $(INC) -Wno-int-conversion -fprofile-arcs -ftest-coverage -c -g $< -o $@
## rule for test source file
$(OUT_DIR)/%.o:$(TEST_SRC_DIR)/%.c
@$(MD) $(OUT_DIR)
$(CC) $(INC) -Wno-int-conversion -c -g $< -o $@
.PHONY:report run clean memchk
run:$(TARGET)
$(TARGET)
report:run
lcov -d . -t test -o $(OUT_DIR)/test.info -b . -c --rc lcov_branch_coverage=1
lcov --extract $(OUT_DIR)/test.info '*.c' -o $(OUT_DIR)/finalresult.info --rc lcov_branch_coverage=1
genhtml -o $(OUT_DIR)/result $(OUT_DIR)/finalresult.info --branch-coverage
memchk:$(TARGET)
valgrind --tool=memcheck --leak-check=full $(TARGET)
clean:
@rm -rf ./output