mirror of
https://github.com/samba-team/samba.git
synced 2025-01-12 09:18:10 +03:00
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 4bffe44359
)
This commit is contained in:
parent
7001200686
commit
069e498da2
@ -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.
|
||||
#
|
||||
# Copyright (C) 2005 Jelmer Vernooij <jelmer@samba.org>
|
||||
# Published under the GNU GPL
|
||||
|
||||
hostenv = Environment(CPPPATH = ['#', '#include', '#lib'])
|
||||
|
||||
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')
|
||||
|
||||
|
1
source4/auth/SConscript
Normal file
1
source4/auth/SConscript
Normal file
@ -0,0 +1 @@
|
||||
Import('hostenv')
|
75
source4/build/scons/iconv.py
Normal file
75
source4/build/scons/iconv.py
Normal file
@ -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,[])
|
32
source4/build/scons/pidl.py
Normal file
32
source4/build/scons/pidl.py
Normal file
@ -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
|
26
source4/build/scons/proto.py
Normal file
26
source4/build/scons/proto.py
Normal file
@ -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')
|
||||
|
||||
|
10
source4/gtk/SConscript
Normal file
10
source4/gtk/SConscript
Normal file
@ -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'])
|
@ -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')
|
||||
|
@ -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
|
||||
|
@ -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')
|
||||
|
29
source4/lib/ldb/SConscript
Normal file
29
source4/lib/ldb/SConscript
Normal file
@ -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'])
|
@ -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')
|
||||
|
13
source4/lib/tdb/SConscript
Normal file
13
source4/lib/tdb/SConscript
Normal file
@ -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)
|
@ -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
|
||||
|
@ -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')
|
||||
|
@ -103,6 +103,7 @@ REQUIRED_SUBSYSTEMS = \
|
||||
SERVER_SERVICE \
|
||||
CONFIG \
|
||||
LIBCMDLINE \
|
||||
LIBBASIC
|
||||
LIBBASIC \
|
||||
PIDFILE
|
||||
# End BINARY smbd
|
||||
#################################
|
||||
|
Loading…
Reference in New Issue
Block a user