Commit 8730b2e1 authored by Rusty Russell's avatar Rusty Russell

Makefile: don't separate all modules with external dependencies.

Using ccanlint's --deps-fail-ignore, we can just test every module
with "make check".  Still exclude them from the 'libccan.a' build
though.
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 238fce09
......@@ -12,16 +12,21 @@
# Where make scores puts the results
SCOREDIR=scores/$(shell whoami)/$(shell uname -s)-$(shell uname -m)-$(CC)-$(shell git describe --always --dirty)
CCANLINT=tools/ccanlint/ccanlint --deps-fail-ignore
CCANLINT_FAST=$(CCANLINT) -x tests_pass_valgrind -x tests_compile_coverage
default: libccan.a
ALL_DEPENDS=$(patsubst %, ccan/%/.depends, $(MODS_NORMAL) $(MODS_EXTERNAL))
ALL_DEPENDS=$(patsubst %, ccan/%/.depends, $(MODS))
# By default, we skip modules with external deps.
MODS_EXCLUDE:=jmap jset nfs ogg_to_pcm tal/talloc wwviaudio
include Makefile-ccan
fastcheck: $(MODS_NORMAL:%=summary-fastcheck-%)
fastcheck: $(MODS:%=summary-fastcheck-%)
check: $(MODS_NORMAL:%=summary-check-%)
check: $(MODS:%=summary-check-%)
distclean: clean
rm -f $(ALL_DEPENDS)
......@@ -36,44 +41,41 @@ $(SCOREDIR)/SUMMARY: $(MODS:%=$(SCOREDIR)/%.score)
$(SCOREDIR)/%.score: ccan/%/_info tools/ccanlint/ccanlint $(OBJFILES)
mkdir -p `dirname $@`
tools/ccanlint/ccanlint -v -s ccan/$* > $@ || true
$(CCANLINT) -v -s ccan/$* > $@ || true
$(ALL_DEPENDS): %/.depends: %/_info tools/ccan_depends
tools/ccan_depends $* > $@ || ( rm -f $@; exit 1 )
# Actual dependencies are created in inter-depends
check-%: tools/ccanlint/ccanlint
tools/ccanlint/ccanlint ccan/$*
$(CCANLINT) ccan/$*
fastcheck-%: tools/ccanlint/ccanlint
tools/ccanlint/ccanlint -x tests_pass_valgrind -x tests_compile_coverage ccan/$*
$(CCANLINT_FAST) ccan/$*
# Doesn't test dependencies, doesn't print verbose fail results.
summary-check-%: tools/ccanlint/ccanlint $(OBJFILES)
tools/ccanlint/ccanlint -s ccan/$*
$(CCANLINT) -s ccan/$*
summary-fastcheck-%: tools/ccanlint/ccanlint $(OBJFILES)
tools/ccanlint/ccanlint -x tests_pass_valgrind -x tests_compile_coverage -s ccan/$*
$(CCANLINT_FAST) -s ccan/$*
# FIXME: Horrible hacks because % doesn't match /
summary-check-antithread/%: tools/ccanlint/ccanlint $(OBJFILES)
tools/ccanlint/ccanlint -s ccan/antithread/$*
$(CCANLINT) -s ccan/antithread/$*
summary-fastcheck-antithread/%: tools/ccanlint/ccanlint $(OBJFILES)
tools/ccanlint/ccanlint -x tests_pass_valgrind -x tests_compile_coverage -s ccan/antithread/$*
$(CCANLINT_FAST) -s ccan/antithread/$*
summary-check-tal/%: tools/ccanlint/ccanlint $(OBJFILES)
tools/ccanlint/ccanlint -s ccan/tal/$*
$(CCANLINT) -s ccan/tal/$*
summary-fastcheck-tal/%: tools/ccanlint/ccanlint $(OBJFILES)
tools/ccanlint/ccanlint -x tests_pass_valgrind -x tests_compile_coverage -s ccan/tal/$*
$(CCANLINT_FAST) -s ccan/tal/$*
ccan/%/info: ccan/%/_info
$(CC) $(CCAN_CFLAGS) -o $@ -x c $<
libccan.a(%.o): ccan/%.o
$(AR) r $@ $<
clean: tools-clean
$(RM) `find * -name '*.o'` `find * -name '.depends'` `find * -name '*.a'` `find * -name info` `find * -name '*.d'`
$(RM) inter-depends lib-depends test-depends ccan/*-Makefile
......
......@@ -6,8 +6,8 @@
CCAN_CFLAGS=-g3 -ggdb -Wall -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wwrite-strings -Wundef -DCCAN_STR_DEBUG=1
CFLAGS = $(CCAN_CFLAGS) -I. $(DEPGEN)
# Normal modules: no external dependencies, just a header:
MODS_NORMAL_NO_SRC := alignof \
# Modules which are just a header:
MODS_NO_SRC := alignof \
array_size \
asearch \
build_assert \
......@@ -26,7 +26,7 @@ MODS_NORMAL_NO_SRC := alignof \
version
# No external dependencies, with C code:
MODS_NORMAL_WITH_SRC := antithread \
MODS_WITH_SRC := antithread \
antithread/alloc \
asort \
asprintf \
......@@ -53,13 +53,17 @@ MODS_NORMAL_WITH_SRC := antithread \
ilog \
isaac \
iscsi \
jmap \
json \
jset \
lbalance \
likely \
list \
md4 \
net \
nfs \
noerr \
ogg_to_pcm \
opt \
ptr_valid \
rbtree \
......@@ -78,28 +82,16 @@ MODS_NORMAL_WITH_SRC := antithread \
tal/link \
tal/path \
tal/str \
tal/talloc \
talloc \
talloc_link \
tally \
tap \
time \
ttxml
MODS_NORMAL:=$(MODS_NORMAL_WITH_SRC) $(MODS_NORMAL_NO_SRC)
# Modules which require external dependencies, thus may not pass check.
MODS_EXTERNAL_NO_SRC:=
MODS_EXTERNAL_WITH_SRC:=jmap \
jset \
nfs \
ogg_to_pcm \
tal/talloc \
ttxml \
wwviaudio
MODS_EXTERNAL:=$(MODS_EXTERNAL_NO_SRC) $(MODS_EXTERNAL_WITH_SRC)
MODS:=$(MODS_EXTERNAL) $(MODS_NORMAL)
MODS:=$(MODS_WITH_SRC) $(MODS_NO_SRC)
default: libccan.a
......@@ -108,7 +100,7 @@ DEPGEN=-MD
-include ccan/*/*.d
# Anything with C files needs building; dir leaves / on, sort uniquifies
DIRS=$(patsubst %/, %, $(sort $(foreach m, $(MODS_NORMAL_WITH_SRC), $(dir $(wildcard ccan/$m/*.c)))))
DIRS=$(patsubst %/, %, $(sort $(foreach m, $(filter-out $(MODS_EXCLUDE), $(MODS_WITH_SRC)), $(dir $(wildcard ccan/$m/*.c)))))
# Generate everyone's separate Makefiles.
-include $(foreach dir, $(DIRS), $(dir)-Makefile)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment