ccan.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [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).