mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
cf66ff3d1b
This encapsulates our logic that we send CLDAP requests on UDP/389, sending them with 100msec timeouts until someone replies. It also contains the code to do this over LDAP/389 or LDAPS/636. It also contains code to filter for domain controller flags like DS_ONLY_LDAP_NEEDED, this logic exists in several places right now. Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
1338 lines
47 KiB
Python
1338 lines
47 KiB
Python
#!/usr/bin/env python
|
|
|
|
LIBS='ICONV'
|
|
|
|
config_h = "../include/config.h"
|
|
|
|
bld.SAMBA_BLDOPTIONS('smbd/build_options.c')
|
|
|
|
bld.SETUP_BUILD_GROUPS()
|
|
|
|
######################## SUBSYSTEMS #################################
|
|
|
|
bld.SAMBA3_LIBRARY('netapi',
|
|
source='''lib/netapi/netapi.c
|
|
lib/netapi/cm.c
|
|
lib/netapi/libnetapi.c
|
|
lib/netapi/joindomain.c
|
|
lib/netapi/serverinfo.c
|
|
lib/netapi/wkstainfo.c
|
|
lib/netapi/getdc.c
|
|
lib/netapi/user.c
|
|
lib/netapi/group.c
|
|
lib/netapi/localgroup.c
|
|
lib/netapi/samr.c
|
|
lib/netapi/sid.c
|
|
lib/netapi/share.c
|
|
lib/netapi/file.c
|
|
lib/netapi/shutdown.c
|
|
lib/netapi/netlogon.c''',
|
|
deps='CREDENTIALS_CMDLINE',
|
|
public_deps='''
|
|
talloc
|
|
msrpc3
|
|
ads
|
|
NDR_LIBNETAPI
|
|
LIBNET
|
|
RPC_CLIENT_SCHANNEL
|
|
libcli_netlogon3
|
|
LIBCLI_SAMR
|
|
INIT_SAMR
|
|
auth
|
|
''',
|
|
public_headers='../source3/lib/netapi/netapi.h',
|
|
pc_files='libnet/netapi.pc',
|
|
vnum='1.0.0')
|
|
|
|
bld.SAMBA3_LIBRARY('gse',
|
|
source='librpc/crypto/gse_krb5.c librpc/crypto/gse.c',
|
|
deps='krb5samba gensec smbconf KRBCLIENT secrets3',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_LIBRARY('msrpc3',
|
|
source='''
|
|
rpc_client/cli_pipe.c
|
|
rpc_client/rpc_transport_np.c
|
|
rpc_client/rpc_transport_sock.c
|
|
rpc_client/rpc_transport_tstream.c
|
|
rpc_client/local_np.c
|
|
librpc/rpc/dcerpc_helpers.c
|
|
''',
|
|
deps='''
|
|
ndr
|
|
ndr-standard
|
|
RPC_NDR_EPMAPPER
|
|
NTLMSSP_COMMON
|
|
COMMON_SCHANNEL
|
|
LIBCLI_AUTH
|
|
LIBTSOCKET
|
|
npa_tstream
|
|
gse
|
|
dcerpc-binding
|
|
libsmb
|
|
ndr-table
|
|
NETLOGON_CREDS_CLI
|
|
''',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('AVAHI',
|
|
source='''
|
|
lib/avahi.c
|
|
smbd/avahi_register.c
|
|
''',
|
|
deps='''
|
|
avahi-common
|
|
avahi-client
|
|
''',
|
|
enabled=bld.env.with_avahi)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('GROUPDB',
|
|
source='''
|
|
groupdb/mapping.c
|
|
groupdb/mapping_tdb.c
|
|
''',
|
|
deps='tdb')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('TLDAP',
|
|
source='''
|
|
lib/tldap.c
|
|
lib/tldap_util.c
|
|
lib/tldap_gensec_bind.c
|
|
lib/tldap_tls_connect.c
|
|
''',
|
|
deps='''
|
|
asn1util
|
|
LIBTSOCKET
|
|
util_tsock
|
|
LIBTLS
|
|
gensec
|
|
''')
|
|
|
|
bld.SAMBA3_BINARY('test_tldap',
|
|
source='lib/test_tldap.c',
|
|
deps='''
|
|
asn1util
|
|
LIBTSOCKET
|
|
samba3util
|
|
LIBTLS
|
|
smbconf
|
|
cmocka
|
|
''',
|
|
for_selftest=True)
|
|
|
|
# libpdb.so should not expose internal symbols that are only usable
|
|
# to the statically linked modules that are merged into libpdb.
|
|
# Note that we always filter these symbols out in libpdb, even
|
|
# when modules are not linked statically. In the latter case
|
|
# symbols will not be present in the libpdb anyway so no hurt is
|
|
# done to the version script.
|
|
private_pdb_match = []
|
|
private_pdb_match.append('!idmap_init')
|
|
private_pdb_match.append('!idmap_sids_to_xids')
|
|
private_pdb_match.append('!idmap_xids_to_sids')
|
|
|
|
ldapsam_pdb_match = ['!priv2ld', '!smbldap_search_domain_info',
|
|
'!ldapsam_*', '!groupmap_attr_list*', '!get_userattr_list',
|
|
'!dominfo_attr_list', '!get_attr_key2string',
|
|
'!sidmap_attr_list', '!attrib_map_*', '!idpool_attr_list',
|
|
'!get_attr_list']
|
|
private_pdb_match.append('!pdb_nds_*')
|
|
private_pdb_match.append('!pdb_ldapsam_init*')
|
|
private_pdb_match.append('!pdb_*_init')
|
|
private_pdb_match = private_pdb_match + ldapsam_pdb_match
|
|
|
|
bld.SAMBA3_LIBRARY('samba-passdb',
|
|
source='',
|
|
deps='pdb',
|
|
private_library=False,
|
|
grouping_library=True,
|
|
pc_files=[],
|
|
public_headers_install=True,
|
|
public_headers='''
|
|
include/passdb.h
|
|
passdb/machine_sid.h
|
|
passdb/lookup_sid.h
|
|
''',
|
|
abi_match=private_pdb_match,
|
|
abi_directory='passdb/ABI',
|
|
vnum='0.29.0')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('pdb',
|
|
source='''
|
|
passdb/pdb_get_set.c
|
|
passdb/passdb.c
|
|
lib/util_wellknown.c
|
|
lib/util_builtin.c
|
|
passdb/pdb_compat.c
|
|
lib/util_sid_passdb.c
|
|
lib/util_unixsids.c
|
|
passdb/lookup_sid.c
|
|
passdb/login_cache.c
|
|
passdb/account_pol.c
|
|
lib/privileges.c
|
|
lib/util_nscd.c
|
|
lib/winbind_util.c
|
|
passdb/pdb_util.c
|
|
passdb/pdb_interface.c
|
|
passdb/pdb_secrets.c''',
|
|
deps='''
|
|
secrets3
|
|
GROUPDB
|
|
SERVER_MUTEX
|
|
wbclient
|
|
LIBCLI_AUTH
|
|
flag_mapping
|
|
samba-credentials
|
|
samba-modules
|
|
nscd
|
|
''')
|
|
|
|
bld.SAMBA3_LIBRARY('smbldaphelper',
|
|
source='''
|
|
passdb/pdb_ldap_schema.c
|
|
passdb/pdb_ldap_util.c
|
|
''',
|
|
deps='smbldap secrets3',
|
|
allow_undefined_symbols=True,
|
|
enabled=bld.CONFIG_SET('HAVE_LDAP'),
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('SERVER_MUTEX',
|
|
source='lib/server_mutex.c',
|
|
deps='talloc')
|
|
|
|
# this includes only the low level parse code, not stuff
|
|
# that requires knowledge of security contexts
|
|
bld.SAMBA3_SUBSYSTEM('REG_PARSE_PRS',
|
|
source='registry/reg_parse_prs.c')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('REGFIO',
|
|
source='registry/regfio.c',
|
|
deps='samba-util REG_PARSE_PRS')
|
|
|
|
bld.SAMBA_BINARY('test_registry_regfio',
|
|
source='registry/tests/test_regfio.c',
|
|
deps='cmocka samba3-util smbconf REGFIO',
|
|
local_include=False,
|
|
for_selftest=True)
|
|
|
|
# Do not link against this use 'smbconf'
|
|
bld.SAMBA3_SUBSYSTEM('SMBREGISTRY',
|
|
source='''
|
|
registry/reg_api.c
|
|
registry/reg_dispatcher.c
|
|
registry/reg_cachehook.c
|
|
registry/reg_objects.c
|
|
registry/reg_util_internal.c
|
|
lib/util_nttoken.c
|
|
registry/reg_backend_db.c
|
|
registry/reg_parse_internal.c
|
|
registry/reg_parse.c
|
|
lib/srprs.c
|
|
registry/reg_init_basic.c
|
|
''',
|
|
deps='''
|
|
smbd_shim
|
|
tdb-wrap3
|
|
NDR_SECURITY
|
|
util_tdb
|
|
talloc
|
|
replace
|
|
util_reg
|
|
samba-util
|
|
samba-security
|
|
errors3
|
|
dbwrap
|
|
samba3-util
|
|
''')
|
|
|
|
# Do not link against this use 'smbconf'
|
|
bld.SAMBA3_SUBSYSTEM('REG_SMBCONF',
|
|
source='''
|
|
registry/reg_backend_smbconf.c
|
|
registry/reg_init_smbconf.c
|
|
registry/reg_util_token.c
|
|
registry/reg_api_util.c
|
|
''',
|
|
deps='SMBREGISTRY')
|
|
|
|
bld.SAMBA3_LIBRARY('REG_FULL',private_library=True,
|
|
source='''
|
|
registry/reg_backend_printing.c
|
|
registry/reg_backend_shares.c
|
|
registry/reg_backend_netlogon_params.c
|
|
registry/reg_backend_prod_options.c
|
|
registry/reg_backend_tcpip_params.c
|
|
registry/reg_backend_hkpt_params.c
|
|
registry/reg_backend_current_version.c
|
|
registry/reg_backend_perflib.c
|
|
registry/reg_init_full.c
|
|
registry/reg_perfcount.c''',
|
|
deps='''
|
|
smbconf
|
|
tdb-wrap3
|
|
REG_PARSE_PRS
|
|
pdb
|
|
''')
|
|
|
|
bld.SAMBA3_LIBRARY('cmdline_contexts',
|
|
source='lib/cmdline_contexts.c',
|
|
deps='samba3core',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('KRBCLIENT',
|
|
source='libads/kerberos.c libads/ads_status.c',
|
|
public_deps='krb5samba asn1util k5crypto gssapi LIBTSOCKET CLDAP LIBNMB')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('util_tsock',
|
|
source='lib/util_tsock.c',
|
|
deps='tevent-util LIBTSOCKET')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('samba3util',
|
|
source='''
|
|
lib/system.c
|
|
lib/sendfile.c
|
|
lib/recvfile.c
|
|
lib/time.c
|
|
lib/util_sid.c
|
|
lib/util_specialsids.c
|
|
lib/util_file.c
|
|
lib/util.c
|
|
lib/util_path.c
|
|
lib/util_matching.c
|
|
lib/util_procid.c
|
|
lib/util_sock.c
|
|
lib/util_transfer_file.c
|
|
lib/util_macstreams.c
|
|
''',
|
|
deps='''
|
|
CHARSET3
|
|
ndr
|
|
LIBTSOCKET
|
|
util_tsock
|
|
samba-security
|
|
NDR_SECURITY
|
|
samba-util
|
|
util_tdb
|
|
sys_rw
|
|
iov_buf
|
|
''')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('samba3-namearray',
|
|
source='''
|
|
lib/util_namearray.c
|
|
''',
|
|
deps='''
|
|
samba-passdb
|
|
''')
|
|
|
|
if bld.env.with_ctdb:
|
|
SAMBA_CLUSTER_SUPPORT_SOURCES='''
|
|
lib/cluster_support.c
|
|
lib/dbwrap/dbwrap_ctdb.c
|
|
lib/messages_ctdb.c
|
|
lib/messages_ctdb_ref.c
|
|
lib/ctdbd_conn.c
|
|
'''
|
|
SAMBA_CLUSTER_SUPPORT_DEPS='''
|
|
talloc
|
|
tevent
|
|
tdb
|
|
'''
|
|
else:
|
|
SAMBA_CLUSTER_SUPPORT_SOURCES='''
|
|
lib/cluster_support.c
|
|
lib/ctdb_dummy.c
|
|
'''
|
|
SAMBA_CLUSTER_SUPPORT_DEPS='''
|
|
talloc
|
|
tevent
|
|
'''
|
|
|
|
bld.SAMBA3_LIBRARY('samba-cluster-support',
|
|
source=SAMBA_CLUSTER_SUPPORT_SOURCES,
|
|
deps=SAMBA_CLUSTER_SUPPORT_DEPS,
|
|
allow_undefined_symbols=True,
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('TDB_LIB',
|
|
source='''
|
|
lib/dbwrap/dbwrap_open.c
|
|
lib/dbwrap/dbwrap_watch.c
|
|
lib/g_lock.c
|
|
''',
|
|
deps='''
|
|
dbwrap
|
|
samba-cluster-support
|
|
''')
|
|
|
|
bld.SAMBA3_LIBRARY('messages_util',
|
|
source='''lib/messages_util.c''',
|
|
deps='samba-util',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('samba3core',
|
|
source='''
|
|
lib/messages.c
|
|
lib/util_cluster.c
|
|
lib/id_cache.c
|
|
lib/serverid.c
|
|
lib/server_id_watch.c
|
|
lib/server_id_db_util.c
|
|
lib/addrchange.c
|
|
../lib/util/debug_s3.c
|
|
lib/dumpcore.c
|
|
lib/interface.c
|
|
lib/username.c
|
|
lib/smbrun.c
|
|
lib/wins_srv.c
|
|
lib/substitute.c
|
|
lib/substitute_generic.c
|
|
lib/ms_fnmatch.c
|
|
lib/tallocmsg.c
|
|
lib/dmallocmsg.c
|
|
lib/gencache.c
|
|
lib/util_event.c
|
|
lib/global_contexts.c
|
|
lib/ldap_escape.c
|
|
lib/system_smbd.c
|
|
lib/audit.c
|
|
lib/idmap_cache.c
|
|
lib/namemap_cache.c
|
|
lib/util_ea.c
|
|
lib/background.c
|
|
''',
|
|
deps='''
|
|
samba3util
|
|
LIBTSOCKET
|
|
NDR_MESSAGING
|
|
LIBASYNC_REQ
|
|
UTIL_PW
|
|
SAMBA_VERSION
|
|
PTHREADPOOL
|
|
interfaces
|
|
smbconf
|
|
dbwrap
|
|
samba3-util
|
|
errors3
|
|
server_id_db
|
|
messages_util
|
|
messages_dgm
|
|
talloc_report_printf
|
|
access
|
|
TDB_LIB
|
|
z
|
|
''')
|
|
|
|
bld.SAMBA3_LIBRARY('smbd_shim',
|
|
source='''lib/smbd_shim.c''',
|
|
deps='talloc',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('auth_generic',
|
|
source='libsmb/auth_generic.c',
|
|
deps='gse gensec')
|
|
|
|
bld.SAMBA3_LIBRARY('libsmb',
|
|
source='''
|
|
libsmb/clientgen.c
|
|
libsmb/cliconnect.c
|
|
libsmb/clifile.c
|
|
libsmb/clirap.c
|
|
libsmb/clierror.c
|
|
libsmb/climessage.c
|
|
libsmb/clireadwrite.c
|
|
libsmb/clilist.c
|
|
libsmb/cliprint.c
|
|
libsmb/clitrans.c
|
|
libsmb/clisecdesc.c
|
|
libsmb/cliquota.c
|
|
libsmb/clifsinfo.c
|
|
libsmb/clidfs.c
|
|
libsmb/clioplock.c
|
|
libsmb/async_smb.c
|
|
libsmb/clisymlink.c
|
|
libsmb/smbsock_connect.c
|
|
libsmb/cli_smb2_fnum.c
|
|
''',
|
|
deps='''
|
|
auth_generic
|
|
CLDAP
|
|
LIBNMB
|
|
SPNEGO_PARSE
|
|
LIBTSOCKET
|
|
KRBCLIENT
|
|
NDR_IOCTL
|
|
NDR_QUOTA
|
|
cli_smb_common
|
|
tevent
|
|
''',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('NETLOGON_PING',
|
|
source='libads/netlogon_ping.c',
|
|
deps='TLDAP cli_cldap')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('CLDAP',
|
|
source='libads/cldap.c',
|
|
deps='cli-ldap-common cli_cldap LIBTSOCKET NETLOGON_PING')
|
|
|
|
# NOTE: The secrets3 library is a low level library used by several subsystems.
|
|
# PLEASE DO NOT make it depend on high level libraries like PDB, if you are
|
|
# doing that your design is wrong and needs changing. -SSS
|
|
bld.SAMBA3_LIBRARY('secrets3',
|
|
source='''
|
|
passdb/secrets.c
|
|
passdb/machine_account_secrets.c
|
|
passdb/machine_sid.c
|
|
passdb/secrets_lsa.c
|
|
''',
|
|
deps='''
|
|
ndr-samba4
|
|
smbconf
|
|
samba3util
|
|
dbwrap
|
|
krb5samba
|
|
LIBCLI_AUTH
|
|
samba-credentials
|
|
''',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_LIBRARY('smbldap',
|
|
source='lib/smbldap.c',
|
|
deps='ldap lber samba-util smbconf',
|
|
enabled=bld.CONFIG_SET("HAVE_LDAP"),
|
|
private_library=False,
|
|
abi_directory='lib/ABI',
|
|
abi_match='smbldap_*',
|
|
pc_files=[],
|
|
vnum='2.1.0',
|
|
public_headers='include/smbldap.h include/smb_ldap.h')
|
|
|
|
bld.SAMBA3_LIBRARY('ads',
|
|
source='''
|
|
libads/ldap.c
|
|
libads/sasl.c
|
|
libads/sasl_wrapping.c
|
|
libads/tls_wrapping.c
|
|
libads/krb5_setpw.c
|
|
libads/ldap_user.c
|
|
libads/ads_struct.c
|
|
libads/kerberos_keytab.c
|
|
libads/disp_sec.c
|
|
libads/ldap_utils.c
|
|
libads/ldap_schema.c
|
|
libads/util.c
|
|
libads/net_ads_setspn.c
|
|
libads/trusts_util.c
|
|
''',
|
|
deps='''
|
|
cli-ldap-common
|
|
krb5samba
|
|
krb5
|
|
ldap
|
|
lber
|
|
KRBCLIENT
|
|
smbconf
|
|
LIBNMB
|
|
libsmb
|
|
DCUTIL
|
|
smbldap
|
|
libcli_netlogon3
|
|
msrpc3
|
|
samba-passdb
|
|
NDR_ADS
|
|
''',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LIBADS_SERVER',
|
|
source='libads/authdata.c',
|
|
deps='SERVER_MUTEX ndr-krb5pac krb5samba gssapi')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LIBADS_PRINTER',
|
|
source='libads/ldap_printer.c',
|
|
deps='samba-util krb5samba')
|
|
|
|
# Only smbconf should link against this subsystem, else we will create
|
|
# a circular dependency.
|
|
bld.SAMBA3_SUBSYSTEM('SMBCONF_PARAM',
|
|
source='''
|
|
param/loadparm.c
|
|
lib/sharesec.c
|
|
lib/ldap_debug_handler.c
|
|
lib/util_names.c
|
|
''',
|
|
deps='''
|
|
samba-util
|
|
PARAM_UTIL
|
|
ldap
|
|
lber
|
|
LOADPARM_CTX
|
|
samba3core
|
|
param_local.h
|
|
param_global.h
|
|
cups
|
|
''')
|
|
|
|
bld.SAMBA3_LIBRARY('smbconf',
|
|
source='''
|
|
lib/smbconf/smbconf_init.c
|
|
lib/smbconf/smbconf_reg.c
|
|
''',
|
|
deps='''
|
|
LIBSMBCONF
|
|
REG_SMBCONF
|
|
SAMBA_VERSION
|
|
cap
|
|
charset
|
|
samba-hostconfig
|
|
SMBCONF_PARAM
|
|
samba-util
|
|
talloc
|
|
util_reg
|
|
''',
|
|
public_headers='../lib/smbconf/smbconf.h',
|
|
pc_files=[],
|
|
vnum='0.0.1')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('sysquotas',
|
|
source='''
|
|
lib/sysquotas.c
|
|
lib/sysquotas_linux.c
|
|
lib/sysquotas_xfs.c
|
|
lib/sysquotas_4A.c
|
|
lib/sysquotas_4B.c
|
|
lib/sysquotas_jfs2.c
|
|
lib/sysquotas_nfs.c
|
|
''',
|
|
allow_warnings=True,
|
|
deps='samba3-util samba-util tirpc')
|
|
|
|
NOTIFY_SOURCES=''
|
|
NOTIFY_DEPS=''
|
|
|
|
if bld.CONFIG_SET("HAVE_INOTIFY"):
|
|
NOTIFY_SOURCES += ' smbd/notify_inotify.c'
|
|
|
|
if bld.CONFIG_SET('SAMBA_FAM_LIBS'):
|
|
NOTIFY_SOURCES += ' smbd/notify_fam.c'
|
|
NOTIFY_DEPS += ' ' + bld.CONFIG_GET('SAMBA_FAM_LIBS')
|
|
|
|
if bld.CONFIG_SET('WITH_SMB1SERVER'):
|
|
SMB1_SOURCES = '''
|
|
smbd/smb1_message.c
|
|
smbd/smb1_sesssetup.c
|
|
smbd/smb1_lanman.c
|
|
smbd/smb1_utils.c
|
|
smbd/smb1_aio.c
|
|
smbd/smb1_ipc.c
|
|
smbd/smb1_negprot.c
|
|
smbd/smb1_nttrans.c
|
|
smbd/smb1_oplock.c
|
|
smbd/smb1_pipes.c
|
|
smbd/smb1_reply.c
|
|
smbd/smb1_service.c
|
|
smbd/smb1_signing.c
|
|
smbd/smb1_process.c
|
|
smbd/smb1_trans2.c
|
|
'''
|
|
else:
|
|
SMB1_SOURCES = ''
|
|
|
|
bld.SAMBA3_LIBRARY('smbd_base',
|
|
source='''
|
|
smbd/server_reload.c
|
|
smbd/files.c
|
|
smbd/connection.c
|
|
smbd/utmp.c
|
|
smbd/session.c
|
|
smbd/dfree.c
|
|
smbd/dir.c
|
|
smbd/password.c
|
|
smbd/conn_msg.c
|
|
smbd/conn_idle.c
|
|
smbd/share_access.c
|
|
smbd/fileio.c
|
|
smbd/smb2_ipc.c
|
|
smbd/smb2_nttrans.c
|
|
smbd/smb2_pipes.c
|
|
smbd/smb2_reply.c
|
|
smbd/smb2_trans2.c
|
|
smbd/uid.c
|
|
smbd/dosmode.c
|
|
smbd/filename.c
|
|
smbd/open.c
|
|
smbd/close.c
|
|
smbd/blocking.c
|
|
smbd/sec_ctx.c
|
|
smbd/srvstr.c
|
|
smbd/vfs.c
|
|
smbd/seal.c
|
|
smbd/posix_acls.c
|
|
lib/sysacls.c
|
|
smbd/smb2_process.c
|
|
smbd/smb2_service.c
|
|
smbd/error.c
|
|
printing/printspoolss.c
|
|
printing/rap_jobid.c
|
|
printing/load.c
|
|
printing/printer_list.c
|
|
lib/sessionid_tdb.c
|
|
lib/cleanupdb.c
|
|
smbd/fake_file.c
|
|
smbd/quotas.c
|
|
smbd/ntquotas.c
|
|
smbd/msdfs.c
|
|
smbd/smb2_aio.c smbd/statvfs.c
|
|
smbd/dmapi.c
|
|
smbd/smb2_signing.c
|
|
smbd/file_access.c
|
|
smbd/dnsregister.c smbd/globals.c
|
|
smbd/smb2_server.c
|
|
smbd/smb2_glue.c
|
|
smbd/smb2_negprot.c
|
|
smbd/smb2_sesssetup.c
|
|
smbd/smb2_tcon.c
|
|
smbd/smb2_create.c
|
|
smbd/smb2_close.c
|
|
smbd/smb2_flush.c
|
|
smbd/smb2_read.c
|
|
smbd/smb2_write.c
|
|
smbd/smb2_lock.c
|
|
smbd/smb2_ioctl.c
|
|
smbd/smb2_ioctl_dfs.c
|
|
smbd/smb2_ioctl_filesys.c
|
|
smbd/smb2_ioctl_named_pipe.c
|
|
smbd/smb2_ioctl_network_fs.c
|
|
smbd/smb2_ioctl_smbtorture.c
|
|
smbd/smb2_keepalive.c
|
|
smbd/smb2_query_directory.c
|
|
smbd/smb2_notify.c
|
|
smbd/smb2_getinfo.c
|
|
smbd/smb2_setinfo.c
|
|
smbd/smb2_break.c
|
|
smbd/smb2_posix.c
|
|
smbd/smbXsrv_version.c
|
|
smbd/smbXsrv_client.c
|
|
smbd/smbXsrv_session.c
|
|
smbd/smbXsrv_tcon.c
|
|
smbd/smbXsrv_open.c
|
|
smbd/server_exit.c
|
|
smbd/durable.c
|
|
smbd/scavenger.c
|
|
smbd/mangle.c
|
|
smbd/mangle_hash.c
|
|
smbd/mangle_hash2.c
|
|
smbd/smb2_oplock.c
|
|
smbd/oplock_linux.c
|
|
smbd/notify.c
|
|
smbd/notify_msg.c
|
|
smbd/build_options.c
|
|
smbd/conn.c
|
|
rpc_server/srv_pipe_hnd.c
|
|
rpc_server/rpc_ncacn_np.c
|
|
''' + NOTIFY_SOURCES + SMB1_SOURCES,
|
|
deps='''
|
|
talloc
|
|
tevent
|
|
pdb
|
|
libsmb
|
|
msrpc3
|
|
vfs
|
|
vfs_default
|
|
vfs_posixacl
|
|
inotify
|
|
samba3core
|
|
param_service
|
|
AVAHI
|
|
PROFILE
|
|
LOCKING
|
|
LIBADS_SERVER
|
|
LIBAFS
|
|
NDR_SMBXSRV
|
|
LEASES_DB
|
|
LEASES_UTIL
|
|
sysquotas
|
|
NDR_SMB_ACL
|
|
netapi
|
|
NDR_IOCTL
|
|
notifyd
|
|
vfs_acl_common
|
|
NDR_QUOTA
|
|
GNUTLS_HELPERS
|
|
fd_handle
|
|
cli_spoolss
|
|
samba3-namearray
|
|
''' +
|
|
bld.env['dmapi_lib'] +
|
|
bld.env['legacy_quota_libs'] +
|
|
NOTIFY_DEPS,
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LOCKING',
|
|
source='''
|
|
locking/locking.c
|
|
locking/brlock.c
|
|
locking/posix.c
|
|
locking/share_mode_lock.c
|
|
''',
|
|
deps='''
|
|
tdb
|
|
talloc
|
|
vfs
|
|
LEASES_DB
|
|
LEASES_UTIL
|
|
NDR_OPEN_FILES
|
|
FNAME_UTIL
|
|
fd_handle
|
|
''')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LEASES_DB',
|
|
source='locking/leases_db.c',
|
|
deps='NDR_LEASES_DB')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LEASES_UTIL',
|
|
source='locking/leases_util.c',
|
|
deps='NDR_OPEN_FILES')
|
|
|
|
if bld.CONFIG_GET("WITH_PROFILE"):
|
|
bld.SAMBA_SUBSYSTEM('PROFILE_READ',
|
|
source='profile/profile_read.c',
|
|
deps='gnutls talloc tdb')
|
|
bld.SAMBA3_SUBSYSTEM('PROFILE',
|
|
source='profile/profile.c',
|
|
deps='''
|
|
samba-util
|
|
PROFILE_READ
|
|
''')
|
|
else:
|
|
bld.SAMBA3_SUBSYSTEM('PROFILE',
|
|
source='profile/profile_dummy.c',
|
|
deps='')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('PRINTBASE',
|
|
source='''
|
|
printing/notify.c
|
|
printing/printing_db.c
|
|
''',
|
|
deps='''
|
|
samba-util
|
|
tdb
|
|
''')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('PRINTBACKEND',
|
|
source='''
|
|
printing/printing.c
|
|
printing/nt_printing.c
|
|
printing/nt_printing_tdb.c
|
|
printing/nt_printing_migrate_internal.c
|
|
printing/nt_printing_ads.c
|
|
printing/queue_process.c
|
|
''',
|
|
deps='''
|
|
PRINTBASE
|
|
LIBADS_PRINTER
|
|
tdb
|
|
printing_migrate
|
|
''')
|
|
|
|
bld.SAMBA3_LIBRARY('printing_migrate',
|
|
source='''
|
|
printing/nt_printing_migrate.c
|
|
rpc_client/cli_winreg_spoolss.c
|
|
printing/nt_printing_os2.c
|
|
''',
|
|
deps='''
|
|
NDR_NTPRINTING
|
|
cli_spoolss
|
|
RPC_NDR_WINREG
|
|
LIBCLI_WINREG
|
|
smbconf
|
|
''',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('PRINTING',
|
|
source='''
|
|
printing/pcap.c
|
|
printing/print_svid.c
|
|
printing/print_aix.c
|
|
printing/print_cups.c
|
|
printing/print_generic.c
|
|
printing/lpq_parse.c
|
|
printing/print_standard.c
|
|
printing/print_iprint.c
|
|
''',
|
|
deps='''
|
|
NDR_PRINTCAP
|
|
dbwrap
|
|
tdb-wrap3
|
|
SMBCONF_PARAM
|
|
PRINTBASE
|
|
smbd_base
|
|
cups
|
|
''')
|
|
|
|
bld.SAMBA_BINARY('samba-bgqd',
|
|
source='printing/samba-bgqd.c',
|
|
deps='''
|
|
samba3core
|
|
CMDLINE_S3
|
|
AUTH_COMMON
|
|
RPC_SPOOLSS
|
|
''',
|
|
install_path='${LIBEXECDIR}/samba')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('FNAME_UTIL',
|
|
source='lib/filename_util.c',
|
|
deps='samba-util')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LIBNET',
|
|
source='libnet/libnet_join.c libnet/libnet_join_offline.c',
|
|
deps='NDR_LIBNET_JOIN INIT_SAMR net_keytab pdb')
|
|
|
|
bld.SAMBA3_LIBRARY('net_keytab',
|
|
source='libnet/libnet_keytab.c',
|
|
deps='krb5samba ads',
|
|
private_library=True)
|
|
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LIBNET_DSSYNC',
|
|
source='''
|
|
libnet/libnet_dssync.c
|
|
libnet/libnet_dssync_passdb.c
|
|
libnet/libnet_dssync_keytab.c
|
|
''',
|
|
deps='''
|
|
LIBNET
|
|
RPC_NDR_DRSUAPI
|
|
''')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LIBEVENTLOG',
|
|
source='lib/eventlog/eventlog.c',
|
|
deps='NDR_EVENTLOG tdb')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LIBNMB',
|
|
source='''
|
|
libsmb/unexpected.c
|
|
libsmb/namecache.c
|
|
libsmb/nmblib.c
|
|
libsmb/clidgram.c
|
|
libsmb/namequery.c
|
|
libsmb/conncache.c
|
|
libads/sitename_cache.c
|
|
''',
|
|
deps='''
|
|
LIBTSOCKET
|
|
LIBCLI_NETLOGON
|
|
samba3util
|
|
smbconf
|
|
addns
|
|
lmhosts
|
|
resolv
|
|
''')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('SERVICES',
|
|
source='''
|
|
services/svc_spoolss.c
|
|
services/svc_rcinit.c
|
|
services/svc_winreg_glue.c
|
|
services/svc_netlogon.c
|
|
services/svc_winreg.c
|
|
services/svc_wins.c
|
|
''',
|
|
deps='samba-util')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('PLAINTEXT_AUTH',
|
|
source='''
|
|
auth/pampass.c
|
|
auth/pass_check.c
|
|
''',
|
|
deps='''
|
|
crypt
|
|
pam
|
|
PAM_ERRORS
|
|
''')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('PASSCHANGE',
|
|
source='libsmb/passchange.c',
|
|
deps='''
|
|
LIBCLI_SAMR
|
|
msrpc3
|
|
krb5samba
|
|
''')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('SAMBA_VERSION',
|
|
source='lib/version.c')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('SLCACHE',
|
|
source='libsmb/samlogon_cache.c',
|
|
deps='''
|
|
samba-util
|
|
tdb
|
|
''')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('dsgetdcname',
|
|
source='''
|
|
libsmb/dsgetdcname.c
|
|
''',
|
|
deps='''
|
|
CLDAP
|
|
LIBNMB
|
|
''')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('DCUTIL',
|
|
source='''
|
|
libsmb/namequery_dc.c
|
|
''',
|
|
deps='''
|
|
ads
|
|
dsgetdcname
|
|
msrpc3
|
|
libcli_lsa3
|
|
''')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('tdb-wrap3',
|
|
source='lib/util_tdb.c',
|
|
deps='talloc samba3-util')
|
|
|
|
bld.SAMBA3_LIBRARY('samba3-util',
|
|
source='''
|
|
lib/util_sec.c
|
|
lib/util_str.c
|
|
lib/adt_tree.c
|
|
lib/util_malloc.c
|
|
lib/file_id.c
|
|
lib/cbuf.c
|
|
lib/per_thread_cwd.c
|
|
''',
|
|
deps='''
|
|
samba-util
|
|
charset
|
|
''',
|
|
private_library=True)
|
|
|
|
bld.SAMBA_LIBRARY('xattr_tdb',
|
|
source='lib/xattr_tdb.c',
|
|
deps='NDR_XATTR dbwrap samba3-util',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_LIBRARY('CHARSET3',
|
|
source='''
|
|
lib/charcnv.c
|
|
lib/fstring.c
|
|
''',
|
|
public_deps='''
|
|
ICONV_WRAPPER
|
|
charset
|
|
''',
|
|
deps='''
|
|
samba-util
|
|
samba3-util
|
|
''',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('errors3',
|
|
source='''
|
|
libsmb/errormap.c
|
|
libsmb/smberr.c
|
|
lib/errmap_unix.c
|
|
''',
|
|
deps='samba-errors')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LIBCLI_SAMR',
|
|
source='rpc_client/cli_samr.c',
|
|
deps='RPC_NDR_SAMR INIT_LSA INIT_SAMR')
|
|
|
|
bld.SAMBA3_LIBRARY('libcli_lsa3',
|
|
source='rpc_client/cli_lsarpc.c',
|
|
deps='RPC_NDR_LSA INIT_LSA',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_LIBRARY('libcli_netlogon3',
|
|
source='''
|
|
rpc_client/cli_netlogon.c
|
|
rpc_client/util_netlogon.c
|
|
''',
|
|
deps='''
|
|
msrpc3
|
|
RPC_NDR_NETLOGON
|
|
cliauth
|
|
smbconf
|
|
NETLOGON_CREDS_CLI''',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_LIBRARY('cli_spoolss',
|
|
source='''
|
|
rpc_client/cli_spoolss.c
|
|
rpc_client/init_spoolss.c
|
|
''',
|
|
deps='''
|
|
RPC_NDR_SPOOLSS
|
|
smbconf
|
|
secrets3
|
|
gensec
|
|
''',
|
|
private_library=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LIBCLI_WINREG',
|
|
source='rpc_client/cli_winreg.c',
|
|
deps='RPC_NDR_WINREG')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LIBCLI_WINREG_INTERNAL',
|
|
source='rpc_client/cli_winreg_int.c',
|
|
deps='LIBCLI_WINREG RPC_SERVER')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('RPC_CLIENT_SCHANNEL',
|
|
source='rpc_client/cli_pipe_schannel.c',
|
|
deps='samba-util krb5samba')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('RPCCLI_MDSSVC',
|
|
source='''
|
|
rpc_client/cli_mdssvc.c
|
|
rpc_client/cli_mdssvc_util.c
|
|
''',
|
|
deps='mdssvc RPC_NDR_MDSSVC')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('RPCCLI_WSP',
|
|
source='''
|
|
rpc_client/wsp_cli.c
|
|
''',
|
|
deps='tevent-util tstream_binding_handle')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('INIT_LSA',
|
|
source='rpc_client/init_lsa.c',
|
|
deps='samba-util GNUTLS_HELPERS')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('INIT_SAMR',
|
|
source='rpc_client/init_samr.c',
|
|
deps='samba-util GNUTLS_HELPERS')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('LIBLSA',
|
|
source='lib/lsa.c')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('tevent-glib-glue',
|
|
source='lib/tevent_glib_glue.c',
|
|
deps='glib-2.0',
|
|
enabled=bld.CONFIG_SET('WITH_TEVENT_GLIB_GLUE'),
|
|
)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('ADOUBLE',
|
|
source='lib/adouble.c',
|
|
deps='STRING_REPLACE')
|
|
|
|
bld.SAMBA3_BINARY('test_adouble',
|
|
source='lib/test_adouble.c',
|
|
deps='smbd_base STRING_REPLACE cmocka',
|
|
for_selftest=True)
|
|
|
|
bld.SAMBA3_SUBSYSTEM('STRING_REPLACE',
|
|
source='lib/string_replace.c')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('fd_handle',
|
|
source='smbd/fd_handle.c')
|
|
|
|
########################## BINARIES #################################
|
|
|
|
bld.SAMBA3_BINARY('smbd/smbd',
|
|
source='smbd/server.c smbd/smbd_cleanupd.c',
|
|
deps='''
|
|
CMDLINE_S3
|
|
smbd_base
|
|
REG_FULL
|
|
''',
|
|
install_path='${SBINDIR}')
|
|
|
|
|
|
bld.SAMBA3_SUBSYSTEM('TDB_VALIDATE',
|
|
source='lib/tdb_validate.c',
|
|
deps='samba-util')
|
|
|
|
bld.SAMBA3_SUBSYSTEM('util_sd',
|
|
deps='smbclient',
|
|
source='lib/util_sd.c')
|
|
|
|
bld.SAMBA3_BINARY('client/smbclient',
|
|
source='''
|
|
client/client.c
|
|
client/clitar.c
|
|
client/dnsbrowse.c
|
|
''',
|
|
deps='''
|
|
talloc
|
|
CMDLINE_S3
|
|
smbconf
|
|
ndr-standard
|
|
SMBREADLINE
|
|
libsmb
|
|
msrpc3
|
|
RPC_NDR_SRVSVC
|
|
cli_smb_common
|
|
archive
|
|
''')
|
|
|
|
bld.SAMBA3_BINARY('smbspool',
|
|
source='client/smbspool.c',
|
|
deps='''
|
|
talloc
|
|
smbconf
|
|
libsmb
|
|
samba3core
|
|
''')
|
|
|
|
bld.SAMBA3_BINARY('smbspool_krb5_wrapper',
|
|
source='client/smbspool_krb5_wrapper.c',
|
|
deps='''
|
|
DYNCONFIG
|
|
cups
|
|
krb5samba
|
|
''',
|
|
install_path='${LIBEXECDIR}/samba',
|
|
enabled=bld.CONFIG_SET('HAVE_CUPS'))
|
|
|
|
bld.SAMBA3_BINARY('smbspool_argv_wrapper',
|
|
source='script/tests/smbspool_argv_wrapper.c',
|
|
for_selftest=True)
|
|
|
|
bld.SAMBA3_BINARY('smbconftort',
|
|
source='lib/smbconf/testsuite.c',
|
|
deps='''
|
|
talloc
|
|
smbconf
|
|
CMDLINE_S3
|
|
''',
|
|
for_selftest=True)
|
|
|
|
bld.SAMBA3_BINARY('test_mdsparser_es',
|
|
source='''
|
|
rpc_server/mdssvc/test_mdsparser_es.c
|
|
rpc_server/mdssvc/es_parser.y
|
|
rpc_server/mdssvc/es_lexer.l
|
|
rpc_server/mdssvc/es_mapping.c
|
|
''',
|
|
deps='''
|
|
samba3-util
|
|
talloc
|
|
smbconf
|
|
jansson
|
|
cmocka
|
|
CMDLINE_S3
|
|
''',
|
|
enabled=bld.env.spotlight_backend_es,
|
|
for_selftest=True)
|
|
|
|
bld.SAMBA3_BINARY('versiontest',
|
|
source='lib/version_test.c',
|
|
deps='''
|
|
SAMBA_VERSION
|
|
smbconf
|
|
''',
|
|
install=False)
|
|
|
|
bld.SAMBA3_BINARY('timelimit',
|
|
source='script/tests/timelimit.c',
|
|
for_selftest=True)
|
|
|
|
bld.SAMBA3_BINARY('vlp',
|
|
source='printing/tests/vlp.c',
|
|
deps='''
|
|
talloc
|
|
smbconf
|
|
''',
|
|
for_selftest=True)
|
|
|
|
|
|
pyrpc_util = bld.pyembed_libname('pyrpc_util')
|
|
pytalloc_util = bld.pyembed_libname('pytalloc-util')
|
|
bld.SAMBA3_PYTHON('pysmbd',
|
|
source='smbd/pysmbd.c',
|
|
deps=' '.join(['smbd_base', pyrpc_util, pytalloc_util]),
|
|
realname='samba/samba3/smbd.so'
|
|
)
|
|
|
|
pycredentials = 'pycredentials'
|
|
bld.SAMBA3_PYTHON('pylibsmb',
|
|
source='libsmb/pylibsmb.c',
|
|
deps='smbclient samba-credentials %s' % pycredentials,
|
|
realname='samba/samba3/libsmb_samba_cwrapper.so'
|
|
)
|
|
|
|
bld.SAMBA3_PYTHON('pymdscli',
|
|
source='rpc_client/py_mdscli.c',
|
|
deps=' '.join(['RPCCLI_MDSSVC', pytalloc_util, pyrpc_util]),
|
|
realname='samba/samba3/mdscli.so')
|
|
|
|
bld.SAMBA3_PYTHON('pys3smbconf',
|
|
source='lib/smbconf/pys3smbconf.c',
|
|
deps='smbconf',
|
|
realname='samba/samba3/smbconf.so')
|
|
|
|
bld.SAMBA3_BINARY('spotlight2sparql',
|
|
source='''
|
|
rpc_server/mdssvc/sparql_parser_test.c
|
|
rpc_server/mdssvc/sparql_parser.y
|
|
rpc_server/mdssvc/sparql_lexer.l
|
|
rpc_server/mdssvc/sparql_mapping.c''',
|
|
deps='samba3-util talloc ' + bld.env['libtracker'],
|
|
enabled=bld.env.spotlight_backend_tracker,
|
|
install=False)
|
|
|
|
bld.SAMBA3_BINARY('spotlight2es',
|
|
source='''
|
|
rpc_server/mdssvc/es_parser_test.c
|
|
rpc_server/mdssvc/es_parser.y
|
|
rpc_server/mdssvc/es_lexer.l
|
|
rpc_server/mdssvc/es_mapping.c''',
|
|
deps='samba3-util talloc jansson smbconf',
|
|
enabled=bld.env.spotlight_backend_es,
|
|
install=False)
|
|
|
|
bld.SAMBA3_BINARY('tevent_glib_glue_test',
|
|
source='lib/tevent_glib_glue_tests.c',
|
|
deps='''
|
|
talloc
|
|
libsmb
|
|
tevent-glib-glue''',
|
|
enabled=bld.CONFIG_SET('WITH_TEVENT_GLIB_GLUE'),
|
|
for_selftest=True)
|
|
|
|
bld.SAMBA3_BINARY('tevent_glib_tracker',
|
|
source='utils/async-tracker.c',
|
|
deps='''
|
|
talloc
|
|
libsmb
|
|
CMDLINE_S3
|
|
tevent-glib-glue ''' + bld.env['libtracker'],
|
|
enabled=bld.CONFIG_SET('HAVE_TRACKER') and bld.CONFIG_SET('WITH_TEVENT_GLIB_GLUE'),
|
|
install=False)
|
|
|
|
########################## INCLUDES #################################
|
|
|
|
bld.RECURSE('auth')
|
|
bld.RECURSE('libgpo/gpext')
|
|
bld.RECURSE('librpc')
|
|
bld.RECURSE('librpc/idl')
|
|
bld.RECURSE('libsmb')
|
|
bld.RECURSE('modules')
|
|
bld.RECURSE('param')
|
|
bld.RECURSE('passdb')
|
|
bld.RECURSE('rpc_server')
|
|
bld.RECURSE('script')
|
|
bld.RECURSE('winbindd')
|
|
bld.RECURSE('../examples/libsmbclient')
|
|
bld.RECURSE('../examples/pdb')
|
|
bld.RECURSE('../examples/VFS')
|
|
bld.RECURSE('../examples/fuse')
|
|
bld.RECURSE('../examples/winexe')
|
|
bld.RECURSE('lib/netapi/tests')
|
|
bld.RECURSE('lib/netapi/examples')
|
|
bld.RECURSE('smbd/notifyd')
|
|
bld.RECURSE('rpcclient')
|
|
bld.RECURSE('utils')
|
|
bld.RECURSE('nmbd')
|
|
bld.RECURSE('lib/util')
|
|
bld.RECURSE('torture')
|
|
|
|
bld.ENFORCE_GROUP_ORDERING()
|
|
bld.CHECK_PROJECT_RULES()
|
|
|