diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2005-09-19 22:01:57 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:38:28 -0500 |
commit | 069e498da2a03bd253a2fcf2b7ff13f266ab63b4 (patch) | |
tree | 640f3f77f4a16577c5deab17c4c9216da51bd179 /source4 | |
parent | 700120068620f32f7affb479dc5986544afed643 (diff) | |
download | samba-069e498da2a03bd253a2fcf2b7ff13f266ab63b4.tar.gz samba-069e498da2a03bd253a2fcf2b7ff13f266ab63b4.tar.bz2 samba-069e498da2a03bd253a2fcf2b7ff13f266ab63b4.zip |
r10330: Add SConscript to more subsystems. Some of the tdb tools build now.
Start on custom Samba scons tools (for handling proto generation, pidl, etc)
(This used to be commit 4bffe4435944fffa3f9680b5a2fe63f2bdd98003)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/SConstruct | 44 | ||||
-rw-r--r-- | source4/auth/SConscript | 1 | ||||
-rw-r--r-- | source4/build/scons/iconv.py | 75 | ||||
-rw-r--r-- | source4/build/scons/pidl.py | 32 | ||||
-rw-r--r-- | source4/build/scons/proto.py | 26 | ||||
-rw-r--r-- | source4/gtk/SConscript | 10 | ||||
-rw-r--r-- | source4/lib/SConscript | 8 | ||||
-rw-r--r-- | source4/lib/basic.mk | 7 | ||||
-rw-r--r-- | source4/lib/charset/SConscript | 14 | ||||
-rw-r--r-- | source4/lib/ldb/SConscript | 29 | ||||
-rw-r--r-- | source4/lib/popt/SConscript | 5 | ||||
-rw-r--r-- | source4/lib/tdb/SConscript | 13 | ||||
-rw-r--r-- | source4/lib/tdb/tools/tdbbackup.c | 2 | ||||
-rw-r--r-- | source4/param/SConscript | 3 | ||||
-rw-r--r-- | source4/smbd/config.mk | 3 |
15 files changed, 243 insertions, 29 deletions
diff --git a/source4/SConstruct b/source4/SConstruct index 431cba17fe..43ca7517fc 100644 --- a/source4/SConstruct +++ b/source4/SConstruct @@ -1,11 +1,19 @@ +#!/usr/bin/env python # tastes like -*- python -*- # This is the experimental scons build script for Samba 4. For a proper # build use the old build system (configure + make). scons may # eventually replace this system. - -hostenv = Environment(CPPPATH = ['#', '#include', '#lib']) - +# +# Copyright (C) 2005 Jelmer Vernooij <jelmer@samba.org> +# Published under the GNU GPL + +hostenv = Environment( + toolpath=['build/scons','.'], + tools=['default'], + CPPPATH=['#include','#','#lib'], + CCFLAGS='-D_SAMBA_BUILD_' + ) hostenv.Append(CPPPATH = ['#heimdal_build', '#heimdal/lib/krb5', '#heimdal/lib/hdb', '#heimdal/lib/gssapi', '#heimdal/lib/asn1', '#heimdal/lib/des', @@ -14,23 +22,22 @@ hostenv.Append(CPPPATH = ['#heimdal_build', '#heimdal/lib/krb5', buildenv = hostenv.Copy() -SConscript('param/SConscript','hostenv') -SConscript('lib/SConscript','hostenv') - dynenv = hostenv.Copy() +bindir = "bindir" + paths = { - 'BINDIR': 'bin', - 'SBINDIR': 'sbin', - 'CONFIGFILE': 'cfg', - 'LOGFILEBASE': 'lfb', - 'NCALRPCDIR': 'ncalrpc', - 'LMHOSTSFILE': 'lmhosts', - 'LIBDIR': 'libdir', - 'SHLIBEXT': 'ext', - 'LOCKDIR': 'lockdir', - 'PIDDIR': 'piddir', - 'SMB_PASSWD_FILE': 'smbpasswd', + 'BINDIR': bindir, + 'SBINDIR': "sbin", + 'CONFIGFILE': "cfg", + 'LOGFILEBASE': "lfb", + 'NCALRPCDIR': "ncalrpc", + 'LMHOSTSFILE': "lmhosts", + 'LIBDIR': "libdir", + 'SHLIBEXT': "ext", + 'LOCKDIR': "lockdir", + 'PIDDIR': "piddir", + 'SMB_PASSWD_FILE': "smbpasswd", 'PRIVATE_DIR': 'private', 'SWATDIR': 'swat' } @@ -39,3 +46,6 @@ paths = { dynconfig = dynenv.Object('dynconfig.c') Export('dynconfig') + +SConscript(dirs=['param','lib'],exports='hostenv') + diff --git a/source4/auth/SConscript b/source4/auth/SConscript new file mode 100644 index 0000000000..b17b8e580b --- /dev/null +++ b/source4/auth/SConscript @@ -0,0 +1 @@ +Import('hostenv') diff --git a/source4/build/scons/iconv.py b/source4/build/scons/iconv.py new file mode 100644 index 0000000000..ef82dc475d --- /dev/null +++ b/source4/build/scons/iconv.py @@ -0,0 +1,75 @@ +# Based on the M4 macro by Bruno Haible. + +def _CheckIconvPath(path): + # Some systems have iconv in libc, some have it in libiconv (OSF/1 and + # those with the standalone portable libiconv installed). + context.Message("checking for iconv in " + path) + + main = """ +int main() +{ + iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + return 0; +}""" + + have_giconv_iconv = context.TryLink(""" +#include <stdlib.h> +#include <giconv.h> +""" + main, '.c') + if have_giconv_iconv: + context.Result(1) + return ("giconv.h", "") + + have_iconv_iconv = context.TryLink(""" +#include <stdlib.h> +#include <iconv.h> +""" + main, '.c') + + if have_iconv_iconv: + context.Result(1) + return ("iconv.h", "") + + #FIXME: Add -lgiconv + have_giconv_lib_iconv = context.TryLink(""" +#include <stdlib.h> +#include <giconv.h> +""" + main, '.c') + if have_giconv_lib_iconv: + context.Result(1) + return ("giconv.h", "-lgiconv") + + #FIXME: Add -liconv + have_iconv_lib_iconv = context.TryLink(""" +#include <stdlib.h> +#include <iconv.h> +"""+main,'.c') + + if have_iconv_lib_iconv: + context.Result(1) + return ("iconv.h", "-liconv") + + return None + +def CheckIconv(context): + context.Message("checking for iconv") + + look_dirs = ['/usr','/usr/local','/sw'] + + for p in look_dirs: + _CheckIconvPath(p) #FIXME: Handle return value + + if context.TryRun(""" +#include <iconv.h> +main() { + iconv_t cd = iconv_open("ASCII", "UCS-2LE"); + if (cd == 0 || cd == (iconv_t)-1) return -1; + return 0; +} +""", '.c'): + context.Result(1) + return (1,[]) + + context.Result(0) + return (0,[]) diff --git a/source4/build/scons/pidl.py b/source4/build/scons/pidl.py new file mode 100644 index 0000000000..c0c29d2035 --- /dev/null +++ b/source4/build/scons/pidl.py @@ -0,0 +1,32 @@ +"""SCons.Tool.pidl + +Tool-specific initialization for pidl (Perl-based IDL compiler) + +""" + +import SCons.Defaults +import SCons.Scanner.IDL +import SCons.Util + +idl_scanner = SCons.Scanner.IDL.IDLScan() + +pidl_builder = SCons.Builder.Builder(action='$PIDLCOM', + src_suffix = '.idl', + suffix='.c', + scanner = idl_scanner) + +def generate(env): + env['PIDL'] = 'pidl' + env['PIDLCPP'] = env['CPP'] + env['PIDLFLAGS'] = [] + env['PIDLCOM'] = 'CPP=$PIDLCPP $PIDL $PIDLFLAGS -- $SOURCE' + env['BUILDERS']['NdrMarshaller'] = pidl_builder + +def exists(env): + if (env.Detect('./pidl/pidl')): + return 1 + + if (env.Detect('pidl')): + return 1 + + return 0 diff --git a/source4/build/scons/proto.py b/source4/build/scons/proto.py new file mode 100644 index 0000000000..6a53bfb4ab --- /dev/null +++ b/source4/build/scons/proto.py @@ -0,0 +1,26 @@ +"""SCons.Tool.proto + +Tool-specific initialization for mkproto (C Proto File generator) + +""" + +import SCons.Defaults +import SCons.Scanner.C +import SCons.Util + +c_scanner = SCons.Scanner.C.CScan() + +proto_builder = SCons.Builder.Builder(action='$PROTOCOM', + src_suffix = '.idl', + suffix='.h', + scanner = c_scanner) + +def generate(env): + env['MKPROTO'] = './script/mkproto.sh' + env['PROTOCOM'] = '$MKPROTO "$PERL" -h _PROTO_H_ ${TARGETS[0]} $SOURCE' + env['BUILDERS']['ProtoHeader'] = proto_builder + +def exists(env): + return env.Detect('./script/mkproto.sh') + + diff --git a/source4/gtk/SConscript b/source4/gtk/SConscript new file mode 100644 index 0000000000..dc84db5a3a --- /dev/null +++ b/source4/gtk/SConscript @@ -0,0 +1,10 @@ +Import('hostenv') + +gtksmb = hostenv.StaticLibrary('gtksmb', + ['common/gtk-smb.c','common/select.c', + 'common/gtk_events.c','common/credentials.c']) + +hostenv.Program('gregedit', [gtksmb,'tools/gregedit.c']) +hostenv.Program('gepdump', [gtksmb,'tools/gepdump.c']) +hostenv.Program('gwcrontab', [gtksmb,'tools/gwcrontab.c']) +hostenv.Program('gwsam', [gtksmb,'tools/gwsam.c','tools/gwsam_user.c']) diff --git a/source4/lib/SConscript b/source4/lib/SConscript index f1bff77cd0..a4a1f92361 100644 --- a/source4/lib/SConscript +++ b/source4/lib/SConscript @@ -20,8 +20,6 @@ hostenv.StaticLibrary('gencache',['gencache.c']) hostenv.StaticLibrary('pidfile',['pidfile.c']) hostenv.StaticLibrary('unix_privs',['unix_privs.c']) -SConscript('popt/SConscript','hostenv') -SConscript('cmdline/SConscript','hostenv') -SConscript('talloc/SConscript','hostenv') -SConscript('registry/SConscript','hostenv') -SConscript('charset/SConscript', 'hostenv') +SConscript(dirs=['tdb','popt','cmdline','talloc','registry','charset', + 'ldb'], + exports='hostenv') diff --git a/source4/lib/basic.mk b/source4/lib/basic.mk index 86392cfc40..3fa9bb354b 100644 --- a/source4/lib/basic.mk +++ b/source4/lib/basic.mk @@ -47,7 +47,6 @@ ADD_OBJ_FILES = \ lib/xfile.o \ lib/debug.o \ lib/fault.o \ - lib/pidfile.o \ lib/signal.o \ lib/system.o \ lib/time.o \ @@ -66,7 +65,6 @@ ADD_OBJ_FILES = \ lib/select.o \ lib/mutex.o \ lib/idtree.o \ - lib/unix_privs.o \ lib/db_wrap.o \ lib/gendb.o \ lib/credentials.o @@ -76,3 +74,8 @@ REQUIRED_SUBSYSTEMS = \ # End SUBSYSTEM LIBBASIC ############################## +[SUBSYSTEM::PIDFILE] +OBJ_FILES = lib/pidfile.o + +[SUBSYSTEM::UNIX_PRIVS] +OBJ_FILES = lib/unix_privs.o diff --git a/source4/lib/charset/SConscript b/source4/lib/charset/SConscript index d73d390309..7d9044d547 100644 --- a/source4/lib/charset/SConscript +++ b/source4/lib/charset/SConscript @@ -1,5 +1,15 @@ +SConscript('../../build/scons/iconv.py') # tastes like -*- python -*- - Import('hostenv') -charset = hostenv.StaticLibrary('charset',['iconv.c','charcnv.c']) + +#conf = Configure(hostenv, custom_tests = { 'CheckIconv' : CheckIconv }) +#(have_iconv,iconv) = conf.CheckIconv() +#conf.Finish() + +#if not have_iconv: +# print "Install iconv for better charset compatibility" + +iconv = [] + +charset = hostenv.StaticLibrary('charset',['iconv.c','charcnv.c',iconv]) Export('charset') diff --git a/source4/lib/ldb/SConscript b/source4/lib/ldb/SConscript new file mode 100644 index 0000000000..1698a7cff3 --- /dev/null +++ b/source4/lib/ldb/SConscript @@ -0,0 +1,29 @@ +Import('hostenv') + + +hostenv.StaticLibrary('modules/timestamps.c') +hostenv.StaticLibrary('modules/rdn_name.c') +hostenv.StaticLibrary('modules/schema.c') +hostenv.StaticLibrary('ldb_ildap/ldb_ildap.c') +hostenv.StaticLibrary('modules/ldb_map.c') +hostenv.StaticLibrary('ldb_sqlite3/ldb_sqlite3.c') +hostenv.StaticLibrary('ldb_tdb', + ['ldb_tdb/ldb_tdb.c','ldb_tdb/ldb_search.c','ldb_tdb/ldb_pack.c', + 'ldb_tdb/ldb_index.c','ldb_tdb/ldb_cache.c','ldb_tdb/ldb_tdb_wrap.c']) + +hostenv.StaticLibrary('ldb', + ['common/ldb.c','common/ldb_ldif.c','common/ldb_parse.c', + 'common/ldb_parse.c','common/ldb_msg.c','common/ldb_utf8.c', + 'common/ldb_debug.c','common/ldb_modules.c','common/ldb_match.c', + 'common/attrib_handlers.c','common/ldb_dn.c']) + +hostenv.StaticLibrary('samba/ldif_handlers.c') +hostenv.StaticLibrary('ldb_cmdline', 'tools/cmdline.c') + +hostenv.Program('ldbadd',['tools/ldbadd.c']) +hostenv.Program('ldbdel',['tools/ldbdel.c']) +hostenv.Program('ldbmodify',['tools/ldbmodify.c']) +hostenv.Program('ldbsearch',['tools/ldbsearch.c']) +hostenv.Program('ldbrename',['tools/ldbrename.c']) +hostenv.Program('ldbtest',['tools/ldbtest.c']) +hostenv.Program('oLschema2ldif',['tools/oLschema2ldif.c']) diff --git a/source4/lib/popt/SConscript b/source4/lib/popt/SConscript index 580de92023..fd13edc42f 100644 --- a/source4/lib/popt/SConscript +++ b/source4/lib/popt/SConscript @@ -1,5 +1,10 @@ # tastes like -*- python -*- Import('hostenv') + +conf = Configure(hostenv) +conf.env['HAVE_EXTERNAL_POPT'] = conf.CheckLibWithHeader('popt', 'popt.h', 'c', 'poptGetArgs(NULL);') +conf.Finish() + popt = hostenv.StaticLibrary('popt', ['findme.c','popt.c','poptconfig.c','popthelp.c','poptparse.c']) Export('popt') diff --git a/source4/lib/tdb/SConscript b/source4/lib/tdb/SConscript new file mode 100644 index 0000000000..d2ebf7002f --- /dev/null +++ b/source4/lib/tdb/SConscript @@ -0,0 +1,13 @@ +Import('hostenv') +tdbenv = hostenv.Copy() +tdbenv.Append(CPPPATH=['include']) +tdb = tdbenv.StaticLibrary('tdb', + ['common/tdb.c','common/dump.c','common/io.c','common/lock.c', + 'common/open.c','common/traverse.c','common/freelist.c', + 'common/error.c','common/tdbutil.c']) + +tdbtool = tdbenv.Program('tdbtool', ['tools/tdbtool.c',tdb]) +tdbtorture = tdbenv.Program('tdbtorture', ['tools/tdbtorture.c',tdb]) +tdbdump = tdbenv.Program('tdbdump', ['tools/tdbdump.c',tdb]) +tdbbackup = tdbenv.Program('tdbbackup', ['tools/tdbbackup.c',tdb]) +Default(tdbtool,tdbtorture,tdbdump,tdbbackup) diff --git a/source4/lib/tdb/tools/tdbbackup.c b/source4/lib/tdb/tools/tdbbackup.c index 4cb6a8cfdd..872ca99f0d 100644 --- a/source4/lib/tdb/tools/tdbbackup.c +++ b/source4/lib/tdb/tools/tdbbackup.c @@ -63,11 +63,11 @@ #else #include "includes.h" +#include "system/filesys.h" #endif #include "tdb.h" -#include "tdbback.h" /* see if one file is newer than another diff --git a/source4/param/SConscript b/source4/param/SConscript index 9fe6ffa71b..15213a8a4d 100644 --- a/source4/param/SConscript +++ b/source4/param/SConscript @@ -1,7 +1,8 @@ # tastes like -*- python -*- Import('hostenv') -param = hostenv.StaticLibrary('loadparm',['loadparm.c','params.c']) +Import('dynconfig') +param = hostenv.StaticLibrary('loadparm',['loadparm.c','params.c',dynconfig]) Export('param') generic = hostenv.StaticLibrary('generic',['generic.c']) Export('generic') diff --git a/source4/smbd/config.mk b/source4/smbd/config.mk index 37082485f5..24ea69a82a 100644 --- a/source4/smbd/config.mk +++ b/source4/smbd/config.mk @@ -103,6 +103,7 @@ REQUIRED_SUBSYSTEMS = \ SERVER_SERVICE \ CONFIG \ LIBCMDLINE \ - LIBBASIC + LIBBASIC \ + PIDFILE # End BINARY smbd ################################# |