diff options
| author | Christopher Li <sparse@chrisli.org> | 2017-07-16 01:09:51 -0400 |
|---|---|---|
| committer | Christopher Li <sparse@chrisli.org> | 2017-08-09 21:56:31 -0400 |
| commit | 1d9cfb92a7b3006d2cbae05f025fb38c58fba097 (patch) | |
| tree | 33359473d003b7e282faa084cb7e0928718dbeb8 | |
| parent | fb8734e3fa18619277f54f131a9b898ce7171645 (diff) | |
| download | sparse-dev-1d9cfb92a7b3006d2cbae05f025fb38c58fba097.tar.gz | |
Makefile: add selfcheck target
"make selfcheck" will invoke sparse to check its own source code.
It is different than the "make C=1" in linux kernel because
sparse executable need to be compiled first.
"make <filename>.sc" will invoke the sparse to check specific C source
file <filename>.c
For example: "make parse.sc"
V2:
As pointer out by Ramsay Jones, in cygwin the check need to be
invoked by cgcc to have some platform specific macro defined.
Change the checker program to control by $(CHECKER)
Add $(PROGRAM)_EXTRA_DEPS into selfcheck
Signed-off-By: Christopher Li <sparse@chrisli.org>
| -rw-r--r-- | Makefile | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -18,6 +18,7 @@ LDFLAGS += -g LD = gcc AR = ar PKG_CONFIG = pkg-config +CHECKER = ./cgcc -no-compile ALL_CFLAGS = $(CFLAGS) $(BASIC_CFLAGS) # @@ -73,7 +74,8 @@ GTK2_LIBS := $(shell $(PKG_CONFIG) --libs gtk+-2.0) PROGRAMS += test-inspect INST_PROGRAMS += test-inspect test-inspect_EXTRA_DEPS := ast-model.o ast-view.o ast-inspect.o -test-inspect.o $(test-inspect_EXTRA_DEPS): BASIC_CFLAGS += $(GTK2_CFLAGS) +test-inspect_OBJS := test-inspect.o $(test-inspect_EXTRA_DEPS) +$(test-inspect_OBJS) $(test-inspect_OBJS:.o=.sc): CFLAGS += $(GTK2_CFLAGS) test-inspect_EXTRA_OBJS := $(GTK2_LIBS) else $(warning Your system does not have libgtk2, disabling test-inspect) @@ -127,6 +129,7 @@ LIBS=$(LIB_FILE) V = @ Q = $(V:1=) QUIET_CC = $(Q:@=@echo ' CC '$@;) +QUIET_CHECK = $(Q:@=@echo ' CHECK '$<;) QUIET_AR = $(Q:@=@echo ' AR '$@;) QUIET_GEN = $(Q:@=@echo ' GEN '$@;) QUIET_LINK = $(Q:@=@echo ' LINK '$@;) @@ -193,11 +196,18 @@ ifneq ($(DEP_FILES),) include $(DEP_FILES) endif -c2xml.o: CFLAGS += $(LIBXML_CFLAGS) +c2xml.o c2xml.sc: CFLAGS += $(LIBXML_CFLAGS) %.o: %.c $(LIB_H) $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $< +%.sc: %.c sparse + $(QUIET_CHECK) $(CHECKER) -c $(ALL_CFLAGS) $< + +ALL_OBJS := $(LIB_OBJS) $(foreach p,$(PROGRAMS),$(p).o $($(p)_EXTRA_DEPS)) +selfcheck: $(ALL_OBJS:.o=.sc) + + clean: clean-check rm -f *.[oa] .*.d *.so $(PROGRAMS) $(SLIB_FILE) pre-process.h sparse.pc |
