#!/usr/bin/env python


bld.SAMBA_SUBSYSTEM('TORTURE_UTIL',
	source='util_smb.c',
	public_deps='torture POPT_CREDENTIALS',
	deps='LIBCLI_RAW'
	)


bld.SAMBA_MODULE('TORTURE_BASIC',
	source='basic/base.c basic/misc.c basic/scanner.c basic/utable.c basic/charset.c basic/mangle_test.c basic/denytest.c basic/aliases.c basic/locking.c basic/secleak.c basic/rename.c basic/dir.c basic/delete.c basic/unlink.c basic/disconnect.c basic/delaywrite.c basic/attr.c basic/properties.c',
	subsystem='smbtorture',
	deps='LIBCLI_SMB POPT_CREDENTIALS TORTURE_UTIL LIBCLI_RAW TORTURE_RAW',
	internal_module=True,
	autoproto='basic/proto.h',
	init_function='torture_base_init'
	)


bld.SAMBA_MODULE('TORTURE_RAW',
	source='raw/qfsinfo.c raw/qfileinfo.c raw/setfileinfo.c raw/search.c raw/close.c raw/open.c raw/mkdir.c raw/oplock.c raw/notify.c raw/mux.c raw/ioctl.c raw/chkpath.c raw/unlink.c raw/read.c raw/context.c raw/write.c raw/lock.c raw/pingpong.c raw/lockbench.c raw/lookuprate.c raw/tconrate.c raw/openbench.c raw/rename.c raw/eas.c raw/streams.c raw/acls.c raw/seek.c raw/samba3hide.c raw/samba3misc.c raw/composite.c raw/raw.c raw/offline.c',
	autoproto='raw/proto.h',
	subsystem='smbtorture',
	init_function='torture_raw_init',
	deps='LIBCLI_SMB LIBCLI_LSA LIBCLI_SMB_COMPOSITE POPT_CREDENTIALS TORTURE_UTIL',
	internal_module=True
	)

bld.RECURSE('smb2')
bld.RECURSE('winbind')
bld.RECURSE('libnetapi')
bld.RECURSE('libsmbclient')

bld.SAMBA_SUBSYSTEM('TORTURE_NDR',
	source='ndr/ndr.c ndr/winreg.c ndr/atsvc.c ndr/lsa.c ndr/epmap.c ndr/dfs.c ndr/netlogon.c ndr/drsuapi.c ndr/spoolss.c ndr/samr.c ndr/dfsblob.c ndr/drsblobs.c',
	autoproto='ndr/proto.h',
	deps='torture SERVICE_SMB'
	)


bld.SAMBA_MODULE('torture_rpc',
	source='rpc/join.c rpc/lsa.c rpc/lsa_lookup.c rpc/session_key.c rpc/echo.c rpc/dfs.c rpc/drsuapi.c rpc/drsuapi_cracknames.c rpc/dsgetinfo.c rpc/spoolss.c rpc/spoolss_notify.c rpc/spoolss_win.c rpc/spoolss_access.c rpc/unixinfo.c rpc/samr.c rpc/samr_accessmask.c rpc/wkssvc.c rpc/srvsvc.c rpc/svcctl.c rpc/atsvc.c rpc/eventlog.c rpc/epmapper.c rpc/winreg.c rpc/initshutdown.c rpc/oxidresolve.c rpc/remact.c rpc/mgmt.c rpc/scanner.c rpc/autoidl.c rpc/countcalls.c rpc/testjoin.c rpc/schannel.c rpc/netlogon.c rpc/remote_pac.c rpc/samlogon.c rpc/samsync.c rpc/multi_bind.c rpc/dssetup.c rpc/alter_context.c rpc/bench.c rpc/samba3rpc.c rpc/rpc.c rpc/async_bind.c rpc/handles.c rpc/frsapi.c rpc/object_uuid.c rpc/ntsvcs.c rpc/browser.c rpc/bind.c',
	autoproto='rpc/proto.h',
	subsystem='smbtorture',
	init_function='torture_rpc_init',
	deps='NDR_TABLE RPC_NDR_UNIXINFO dcerpc_samr RPC_NDR_WINREG RPC_NDR_INITSHUTDOWN RPC_NDR_OXIDRESOLVER RPC_NDR_EVENTLOG RPC_NDR_ECHO RPC_NDR_SVCCTL RPC_NDR_NETLOGON dcerpc_atsvc dcerpc_mgmt RPC_NDR_DRSUAPI RPC_NDR_LSA RPC_NDR_EPMAPPER RPC_NDR_DFS RPC_NDR_FRSAPI RPC_NDR_SPOOLSS RPC_NDR_SRVSVC RPC_NDR_WKSSVC RPC_NDR_ROT RPC_NDR_DSSETUP RPC_NDR_REMACT RPC_NDR_OXIDRESOLVER RPC_NDR_NTSVCS WB_HELPER LIBSAMBA-NET LIBCLI_AUTH POPT_CREDENTIALS TORTURE_LDAP TORTURE_UTIL TORTURE_RAP dcerpc_server service process_model ntvfs SERVICE_SMB RPC_NDR_BROWSER LIBCLI_DRSUAPI TORTURE_LDB_MODULE TORTURE_DFS',
	internal_module=True
	)

bld.RECURSE('drs')

bld.SAMBA_MODULE('TORTURE_RAP',
	source='rap/rap.c rap/rpc.c rap/printing.c rap/sam.c',
	autoproto='rap/proto.h',
	subsystem='smbtorture',
	init_function='torture_rap_init',
	deps='TORTURE_UTIL LIBCLI_SMB NDR_RAP',
	internal_module=True
	)

bld.SAMBA_MODULE('TORTURE_DFS',
	source='dfs/domaindfs.c dfs/common.c',
	autoproto='dfs/proto.h',
	subsystem='smbtorture',
	init_function='torture_dfs_init',
	deps='TORTURE_UTIL LIBCLI_SMB',
	internal_module=True
	)


bld.SAMBA_MODULE('TORTURE_AUTH',
	source='auth/ntlmssp.c auth/pac.c',
	autoproto='auth/proto.h',
	subsystem='smbtorture',
	deps='LIBCLI_SMB gensec auth KERBEROS POPT_CREDENTIALS SMBPASSWD torture',
	internal_module=True
	)

bld.RECURSE('local')

bld.SAMBA_MODULE('TORTURE_NBENCH',
	source='nbench/nbio.c nbench/nbench.c',
	autoproto='nbench/proto.h',
	subsystem='smbtorture',
	init_function='torture_nbench_init',
	deps='TORTURE_UTIL',
	internal_module=True
	)


bld.SAMBA_MODULE('TORTURE_UNIX',
	source='unix/unix.c unix/whoami.c unix/unix_info2.c',
	autoproto='unix/proto.h',
	subsystem='smbtorture',
	init_function='torture_unix_init',
	deps='TORTURE_UTIL',
	internal_module=True
	)


bld.SAMBA_MODULE('TORTURE_LDAP',
	source='ldap/common.c ldap/basic.c ldap/schema.c ldap/uptodatevector.c ldap/cldap.c ldap/cldapbench.c ldap/ldap_sort.c ldap/nested_search.c',
	subsystem='smbtorture',
	deps='LIBCLI_LDAP LIBCLI_CLDAP SAMDB POPT_CREDENTIALS torture LDBSAMBA',
	internal_module=True,
	autoproto='ldap/proto.h',
	init_function='torture_ldap_init'
	)


bld.SAMBA_MODULE('TORTURE_NBT',
	source='nbt/query.c nbt/register.c nbt/wins.c nbt/winsbench.c nbt/winsreplication.c nbt/dgram.c nbt/nbt.c',
	autoproto='nbt/proto.h',
	subsystem='smbtorture',
	init_function='torture_nbt_init',
	deps='LIBCLI_SMB LIBCLI_NBT LIBCLI_DGRAM LIBCLI_WREPL torture_rpc',
	internal_module=True
	)


bld.SAMBA_MODULE('TORTURE_NET',
	source='libnet/libnet.c libnet/utils.c libnet/userinfo.c libnet/userman.c libnet/groupinfo.c libnet/groupman.c libnet/domain.c libnet/libnet_lookup.c libnet/libnet_user.c libnet/libnet_group.c libnet/libnet_share.c libnet/libnet_rpc.c libnet/libnet_domain.c libnet/libnet_BecomeDC.c',
	autoproto='libnet/proto.h',
	subsystem='smbtorture',
	init_function='torture_net_init',
	deps='LIBSAMBA-NET POPT_CREDENTIALS torture_rpc PROVISION',
	internal_module=True
	)


bld.SAMBA_MODULE('TORTURE_NTP',
	source='ntp/ntp_signd.c',
	autoproto='ntp/proto.h',
	subsystem='smbtorture',
	init_function='torture_ntp_init',
	deps='POPT_CREDENTIALS torture_rpc',
	internal_module=True
	)

TORTURE_MODULES = 'TORTURE_BASIC TORTURE_RAW torture_rpc TORTURE_RAP TORTURE_AUTH TORTURE_NBENCH TORTURE_UNIX TORTURE_LDAP TORTURE_NBT TORTURE_NET TORTURE_NTP torture_registry'

bld.SAMBA_SUBSYSTEM('torturemain',
                    source='smbtorture.c torture.c shell.c',
                    subsystem_name='smbtorture',
                    deps='torture popt POPT_SAMBA POPT_CREDENTIALS dcerpc LIBCLI_SMB SMBREADLINE ' + TORTURE_MODULES,
                    needs_python=True
                    )

bld.SAMBA_BINARY('smbtorture',
                 source=[],
                 manpages='man/smbtorture.1',
                 public_headers='smbtorture.h',
                 deps='torturemain torture popt POPT_SAMBA POPT_CREDENTIALS dcerpc LIBCLI_SMB SMBREADLINE ' + TORTURE_MODULES,
                 needs_python=True
                 )

# this is used in the build farm to build a smbtorture.static binary for s3
bld.SAMBA_BINARY('smbtorture.static',
                 source=[],
                 deps='torturemain torture popt POPT_SAMBA POPT_CREDENTIALS dcerpc LIBCLI_SMB SMBREADLINE ' + TORTURE_MODULES,
                 enabled = bld.env.BUILD_FARM,
                 needs_python=True
                 )
bld.env.NONSHARED_BINARIES.append('smbtorture.static')



bld.SAMBA_BINARY('gentest',
	source='gentest.c',
	manpages='man/gentest.1',
	deps='LIBSAMBA-HOSTCONFIG LIBSAMBA-UTIL popt POPT_SAMBA POPT_CREDENTIALS LIBCLI_SMB LIBCLI_RAW'
	)


bld.SAMBA_BINARY('masktest',
	source='masktest.c',
	manpages='man/masktest.1',
	deps='LIBSAMBA-HOSTCONFIG LIBSAMBA-UTIL popt POPT_SAMBA POPT_CREDENTIALS LIBCLI_SMB'
	)


bld.SAMBA_BINARY('locktest',
	source='locktest.c',
	# COV_TARGET='test',
	#ldflags='--coverage',
	#cflags='--coverage',
	# GCOV='1',
	manpages='man/locktest.1',
	deps='popt POPT_SAMBA POPT_CREDENTIALS LIBSAMBA-UTIL LIBCLI_SMB LIBSAMBA-HOSTCONFIG',
	)