* [PATCH 0/2] More build cleanups
@ 2016-05-09 19:59 David Gibson
2016-05-09 19:59 ` [PATCH 1/2] Automatically determine which modules have source David Gibson
2016-05-09 19:59 ` [PATCH 2/2] Build info files David Gibson
0 siblings, 2 replies; 5+ messages in thread
From: David Gibson @ 2016-05-09 19:59 UTC (permalink / raw)
To: ccan
Some further small cleanups to the build scripts.
David Gibson (2):
Automatically determine which modules have source
Build info files
Makefile | 8 +++++---
Makefile-ccan | 63 +++++++++++++++++++++++++++------------------------------
ccan/.gitignore | 2 ++
3 files changed, 37 insertions(+), 36 deletions(-)
--
2.5.5
_______________________________________________
ccan mailing list
ccan@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/ccan
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] Automatically determine which modules have source
2016-05-09 19:59 [PATCH 0/2] More build cleanups David Gibson
@ 2016-05-09 19:59 ` David Gibson
2016-05-09 19:59 ` [PATCH 2/2] Build info files David Gibson
1 sibling, 0 replies; 5+ messages in thread
From: David Gibson @ 2016-05-09 19:59 UTC (permalink / raw)
To: ccan
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: David Gibson <david@gibson.dropbear.id.au>
---
Makefile-ccan | 63 ++++++++++++++++++++++++++++-------------------------------
1 file changed, 30 insertions(+), 33 deletions(-)
diff --git a/Makefile-ccan b/Makefile-ccan
index 31ad2e4..e71f3a1 100644
--- a/Makefile-ccan
+++ b/Makefile-ccan
@@ -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
CFLAGS = $(CCAN_CFLAGS) -I. $(DEPGEN)
-# Modules which are just a header:
-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 \
+MODS := a_star \
aga \
agar \
+ alignof \
altstack \
antithread \
antithread/alloc \
+ argcheck \
+ array_size \
+ asearch \
asort \
asprintf \
autodata \
avl \
base64 \
bdelta \
+ bitmap \
block_pool \
breakpoint \
btree \
+ build_assert \
bytestring \
+ cast \
ccan_tokenizer \
cdump \
charset \
+ check_type \
ciniparser \
+ compiler \
+ container_of \
+ cppmagic \
+ cpuid \
crc \
crcsync \
- cpuid \
crypto/ripemd160 \
crypto/sha256 \
crypto/shachain \
daemonize \
daemon_with_notify \
+ darray \
deque \
dgraph \
+ endian \
eratosthenes \
err \
failtest \
@@ -79,18 +66,22 @@ MODS_WITH_SRC := a_star \
iscsi \
jacobson_karels \
jmap \
- json \
jset \
+ json \
lbalance \
likely \
list \
lpq \
+ lqueue \
+ lstack \
md4 \
mem \
+ minmax \
net \
nfs \
noerr \
ntdb \
+ objset \
ogg_to_pcm \
opt \
order \
@@ -105,15 +96,17 @@ MODS_WITH_SRC := a_star \
read_write_all \
rfc822 \
rszshm \
+ short_types \
siphash \
sparse_bsearch \
str \
str/hex \
+ strgrp \
stringbuilder \
stringmap \
- strgrp \
strmap \
strset \
+ structeq \
take \
tal \
tal/grab_file \
@@ -125,13 +118,18 @@ MODS_WITH_SRC := a_star \
talloc \
tally \
tap \
+ tcon \
time \
timer \
+ tlist \
ttxml \
+ typesafe_cb \
+ version \
wwviaudio \
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
@@ -139,8 +137,7 @@ default: libccan.a
DEPGEN=-MMD
-include $(foreach m, $(MODS), ccan/$(m)/*.d)
-# Anything with C files needs building; dir leaves / on, sort uniquifies
-DIRS=$(patsubst %/, %, $(sort $(foreach m, $(filter-out $(MODS_EXCLUDE), $(MODS_WITH_SRC)), $(dir $(wildcard ccan/$m/*.c)))))
+DIRS=$(patsubst %, ccan/%, $(filter-out $(MODS_EXCLUDE), $(MODS_WITH_SRC)))
# Generate everyone's separate Makefiles.
-include $(foreach dir, $(DIRS), $(dir)-Makefile)
--
2.5.5
_______________________________________________
ccan mailing list
ccan@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/ccan
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] Build info files
2016-05-09 19:59 [PATCH 0/2] More build cleanups David Gibson
2016-05-09 19:59 ` [PATCH 1/2] Automatically determine which modules have source David Gibson
@ 2016-05-09 19:59 ` David Gibson
2016-05-24 4:46 ` Rusty Russell
1 sibling, 1 reply; 5+ messages in thread
From: David Gibson @ 2016-05-09 19:59 UTC (permalink / raw)
To: ccan
All modules have a _info file (a C file, despite the lack of extension)
giving metadata for the module. The Makefiles have a rule to build these..
but it's broken (missing an include directive).
This patch fixes the rule, and builds the info binaries for all modules by
default. This is a useful check and also useful for manually inspecting
a module's metadata.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
Makefile | 8 +++++---
ccan/.gitignore | 2 ++
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index 2ce0145..127b875 100644
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@ SCOREDIR=scores/$(shell whoami)/$(shell uname -s)-$(shell uname -m)-$(CC)-$(shel
CCANLINT=tools/ccanlint/ccanlint --deps-fail-ignore
CCANLINT_FAST=$(CCANLINT) -x tests_pass_valgrind -x tests_compile_coverage
-default: libccan.a
+default: all_info libccan.a
ALL_DEPENDS=$(patsubst %, ccan/%/.depends, $(MODS))
@@ -63,8 +63,10 @@ summary-check/%: tools/ccanlint/ccanlint $(OBJFILES)
summary-fastcheck/%: tools/ccanlint/ccanlint $(OBJFILES)
$(CCANLINT_FAST) -s ccan/$*
-ccan/%/info: ccan/%/_info
- $(CC) $(CCAN_CFLAGS) -o $@ -x c $<
+ccan/%/info: ccan/%/_info config.h
+ $(CC) $(CCAN_CFLAGS) -I. -o $@ -x c $<
+
+all_info: $(MODS:%=ccan/%/info)
clean: tools-clean
rm -f `find * -name '*.o'` `find * -name '.depends'` `find * -name '*.a'` `find * -name info` `find * -name '*.d'` `find ccan -name '*-Makefile'`
diff --git a/ccan/.gitignore b/ccan/.gitignore
index 714e66a..e497e74 100644
--- a/ccan/.gitignore
+++ b/ccan/.gitignore
@@ -1 +1,3 @@
*-Makefile
+info
+
--
2.5.5
_______________________________________________
ccan mailing list
ccan@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/ccan
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] Build info files
2016-05-09 19:59 ` [PATCH 2/2] Build info files David Gibson
@ 2016-05-24 4:46 ` Rusty Russell
2016-05-24 11:13 ` David Gibson
0 siblings, 1 reply; 5+ messages in thread
From: Rusty Russell @ 2016-05-24 4:46 UTC (permalink / raw)
To: David Gibson, ccan
David Gibson <david@gibson.dropbear.id.au> writes:
> All modules have a _info file (a C file, despite the lack of extension)
> giving metadata for the module. The Makefiles have a rule to build these..
> but it's broken (missing an include directive).
>
> This patch fixes the rule, and builds the info binaries for all modules by
> default. This is a useful check and also useful for manually inspecting
> a module's metadata.
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Sorry for the delay. These are great, please apply.
Thanks!
Rusty.
_______________________________________________
ccan mailing list
ccan@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/ccan
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] Build info files
2016-05-24 4:46 ` Rusty Russell
@ 2016-05-24 11:13 ` David Gibson
0 siblings, 0 replies; 5+ messages in thread
From: David Gibson @ 2016-05-24 11:13 UTC (permalink / raw)
To: Rusty Russell; +Cc: ccan
[-- Attachment #1.1: Type: text/plain, Size: 858 bytes --]
On Tue, May 24, 2016 at 02:16:39PM +0930, Paul 'Rusty' Russell wrote:
> David Gibson <david@gibson.dropbear.id.au> writes:
> > All modules have a _info file (a C file, despite the lack of extension)
> > giving metadata for the module. The Makefiles have a rule to build these..
> > but it's broken (missing an include directive).
> >
> > This patch fixes the rule, and builds the info binaries for all modules by
> > default. This is a useful check and also useful for manually inspecting
> > a module's metadata.
> >
> > Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
>
> Sorry for the delay. These are great, please apply.
Done.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 127 bytes --]
_______________________________________________
ccan mailing list
ccan@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/ccan
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-05-24 12:06 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-09 19:59 [PATCH 0/2] More build cleanups David Gibson
2016-05-09 19:59 ` [PATCH 1/2] Automatically determine which modules have source David Gibson
2016-05-09 19:59 ` [PATCH 2/2] Build info files David Gibson
2016-05-24 4:46 ` Rusty Russell
2016-05-24 11:13 ` David Gibson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).