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 @@ ...@@ -12,16 +12,21 @@
# Where make scores puts the results # Where make scores puts the results
SCOREDIR=scores/$(shell whoami)/$(shell uname -s)-$(shell uname -m)-$(CC)-$(shell git describe --always --dirty) 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 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 include Makefile-ccan
fastcheck: $(MODS_NORMAL:%=summary-fastcheck-%) fastcheck: $(MODS:%=summary-fastcheck-%)
check: $(MODS_NORMAL:%=summary-check-%) check: $(MODS:%=summary-check-%)
distclean: clean distclean: clean
rm -f $(ALL_DEPENDS) rm -f $(ALL_DEPENDS)
...@@ -36,44 +41,41 @@ $(SCOREDIR)/SUMMARY: $(MODS:%=$(SCOREDIR)/%.score) ...@@ -36,44 +41,41 @@ $(SCOREDIR)/SUMMARY: $(MODS:%=$(SCOREDIR)/%.score)
$(SCOREDIR)/%.score: ccan/%/_info tools/ccanlint/ccanlint $(OBJFILES) $(SCOREDIR)/%.score: ccan/%/_info tools/ccanlint/ccanlint $(OBJFILES)
mkdir -p `dirname $@` mkdir -p `dirname $@`
tools/ccanlint/ccanlint -v -s ccan/$* > $@ || true $(CCANLINT) -v -s ccan/$* > $@ || true
$(ALL_DEPENDS): %/.depends: %/_info tools/ccan_depends $(ALL_DEPENDS): %/.depends: %/_info tools/ccan_depends
tools/ccan_depends $* > $@ || ( rm -f $@; exit 1 ) tools/ccan_depends $* > $@ || ( rm -f $@; exit 1 )
# Actual dependencies are created in inter-depends # Actual dependencies are created in inter-depends
check-%: tools/ccanlint/ccanlint check-%: tools/ccanlint/ccanlint
tools/ccanlint/ccanlint ccan/$* $(CCANLINT) ccan/$*
fastcheck-%: tools/ccanlint/ccanlint 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. # Doesn't test dependencies, doesn't print verbose fail results.
summary-check-%: tools/ccanlint/ccanlint $(OBJFILES) summary-check-%: tools/ccanlint/ccanlint $(OBJFILES)
tools/ccanlint/ccanlint -s ccan/$* $(CCANLINT) -s ccan/$*
summary-fastcheck-%: tools/ccanlint/ccanlint $(OBJFILES) 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 / # FIXME: Horrible hacks because % doesn't match /
summary-check-antithread/%: tools/ccanlint/ccanlint $(OBJFILES) summary-check-antithread/%: tools/ccanlint/ccanlint $(OBJFILES)
tools/ccanlint/ccanlint -s ccan/antithread/$* $(CCANLINT) -s ccan/antithread/$*
summary-fastcheck-antithread/%: tools/ccanlint/ccanlint $(OBJFILES) 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) summary-check-tal/%: tools/ccanlint/ccanlint $(OBJFILES)
tools/ccanlint/ccanlint -s ccan/tal/$* $(CCANLINT) -s ccan/tal/$*
summary-fastcheck-tal/%: tools/ccanlint/ccanlint $(OBJFILES) 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 ccan/%/info: ccan/%/_info
$(CC) $(CCAN_CFLAGS) -o $@ -x c $< $(CC) $(CCAN_CFLAGS) -o $@ -x c $<
libccan.a(%.o): ccan/%.o
$(AR) r $@ $<
clean: tools-clean clean: tools-clean
$(RM) `find * -name '*.o'` `find * -name '.depends'` `find * -name '*.a'` `find * -name info` `find * -name '*.d'` $(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 $(RM) inter-depends lib-depends test-depends ccan/*-Makefile
......
...@@ -6,8 +6,8 @@ ...@@ -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 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) CFLAGS = $(CCAN_CFLAGS) -I. $(DEPGEN)
# Normal modules: no external dependencies, just a header: # Modules which are just a header:
MODS_NORMAL_NO_SRC := alignof \ MODS_NO_SRC := alignof \
array_size \ array_size \
asearch \ asearch \
build_assert \ build_assert \
...@@ -26,7 +26,7 @@ MODS_NORMAL_NO_SRC := alignof \ ...@@ -26,7 +26,7 @@ MODS_NORMAL_NO_SRC := alignof \
version version
# No external dependencies, with C code: # No external dependencies, with C code:
MODS_NORMAL_WITH_SRC := antithread \ MODS_WITH_SRC := antithread \
antithread/alloc \ antithread/alloc \
asort \ asort \
asprintf \ asprintf \
...@@ -53,13 +53,17 @@ MODS_NORMAL_WITH_SRC := antithread \ ...@@ -53,13 +53,17 @@ MODS_NORMAL_WITH_SRC := antithread \
ilog \ ilog \
isaac \ isaac \
iscsi \ iscsi \
jmap \
json \ json \
jset \
lbalance \ lbalance \
likely \ likely \
list \ list \
md4 \ md4 \
net \ net \
nfs \
noerr \ noerr \
ogg_to_pcm \
opt \ opt \
ptr_valid \ ptr_valid \
rbtree \ rbtree \
...@@ -78,28 +82,16 @@ MODS_NORMAL_WITH_SRC := antithread \ ...@@ -78,28 +82,16 @@ MODS_NORMAL_WITH_SRC := antithread \
tal/link \ tal/link \
tal/path \ tal/path \
tal/str \ tal/str \
tal/talloc \
talloc \ talloc \
talloc_link \ talloc_link \
tally \ tally \
tap \ tap \
time \ time \
ttxml 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 \
wwviaudio wwviaudio
MODS_EXTERNAL:=$(MODS_EXTERNAL_NO_SRC) $(MODS_EXTERNAL_WITH_SRC) MODS:=$(MODS_WITH_SRC) $(MODS_NO_SRC)
MODS:=$(MODS_EXTERNAL) $(MODS_NORMAL)
default: libccan.a default: libccan.a
...@@ -108,7 +100,7 @@ DEPGEN=-MD ...@@ -108,7 +100,7 @@ DEPGEN=-MD
-include ccan/*/*.d -include ccan/*/*.d
# Anything with C files needs building; dir leaves / on, sort uniquifies # 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. # Generate everyone's separate Makefiles.
-include $(foreach dir, $(DIRS), $(dir)-Makefile) -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