summaryrefslogtreecommitdiff
path: root/lib/ccan
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2012-06-29 12:09:06 +0930
committerRusty Russell <rusty@rustcorp.com.au>2012-06-29 06:22:44 +0200
commitf3862b917168ade88a048cdee688986b0479fe37 (patch)
treee3a18ca9acf92d6dd334acc25ba3e0f2b3b68840 /lib/ccan
parent485787f0dfa64bbada7c971ec44f04a1095b4229 (diff)
downloadsamba-f3862b917168ade88a048cdee688986b0479fe37.tar.gz
samba-f3862b917168ade88a048cdee688986b0479fe37.tar.bz2
samba-f3862b917168ade88a048cdee688986b0479fe37.zip
ccan: we're subsystems, not a library.
Don't expose a libccan.so; it would produce clashes if someone else does the same thing. Unfortunately, if we just change it from a SAMBA_LIBRARY to a SAMBA_SUBSYSTEM, it doesn't create a static library as we'd like, but links all the object files in. This means we get many duplicates (eg. everyone gets a copy of tally, even though only ntdb wants it). So, the solution is twofold: 1) Make the ccan modules separate. 2) Make the ccan modules SAMBA_SUBSYSTEMs not SAMBA_LIBRARYs so we don't build shared libraries which we can't share. 3) Make the places which uses ccan explicit. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Autobuild-User(master): Rusty Russell <rusty@rustcorp.com.au> Autobuild-Date(master): Fri Jun 29 06:22:44 CEST 2012 on sn-devel-104
Diffstat (limited to 'lib/ccan')
-rw-r--r--lib/ccan/wscript43
1 files changed, 31 insertions, 12 deletions
diff --git a/lib/ccan/wscript b/lib/ccan/wscript
index c1dae41611..565a65757b 100644
--- a/lib/ccan/wscript
+++ b/lib/ccan/wscript
@@ -121,19 +121,38 @@ def configure(conf):
# backtrace could be in libexecinfo or in libc
conf.CHECK_FUNCS_IN('backtrace backtrace_symbols', 'execinfo', checklibc=True, headers='execinfo.h')
+def ccan_module(bld, name, deps=''):
+ bld.SAMBA_SUBSYSTEM('ccan-%s' % name,
+ source=bld.path.ant_glob('%s/*.c' % name),
+ deps=deps)
+
def build(bld):
+ # These have actual C files.
+ ccan_module(bld, 'hash', 'ccan-build_assert')
+ ccan_module(bld, 'ilog', 'ccan-compiler');
+ ccan_module(bld, 'read_write_all')
+ ccan_module(bld, 'str', 'ccan-build_assert')
+ ccan_module(bld, 'tally', 'ccan-build_assert ccan-likely')
- for ccan_dir in ["err", "hash", "htable", "ilog", "likely", "list", "read_write_all", "str", "tally", "time"]:
- bld.SAMBA_SUBSYSTEM('ccan-%s' % ccan_dir,
- source=bld.path.ant_glob('%s/*.c' % ccan_dir))
+ # These are headers only.
+ ccan_module(bld, 'array_size', 'ccan-build_assert')
+ ccan_module(bld, 'asearch','ccan-typesafe_cb ccan-array_size')
+ ccan_module(bld, 'build_assert')
+ ccan_module(bld, 'cast', 'ccan-build_assert')
+ ccan_module(bld, 'check_type', 'ccan-build_assert')
+ ccan_module(bld, 'compiler')
+ ccan_module(bld, 'endian')
+ ccan_module(bld, 'likely', 'ccan-str')
+ ccan_module(bld, 'typesafe_cb')
+ # Failtest pulls in a lot of stuff, and it's only for unit tests.
if bld.env.DEVELOPER_MODE:
- bld.SAMBA_LIBRARY('ccan-failtest',
- source=bld.path.ant_glob('failtest/*.c'),
- deps='execinfo ccan ccan-htable ccan-list ccan-read_write_all ccan-time',
- private_library=True)
-
- bld.SAMBA_LIBRARY('ccan',
- source='',
- deps='ccan-err ccan-hash ccan-ilog ccan-likely ccan-tally',
- private_library=True)
+ ccan_module(bld, 'container_of', 'ccan-check_type')
+ ccan_module(bld, 'err', 'ccan-compiler')
+ ccan_module(bld, 'htable', 'ccan-compiler')
+ ccan_module(bld, 'list', 'ccan-container_of')
+ ccan_module(bld, 'time')
+ ccan_module(bld, 'tcon')
+ ccan_module(bld, 'tlist', 'ccan-list ccan-tcon')
+ ccan_module(bld, 'failtest',
+ "ccan-err ccan-hash ccan-htable ccan-list ccan-read_write_all ccan-str ccan-time")