Commit a1d7e21f authored by David Gibson's avatar David Gibson

Automatically determine which modules have source

Currently, build of ccan is controlled by two Make variables: MODS_WITH_SRC
and MODS_NO_SRC which list modules containing .c files, and modules with
only .h files respectively.

When adding new modules this is fiddly to get right, and there are a number
of modules already listed in the wrong variable.  There's also some
redundant logic in the DIRS variable to again filter out modules without
source.

This simplifies things by having a single manually updated MODS variable
listing every module, and determining MODS_WITH_SOURCE programmatically.
Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
parent ee77e470
...@@ -6,62 +6,49 @@ ...@@ -6,62 +6,49 @@
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)
# Modules which are just a header: MODS := a_star \
MODS_NO_SRC := alignof \
argcheck \
array_size \
asearch \
bitmap \
build_assert \
cast \
check_type \
compiler \
container_of \
cppmagic \
darray \
endian \
lqueue \
lstack \
minmax \
objset \
short_types \
structeq \
tcon \
tlist \
typesafe_cb \
version
# No external dependencies, with C code:
MODS_WITH_SRC := a_star \
aga \ aga \
agar \ agar \
alignof \
altstack \ altstack \
antithread \ antithread \
antithread/alloc \ antithread/alloc \
argcheck \
array_size \
asearch \
asort \ asort \
asprintf \ asprintf \
autodata \ autodata \
avl \ avl \
base64 \ base64 \
bdelta \ bdelta \
bitmap \
block_pool \ block_pool \
breakpoint \ breakpoint \
btree \ btree \
build_assert \
bytestring \ bytestring \
cast \
ccan_tokenizer \ ccan_tokenizer \
cdump \ cdump \
charset \ charset \
check_type \
ciniparser \ ciniparser \
compiler \
container_of \
cppmagic \
cpuid \
crc \ crc \
crcsync \ crcsync \
cpuid \
crypto/ripemd160 \ crypto/ripemd160 \
crypto/sha256 \ crypto/sha256 \
crypto/shachain \ crypto/shachain \
daemonize \ daemonize \
daemon_with_notify \ daemon_with_notify \
darray \
deque \ deque \
dgraph \ dgraph \
endian \
eratosthenes \ eratosthenes \
err \ err \
failtest \ failtest \
...@@ -79,18 +66,22 @@ MODS_WITH_SRC := a_star \ ...@@ -79,18 +66,22 @@ MODS_WITH_SRC := a_star \
iscsi \ iscsi \
jacobson_karels \ jacobson_karels \
jmap \ jmap \
json \
jset \ jset \
json \
lbalance \ lbalance \
likely \ likely \
list \ list \
lpq \ lpq \
lqueue \
lstack \
md4 \ md4 \
mem \ mem \
minmax \
net \ net \
nfs \ nfs \
noerr \ noerr \
ntdb \ ntdb \
objset \
ogg_to_pcm \ ogg_to_pcm \
opt \ opt \
order \ order \
...@@ -105,15 +96,17 @@ MODS_WITH_SRC := a_star \ ...@@ -105,15 +96,17 @@ MODS_WITH_SRC := a_star \
read_write_all \ read_write_all \
rfc822 \ rfc822 \
rszshm \ rszshm \
short_types \
siphash \ siphash \
sparse_bsearch \ sparse_bsearch \
str \ str \
str/hex \ str/hex \
strgrp \
stringbuilder \ stringbuilder \
stringmap \ stringmap \
strgrp \
strmap \ strmap \
strset \ strset \
structeq \
take \ take \
tal \ tal \
tal/grab_file \ tal/grab_file \
...@@ -125,13 +118,18 @@ MODS_WITH_SRC := a_star \ ...@@ -125,13 +118,18 @@ MODS_WITH_SRC := a_star \
talloc \ talloc \
tally \ tally \
tap \ tap \
tcon \
time \ time \
timer \ timer \
tlist \
ttxml \ ttxml \
typesafe_cb \
version \
wwviaudio \ wwviaudio \
xstring xstring
MODS:=$(MODS_WITH_SRC) $(MODS_NO_SRC) # Anything with C files needs building; dir leaves / on, sort uniquifies
MODS_WITH_SRC = $(patsubst ccan/%/, %, $(sort $(foreach m, $(MODS), $(dir $(wildcard ccan/$m/*.c)))))
default: libccan.a default: libccan.a
...@@ -139,8 +137,7 @@ default: libccan.a ...@@ -139,8 +137,7 @@ default: libccan.a
DEPGEN=-MMD DEPGEN=-MMD
-include $(foreach m, $(MODS), ccan/$(m)/*.d) -include $(foreach m, $(MODS), ccan/$(m)/*.d)
# Anything with C files needs building; dir leaves / on, sort uniquifies DIRS=$(patsubst %, ccan/%, $(filter-out $(MODS_EXCLUDE), $(MODS_WITH_SRC)))
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