#########################################################################
# Makefile.in for Samba - rewritten for autoconf support
# Copyright Andrew Tridgell 1992-1998
# Copyright (C) 2001 by Martin Pool <mbp@samba.org>
# Copyright Andrew Barteltt 2002
###########################################################################
prefix = @prefix@
exec_prefix = @exec_prefix@
mandir = @mandir@
LIBS = @LIBS@
CC = @CC@
SHLD = @SHLD@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LDSHFLAGS = @LDSHFLAGS@ @LDFLAGS@ @CFLAGS@
AWK = @AWK@
DYNEXP = @DYNEXP@
PYTHON = @PYTHON@
TERMLDFLAGS = @TERMLDFLAGS@
TERMLIBS = @TERMLIBS@
PRINTLIBS = @PRINTLIBS@
AUTHLIBS = @AUTHLIBS@
LINK = $( CC) $( FLAGS) $( LDFLAGS)
INSTALLCMD = @INSTALL@
VPATH = @srcdir@
srcdir = @srcdir@
builddir = @builddir@
SHELL = /bin/sh
# XXX: Perhaps this should be @SHELL@ instead -- apparently autoconf
# will search for a POSIX-compliant shell, and that might not be
# /bin/sh on some platforms. I guess it's not a big problem -- mbp
# See the autoconf manual "Installation Directory Variables" for a
# discussion of thesubtle use of these variables.
BASEDIR = @prefix@
BINDIR = @bindir@
# sbindir is mapped to bindir when compiling SAMBA in 2.0.x compatibility mode.
SBINDIR = @sbindir@
LIBDIR = @libdir@
VARDIR = @localstatedir@
MANDIR = @mandir@
# The permissions to give the executables
INSTALLPERMS = 0755
# set these to where to find various files
# These can be overridden by command line switches (see smbd(8))
# or in smb.conf (see smb.conf(5))
LOGFILEBASE = @logfilebase@
CONFIGFILE = $( LIBDIR) /smb.conf
LMHOSTSFILE = $( LIBDIR) /lmhosts
# This is where smbpasswd et al go
PRIVATEDIR = @privatedir@
SMB_PASSWD_FILE = $( PRIVATEDIR) /smbpasswd
PRIVATE_DIR = $( PRIVATEDIR)
# This is where SWAT images and help files go
SWATDIR = @swatdir@
# the directory where lock files go
LOCKDIR = @lockdir@
# the directory where pid files go
PIDDIR = @piddir@
# man pages language(s)
man_langs = "@manlangs@"
LIBSMBCLIENT_MAJOR = 0
LIBSMBCLIENT_MINOR = 1
FLAGS1 = $( CFLAGS) @FLAGS1@ -Iinclude -I$( srcdir) /include -I$( srcdir) /ubiqx -I$( srcdir) /smbwrapper -I. $( CPPFLAGS) -I$( srcdir)
FLAGS2 =
FLAGS3 =
FLAGS4 =
FLAGS5 = $( FLAGS1) $( FLAGS2) $( FLAGS3) $( FLAGS4)
FLAGS = $( ISA) $( FLAGS5)
FLAGS32 = $( ISA32) $( FLAGS5)
PASSWD_FLAGS = -DSMB_PASSWD_FILE= \" $( SMB_PASSWD_FILE) \" -DPRIVATE_DIR= \" $( PRIVATE_DIR) \"
PATH_FLAGS1 = -DCONFIGFILE= \" $( CONFIGFILE) \" -DSBINDIR= \" $( SBINDIR) \"
PATH_FLAGS2 = $( PATH_FLAGS1) -DBINDIR= \" $( BINDIR) \" -DDRIVERFILE= \" $( DRIVERFILE) \"
PATH_FLAGS3 = $( PATH_FLAGS2) -DLMHOSTSFILE= \" $( LMHOSTSFILE) \"
PATH_FLAGS4 = $( PATH_FLAGS3) -DSWATDIR= \" $( SWATDIR) \" -DLOCKDIR= \" $( LOCKDIR) \" -DPIDDIR= \" $( PIDDIR) \"
PATH_FLAGS5 = $( PATH_FLAGS4) -DLIBDIR= \" $( LIBDIR) \" -DLOGFILEBASE= \" $( LOGFILEBASE) \"
PATH_FLAGS = $( PATH_FLAGS5) $( PASSWD_FLAGS)
WINBIND_PROGS = @WINBIND_TARGETS@
WINBIND_SPROGS = @WINBIND_STARGETS@
WINBIND_PAM_PROGS = @WINBIND_PAM_TARGETS@
WINBIND_LPROGS = @WINBIND_LTARGETS@
SPROGS = bin/smbd bin/nmbd bin/swat bin/wrepld @WINBIND_STARGETS@
PROGS1 = bin/smbclient bin/net bin/smbspool bin/testparm bin/testprns bin/smbstatus bin/smbcontrol bin/smbtree bin/tdbbackup @RUNPROG@ @WINBIND_TARGETS@
PROGS2 = bin/smbpasswd bin/rpcclient bin/smbcacls bin/profiles @WRAPPROG@ @WRAP@ @WRAP32@ @PAM_MOD@
MPROGS = @MPROGS@
LPROGS = $( WINBIND_PAM_PROGS) $( WINBIND_LPROGS)
PROGS = $( PROGS1) $( PROGS2) $( MPROGS) bin/nmblookup bin/pdbedit bin/smbgroupedit
TORTURE_PROGS = bin/smbtorture bin/msgtest bin/masktest bin/locktest \
bin/locktest2 bin/nsstest bin/vfstest
SHLIBS = @LIBSMBCLIENT@
SCRIPTS = $( srcdir) /script/smbtar $( srcdir) /script/addtosmbpass $( srcdir) /script/convert_smbpasswd \
$( builddir) /script/findsmb
QUOTAOBJS = @QUOTAOBJS@
MODULES = bin/vfs_audit.@SHLIBEXT@ bin/vfs_recycle.@SHLIBEXT@ bin/vfs_netatalk.@SHLIBEXT@ bin/developer.@SHLIBEXT@ @MODULE_PDB_MYSQL@ @MODULE_PDB_XML@
######################################################################
# object file lists
######################################################################
TDBBASE_OBJ = tdb/tdb.o tdb/spinlock.o
TDB_OBJ = $( TDBBASE_OBJ) tdb/tdbutil.o
LIB_OBJ = lib/charcnv.o lib/debug.o lib/fault.o \
lib/getsmbpass.o lib/interface.o lib/md4.o \
lib/interfaces.o lib/pidfile.o lib/replace.o \
lib/signal.o lib/system.o lib/sendfile.o lib/time.o \
lib/ufc.o lib/genrand.o lib/username.o \
lib/util_getent.o lib/util_pw.o lib/access.o lib/smbrun.o \
lib/bitmap.o lib/crc32.o lib/snprintf.o lib/dprintf.o \
lib/xfile.o lib/wins_srv.o \
lib/util_str.o lib/util_sid.o lib/util_uuid.o \
lib/util_unistr.o lib/util_file.o lib/data_blob.o \
lib/util.o lib/util_sock.o lib/util_sec.o \
lib/talloc.o lib/hash.o lib/substitute.o lib/fsusage.o \
lib/ms_fnmatch.o lib/select.o lib/messages.o \
lib/tallocmsg.o lib/dmallocmsg.o \
lib/md5.o lib/hmacmd5.o lib/iconv.o lib/smbpasswd.o \
nsswitch/wb_client.o nsswitch/wb_common.o \
lib/pam_errors.o intl/lang_tdb.o lib/account_pol.o \
lib/adt_tree.o lib/gencache.o $( TDB_OBJ) \
lib/module.o
LIB_SMBD_OBJ = lib/system_smbd.o lib/util_smbd.o
READLINE_OBJ = lib/readline.o
POPT_LIB_OBJ = lib/popt_common.o
UBIQX_OBJ = ubiqx/ubi_BinTree.o ubiqx/ubi_Cache.o ubiqx/ubi_SplayTree.o \
ubiqx/ubi_dLinkList.o ubiqx/ubi_sLinkList.o ubiqx/debugparse.o
PARAM_OBJ = param/loadparm.o param/params.o dynconfig.o
LIBADS_OBJ = libads/ldap.o libads/ldap_printer.o libads/sasl.o \
libads/krb5_setpw.o libads/kerberos.o libads/ldap_user.o \
libads/ads_struct.o libads/ads_status.o \
libads/disp_sec.o libads/ads_utils.o libads/ldap_utils.o \
libads/ads_ldap.o
LIBADS_SERVER_OBJ = libads/util.o libads/kerberos_verify.o
SECRETS_OBJ = passdb/secrets.o
LIBSMB_OBJ = libsmb/clientgen.o libsmb/cliconnect.o libsmb/clifile.o \
libsmb/clikrb5.o libsmb/clispnego.o libsmb/asn1.o \
libsmb/clirap.o libsmb/clierror.o libsmb/climessage.o \
libsmb/clireadwrite.o libsmb/clilist.o libsmb/cliprint.o \
libsmb/clitrans.o libsmb/clisecdesc.o libsmb/clidgram.o \
libsmb/namequery.o libsmb/nmblib.o libsmb/clistr.o \
libsmb/nterr.o libsmb/smbdes.o libsmb/smbencrypt.o \
libsmb/smberr.o libsmb/credentials.o libsmb/pwd_cache.o \
libsmb/clioplock.o libsmb/errormap.o libsmb/clirap2.o \
libsmb/passchange.o libsmb/unexpected.o libsmb/doserr.o \
libsmb/namecache.o $( RPC_PARSE_OBJ1)
LIBMSRPC_OBJ = rpc_client/cli_lsarpc.o rpc_client/cli_samr.o \
rpc_client/cli_netlogon.o rpc_client/cli_srvsvc.o \
rpc_client/cli_wkssvc.o rpc_client/cli_dfs.o \
rpc_client/cli_reg.o rpc_client/cli_pipe.o \
rpc_client/cli_spoolss.o rpc_client/cli_spoolss_notify.o \
rpc_client/cli_ds.o
LIBMSRPC_SERVER_OBJ = libsmb/trust_passwd.o
LIBMSRPC_PICOBJ = $( LIBMSRPC_OBJ:.o= .po)
REGOBJS_OBJ = registry/reg_objects.o
REGISTRY_OBJ = registry/reg_frontend.o registry/reg_cachehook.o registry/reg_printing.o \
registry/reg_db.o
RPC_SERVER_OBJ = rpc_server/srv_lsa.o rpc_server/srv_lsa_nt.o \
rpc_server/srv_lsa_hnd.o rpc_server/srv_netlog.o rpc_server/srv_netlog_nt.o \
rpc_server/srv_pipe_hnd.o rpc_server/srv_reg.o rpc_server/srv_reg_nt.o \
rpc_server/srv_samr.o rpc_server/srv_samr_nt.o rpc_server/srv_samr_util.o \
rpc_server/srv_srvsvc.o rpc_server/srv_srvsvc_nt.o \
rpc_server/srv_util.o rpc_server/srv_wkssvc.o rpc_server/srv_wkssvc_nt.o \
rpc_server/srv_pipe.o rpc_server/srv_dfs.o rpc_server/srv_dfs_nt.o \
rpc_server/srv_spoolss.o rpc_server/srv_spoolss_nt.o
# this includes only the low level parse code, not stuff
# that requires knowledge of security contexts
RPC_PARSE_OBJ1 = rpc_parse/parse_prs.o rpc_parse/parse_sec.o \
rpc_parse/parse_misc.o
RPC_PARSE_OBJ = rpc_parse/parse_lsa.o rpc_parse/parse_net.o \
rpc_parse/parse_reg.o rpc_parse/parse_rpc.o \
rpc_parse/parse_samr.o rpc_parse/parse_srv.o \
rpc_parse/parse_wks.o rpc_parse/parse_ds.o \
rpc_parse/parse_spoolss.o rpc_parse/parse_dfs.o \
$( REGOBJS_OBJ)
RPC_CLIENT_OBJ = rpc_client/cli_pipe.o
LOCKING_OBJ = locking/locking.o locking/brlock.o locking/posix.o
PASSDB_GET_SET_OBJ = passdb/pdb_get_set.o
PASSDB_OBJ = $( PASSDB_GET_SET_OBJ) passdb/passdb.o passdb/pdb_interface.o \
passdb/machine_sid.o passdb/pdb_smbpasswd.o \
passdb/pdb_tdb.o passdb/pdb_ldap.o passdb/pdb_plugin.o \
passdb/pdb_unix.o passdb/util_sam_sid.o \
passdb/pdb_compat.o passdb/pdb_nisplus.o
PDB_XML_OBJ = passdb/pdb_xml.o
PDB_MYSQL_OBJ = passdb/pdb_mysql.o
DEVEL_HELP_OBJ = modules/developer.o
SAM_STATIC_MODULES = sam/sam_plugin.o sam/sam_skel.o sam/sam_ads.o
SAM_OBJ = sam/account.o sam/get_set_account.o sam/get_set_group.o \
sam/get_set_domain.o sam/interface.o $( SAM_STATIC_MODULES)
SAMTEST_OBJ = torture/samtest.o torture/cmd_sam.o $( SAM_OBJ) $( LIB_OBJ) $( PARAM_OBJ) $( LIBSMB_OBJ) $( UBIQX_OBJ) $( READLINE_OBJ) lib/util_seaccess.o $( LIBADS_OBJ) $( PASSDB_OBJ) $( SECRETS_OBJ) $( GROUPDB_OBJ)
GROUPDB_OBJ = groupdb/mapping.o
# passdb/smbpass.o passdb/ldap.o passdb/nispass.o
PROFILE_OBJ = profile/profile.o
OPLOCK_OBJ = smbd/oplock.o smbd/oplock_irix.o smbd/oplock_linux.o
NOTIFY_OBJ = smbd/notify.o smbd/notify_hash.o smbd/notify_kernel.o
totally rewrote the async signal, notification and oplock notification
handling in Samba. This was needed due to several limitations and
races in the previous code - as a side effect the new code is much
cleaner :)
in summary:
- changed sys_select() to avoid a signal/select race condition. It is a
rare race but once we have signals doing notification and oplocks it
is important.
- changed our main processing loop to take advantage of the new
sys_select semantics
- split the notify code into implementaion dependent and general
parts. Added the following structure that defines an implementation:
struct cnotify_fns {
void * (*register_notify)(connection_struct *conn, char *path, uint32 flags);
BOOL (*check_notify)(connection_struct *conn, uint16 vuid, char *path, uint32 flags, void *data, time_t t);
void (*remove_notify)(void *data);
};
then I wrote two implementations, one using hash/poll (like our old
code) and the other using the new Linux kernel change notify. It
should be easy to add other change notify implementations by creating
a sructure of the above type.
- fixed a bug in change notify where we were returning the wrong error
code.
- rewrote the core change notify code to be much simpler
- moved to real-time signals for leases and change notify
Amazingly, it all seems to work. I was very surprised!
-
PLAINTEXT_AUTH_OBJ = auth/pampass.o auth/pass_check.o
UNIGRP_OBJ = libsmb/netlogon_unigrp.o
AUTH_OBJ = auth/auth.o auth/auth_sam.o auth/auth_server.o auth/auth_domain.o \
auth/auth_rhosts.o auth/auth_unix.o auth/auth_util.o auth/auth_winbind.o \
auth/auth_builtin.o auth/auth_compat.o \
$( PLAINTEXT_AUTH_OBJ) $( UNIGRP_OBJ)
MANGLE_OBJ = smbd/mangle.o smbd/mangle_hash.o smbd/mangle_map.o smbd/mangle_hash2.o
This is my 'Authentication Rewrite' version 1.01, mostly as submitted to
samba-technical a few weeks ago.
The idea here is to standardize the checking of user names and passwords,
thereby ensuring that all authtentications pass the same standards. The
interface currently implemented in as
nt_status = check_password(user_info, server_info)
where user_info contains (mostly) the authentication data, and server_info
contains things like the user-id they got, and their resolved user name.
The current ugliness with the way the structures are created will be killed
the next revision, when they will be created and malloced by creator functions.
This patch also includes the first implementation of NTLMv2 in HEAD, but which
needs some more testing. We also add a hack to allow plaintext passwords to be
compared with smbpasswd, not the system password database.
Finally, this patch probably reintroduces the PAM accounts bug we had in
2.2.0, I'll fix that once this hits the tree. (I've just finished testing
it on a wide variety of platforms, so I want to get this patch in).
-
SMBD_OBJ_MAIN = smbd/server.o
SMBD_OBJ_SRV = smbd/files.o smbd/chgpasswd.o smbd/connection.o \
smbd/utmp.o smbd/session.o \
smbd/dfree.o smbd/dir.o smbd/password.o smbd/conn.o smbd/fileio.o \
smbd/ipc.o smbd/lanman.o smbd/negprot.o \
smbd/message.o smbd/nttrans.o smbd/pipes.o \
smbd/reply.o smbd/sesssetup.o smbd/trans2.o smbd/uid.o \
smbd/dosmode.o smbd/filename.o smbd/open.o smbd/close.o \
smbd/blocking.o smbd/sec_ctx.o \
smbd/vfs.o smbd/vfs-wrap.o smbd/statcache.o \
smbd/posix_acls.o lib/sysacls.o lib/server_mutex.o \
smbd/process.o smbd/service.o smbd/error.o \
printing/printfsp.o lib/util_seaccess.o smbd/srvstr.o \
smbd/build_options.o \
smbd/change_trust_pw.o \
$( MANGLE_OBJ)
SMBD_OBJ_BASE = $( SMBD_OBJ_SRV) $( MSDFS_OBJ) $( PARAM_OBJ) $( LIBSMB_OBJ) $( UBIQX_OBJ) \
$( RPC_SERVER_OBJ) $( RPC_PARSE_OBJ) $( SECRETS_OBJ) \
$( LOCKING_OBJ) $( PASSDB_OBJ) $( PRINTING_OBJ) $( PROFILE_OBJ) \
$( LIB_OBJ) $( PRINTBACKEND_OBJ) $( QUOTAOBJS) $( OPLOCK_OBJ) \
$( NOTIFY_OBJ) $( GROUPDB_OBJ) $( AUTH_OBJ) \
$( LIBMSRPC_OBJ) $( LIBMSRPC_SERVER_OBJ) \
$( LIBADS_OBJ) $( LIBADS_SERVER_OBJ) \
$( LIB_SMBD_OBJ) $( REGISTRY_OBJ) $( POPT_LIB_OBJ)
PRINTING_OBJ = printing/pcap.o printing/print_svid.o \
printing/print_cups.o printing/print_generic.o \
printing/lpq_parse.o printing/load.o
PRINTBACKEND_OBJ = printing/printing.o printing/nt_printing.o printing/notify.o
MSDFS_OBJ = msdfs/msdfs.o
SMBD_OBJ = $( SMBD_OBJ_MAIN) $( SMBD_OBJ_BASE)
NMBD_OBJ1 = nmbd/asyncdns.o nmbd/nmbd.o nmbd/nmbd_become_dmb.o \
nmbd/nmbd_become_lmb.o nmbd/nmbd_browserdb.o \
nmbd/nmbd_browsesync.o nmbd/nmbd_elections.o \
nmbd/nmbd_incomingdgrams.o nmbd/nmbd_incomingrequests.o \
nmbd/nmbd_lmhosts.o nmbd/nmbd_logonnames.o nmbd/nmbd_mynames.o \
nmbd/nmbd_namelistdb.o nmbd/nmbd_namequery.o \
nmbd/nmbd_nameregister.o nmbd/nmbd_namerelease.o \
nmbd/nmbd_nodestatus.o nmbd/nmbd_packets.o \
nmbd/nmbd_processlogon.o nmbd/nmbd_responserecordsdb.o \
nmbd/nmbd_sendannounce.o nmbd/nmbd_serverlistdb.o \
nmbd/nmbd_subnetdb.o nmbd/nmbd_winsproxy.o nmbd/nmbd_winsserver.o \
nmbd/nmbd_workgroupdb.o nmbd/nmbd_synclists.o
NMBD_OBJ = $( NMBD_OBJ1) $( PARAM_OBJ) $( LIBSMB_OBJ) $( UBIQX_OBJ) \
$( PROFILE_OBJ) $( LIB_OBJ) $( SECRETS_OBJ) $( POPT_LIB_OBJ)
WREPL_OBJ1 = wrepld/server.o wrepld/process.o wrepld/parser.o wrepld/socket.o \
wrepld/partners.o
WREPL_OBJ = $( WREPL_OBJ1) $( PARAM_OBJ) $( UBIQX_OBJ) \
$( PROFILE_OBJ) $( LIB_OBJ)
SWAT_OBJ1 = web/cgi.o web/diagnose.o web/startstop.o web/statuspage.o \
web/swat.o web/neg_lang.o
SWAT_OBJ = $( SWAT_OBJ1) $( PRINTING_OBJ) $( LIBSMB_OBJ) $( LOCKING_OBJ) \
$( PARAM_OBJ) $( PASSDB_OBJ) $( SECRETS_OBJ) \
$( UBIQX_OBJ) $( LIB_OBJ) $( GROUPDB_OBJ) $( PLAINTEXT_AUTH_OBJ)
SMBSH_OBJ = smbwrapper/smbsh.o smbwrapper/shared.o \
$( PARAM_OBJ) $( UBIQX_OBJ) $( LIB_OBJ)
STATUS_OBJ = utils/status.o $( LOCKING_OBJ) $( PARAM_OBJ) \
$( UBIQX_OBJ) $( PROFILE_OBJ) $( LIB_OBJ) $( POPT_LIB_OBJ)
SMBCONTROL_OBJ = utils/smbcontrol.o $( LOCKING_OBJ) $( PARAM_OBJ) \
$( UBIQX_OBJ) $( PROFILE_OBJ) $( LIB_OBJ)
SMBTREE_OBJ = utils/smbtree.o $( LOCKING_OBJ) $( PARAM_OBJ) \
$( UBIQX_OBJ) $( PROFILE_OBJ) $( LIB_OBJ) $( LIBSMB_OBJ)
TESTPARM_OBJ = utils/testparm.o \
$( PARAM_OBJ) $( UBIQX_OBJ) $( LIB_OBJ) $( POPT_LIB_OBJ)
TESTPRNS_OBJ = utils/testprns.o $( PARAM_OBJ) $( PRINTING_OBJ) $( UBIQX_OBJ) \
$( LIB_OBJ)
SMBPASSWD_OBJ = utils/smbpasswd.o $( PARAM_OBJ) $( SECRETS_OBJ) \
$( LIBSMB_OBJ) $( PASSDB_OBJ) $( GROUPDB_OBJ) \
$( UBIQX_OBJ) $( LIB_OBJ)
PDBEDIT_OBJ = utils/pdbedit.o $( PARAM_OBJ) $( LIBSMB_OBJ) $( PASSDB_OBJ) \
$( UBIQX_OBJ) $( LIB_OBJ) $( GROUPDB_OBJ) $( SECRETS_OBJ) \
$( POPT_LIB_OBJ)
SMBGROUPEDIT_OBJ = utils/smbgroupedit.o $( GROUPDB_OBJ) $( PARAM_OBJ) \
$( LIBSMB_OBJ) $( PASSDB_OBJ) $( SECRETS_OBJ) $( UBIQX_OBJ) $( LIB_OBJ)
RPCCLIENT_OBJ1 = rpcclient/rpcclient.o rpcclient/cmd_lsarpc.o \
rpcclient/cmd_samr.o rpcclient/cmd_spoolss.o \
rpcclient/cmd_netlogon.o rpcclient/cmd_srvsvc.o \
rpcclient/cmd_dfs.o rpcclient/cmd_reg.o \
rpcclient/display_sec.o rpcclient/cmd_ds.o
RPCCLIENT_OBJ = $( RPCCLIENT_OBJ1) \
$( PARAM_OBJ) $( LIBSMB_OBJ) $( UBIQX_OBJ) $( LIB_OBJ) \
$( RPC_PARSE_OBJ) $( PASSDB_OBJ) $( LIBMSRPC_OBJ) \
$( READLINE_OBJ) $( GROUPDB_OBJ) \
$( LIBADS_OBJ) $( SECRETS_OBJ) $( POPT_LIB_OBJ)
PAM_WINBIND_OBJ = nsswitch/pam_winbind.po nsswitch/wb_common.po lib/snprintf.po
SMBW_OBJ1 = smbwrapper/smbw.o \
smbwrapper/smbw_dir.o smbwrapper/smbw_stat.o \
smbwrapper/realcalls.o smbwrapper/shared.o \
smbwrapper/smbw_cache.o
SMBW_OBJ = $( SMBW_OBJ1) $( LIBSMB_OBJ) $( PARAM_OBJ) \
$( UBIQX_OBJ) $( LIB_OBJ)
SMBWRAPPER_OBJ1 = smbwrapper/wrapped.o
SMBWRAPPER_OBJ = $( SMBW_OBJ) $( SMBWRAPPER_OBJ1)
LIBSMBCLIENT_OBJ = libsmb/libsmbclient.o libsmb/libsmb_compat.o \
libsmb/libsmb_cache.o $( LIB_OBJ) \
$( LIBSMB_OBJ) $( PARAM_OBJ) $( UBIQX_OBJ)
CLIENT_OBJ1 = client/client.o client/clitar.o
CLIENT_OBJ = $( CLIENT_OBJ1) $( PARAM_OBJ) $( LIBSMB_OBJ) $( UBIQX_OBJ) $( LIB_OBJ) \
$( READLINE_OBJ) $( POPT_LIB_OBJ)
NET_OBJ1 = utils/net.o utils/net_ads.o utils/net_ads_cldap.o utils/net_help.o \
utils/net_rap.o utils/net_rpc.o utils/net_rpc_samsync.o \
utils/net_rpc_join.o utils/net_time.o utils/net_lookup.o \
utils/net_cache.o
NET_OBJ = $( NET_OBJ1) $( SECRETS_OBJ) $( LIBSMB_OBJ) \
$( RPC_PARSE_OBJ) $( PASSDB_OBJ) $( GROUPDB_OBJ) \
$( PARAM_OBJ) $( UBIQX_OBJ) $( LIB_OBJ) \
$( LIBMSRPC_OBJ) $( LIBMSRPC_SERVER_OBJ) \
$( LIBADS_OBJ) $( LIBADS_SERVER_OBJ) $( POPT_LIB_OBJ)
CUPS_OBJ = client/smbspool.o $( PARAM_OBJ) $( LIBSMB_OBJ) $( UBIQX_OBJ) $( LIB_OBJ)
MOUNT_OBJ = client/smbmount.o \
$( PARAM_OBJ) $( LIBSMB_OBJ) $( UBIQX_OBJ) $( LIB_OBJ)
MNT_OBJ = client/smbmnt.o
UMOUNT_OBJ = client/smbumount.o \
$( PARAM_OBJ) $( UBIQX_OBJ) $( LIB_OBJ)
NMBLOOKUP_OBJ = utils/nmblookup.o $( PARAM_OBJ) $( UBIQX_OBJ) \
$( LIBSMB_OBJ) $( LIB_OBJ)
SMBTORTURE_OBJ1 = torture/torture.o torture/nbio.o torture/scanner.o torture/utable.o \
torture/denytest.o torture/mangle_test.o
SMBTORTURE_OBJ = $( SMBTORTURE_OBJ1) \
$( LIBSMB_OBJ) $( PARAM_OBJ) $( UBIQX_OBJ) $( LIB_OBJ)
MASKTEST_OBJ = torture/masktest.o $( LIBSMB_OBJ) $( PARAM_OBJ) \
$( UBIQX_OBJ) $( LIB_OBJ)
MSGTEST_OBJ = torture/msgtest.o $( LIBSMB_OBJ) $( PARAM_OBJ) \
$( UBIQX_OBJ) $( LIB_OBJ)
LOCKTEST_OBJ = torture/locktest.o $( LOCKING_OBJ) $( LIBSMB_OBJ) $( PARAM_OBJ) \
$( UBIQX_OBJ) $( LIB_OBJ)
NSSTEST_OBJ = torture/nsstest.o $( LIBSMB_OBJ) $( PARAM_OBJ) \
$( UBIQX_OBJ) $( LIB_OBJ)
VFSTEST_OBJ = torture/cmd_vfs.o torture/vfstest.o $( SMBD_OBJ_BASE) $( READLINE_OBJ)
VFS_AUDIT_OBJ = modules/vfs_audit.o
VFS_RECYCLE_OBJ = modules/vfs_recycle.o
VFS_NETATALK_OBJ = modules/vfs_netatalk.o
LOCKTEST2_OBJ = torture/locktest2.o $( LOCKING_OBJ) $( LIBSMB_OBJ) $( PARAM_OBJ) \
$( UBIQX_OBJ) $( LIB_OBJ)
SMBCACLS_OBJ = utils/smbcacls.o $( LOCKING_OBJ) $( LIBSMB_OBJ) $( PARAM_OBJ) \
$( UBIQX_OBJ) $( LIB_OBJ) $( RPC_PARSE_OBJ) $( PASSDB_GET_SET_OBJ) \
$( LIBMSRPC_OBJ)
TALLOCTORT_OBJ = lib/talloctort.o $( LIB_OBJ) $( PARAM_OBJ) $( UBIQX_OBJ)
RPCTORTURE_OBJ = torture/rpctorture.o \
rpcclient/display.o \
rpcclient/cmd_lsarpc.o \
rpcclient/cmd_wkssvc.o \
rpcclient/cmd_samr.o \
rpcclient/cmd_srvsvc.o \
rpcclient/cmd_netlogon.o \
$( PARAM_OBJ) $( LIBSMB_OBJ) $( UBIQX_OBJ) $( LIB_OBJ) \
$( RPC_CLIENT_OBJ) $( RPC_PARSE_OBJ) $( PASSDB_GET_SET_OBJ)
DEBUG2HTML_OBJ = utils/debug2html.o ubiqx/debugparse.o
SMBFILTER_OBJ = utils/smbfilter.o $( LIBSMB_OBJ) $( PARAM_OBJ) \
$( UBIQX_OBJ) $( LIB_OBJ)
PROTO_OBJ = $( SMBD_OBJ_MAIN) \
$( SMBD_OBJ_SRV) $( NMBD_OBJ1) $( SWAT_OBJ1) $( LIB_OBJ) $( LIBSMB_OBJ) \
$( SMBW_OBJ1) $( SMBWRAPPER_OBJ1) $( SMBTORTURE_OBJ1) $( RPCCLIENT_OBJ1) \
$( LIBMSRPC_OBJ) $( LIBMSRPC_SERVER_OBJ) $( RPC_CLIENT_OBJ) \
$( RPC_SERVER_OBJ) $( RPC_PARSE_OBJ) \
$( AUTH_OBJ) $( PARAM_OBJ) $( LOCKING_OBJ) $( SECRETS_OBJ) \
$( PRINTING_OBJ) $( PRINTBACKEND_OBJ) $( OPLOCK_OBJ) $( NOTIFY_OBJ) \
$( QUOTAOBJS) $( PASSDB_OBJ) $( GROUPDB_OBJ) $( MSDFS_OBJ) \
$( READLINE_OBJ) $( PROFILE_OBJ) $( LIBADS_OBJ) $( LIBADS_SERVER_OBJ) \
$( LIB_SMBD_OBJ) $( SAM_OBJ) $( REGISTRY_OBJ) $( POPT_LIB_OBJ)
NSS_OBJ_0 = nsswitch/wins.o $( PARAM_OBJ) $( UBIQX_OBJ) $( LIBSMB_OBJ) \
$( LIB_OBJ) $( NSSWINS_OBJ)
NSS_OBJ = $( NSS_OBJ_0:.o= .po)
PICOBJS = $( SMBWRAPPER_OBJ:.o= .po)
PICOBJS32 = $( SMBWRAPPER_OBJ:.o= .po32)
LIBSMBCLIENT_PICOBJS = $( LIBSMBCLIENT_OBJ:.o= .po)
PAM_SMBPASS_OBJ_0 = pam_smbpass/pam_smb_auth.o pam_smbpass/pam_smb_passwd.o \
pam_smbpass/pam_smb_acct.o pam_smbpass/support.o \
libsmb/smbencrypt.o libsmb/smbdes.o libsmb/nterr.o \
$( PARAM_OBJ) $( LIB_OBJ) $( PASSDB_OBJ) $( GROUPDB_OBJ) \
$( SECRETS_OBJ) $( UBIQX_OBJ)
PAM_SMBPASS_PICOOBJ = $( PAM_SMBPASS_OBJ_0:.o= .po)
WINBINDD_OBJ1 = \
nsswitch/winbindd.o \
nsswitch/winbindd_user.o \
nsswitch/winbindd_group.o \
nsswitch/winbindd_idmap.o \
nsswitch/winbindd_util.o \
nsswitch/winbindd_cache.o \
nsswitch/winbindd_pam.o \
nsswitch/winbindd_sid.o \
nsswitch/winbindd_misc.o \
nsswitch/winbindd_cm.o \
nsswitch/winbindd_wins.o \
nsswitch/winbindd_rpc.o \
nsswitch/winbindd_ads.o \
nsswitch/winbindd_dual.o
WINBINDD_OBJ = \
$( WINBINDD_OBJ1) $( PASSDB_GET_SET_OBJ) \
$( LIBNMB_OBJ) $( PARAM_OBJ) $( UBIQX_OBJ) $( LIB_OBJ) \
$( LIBSMB_OBJ) $( LIBMSRPC_OBJ) $( RPC_PARSE_OBJ) \
$( PROFILE_OBJ) $( UNIGRP_OBJ) \
$( SECRETS_OBJ) $( LIBADS_OBJ)
WBINFO_OBJ = nsswitch/wbinfo.o libsmb/smbencrypt.o libsmb/smbdes.o
WINBIND_NSS_OBJ = nsswitch/winbind_nss.o nsswitch/wb_common.o @WINBIND_NSS_EXTRA_OBJS@
WINBIND_NSS_PICOBJS = $( WINBIND_NSS_OBJ:.o= .po)
POPT_OBJS = popt/findme.o popt/popt.o popt/poptconfig.o \
popt/popthelp.o popt/poptparse.o
TDBBACKUP_OBJ = tdb/tdbbackup.o $( TDBBASE_OBJ)
######################################################################
# now the rules...
######################################################################
all : SHOWFLAGS proto_exists $( SPROGS ) $( PROGS ) $( WINBIND_PROGS ) $( WINBIND_SPROGS ) $( LPROGS ) $( SHLIBS )
pam_smbpass : SHOWFLAGS bin /pam_smbpass .@SHLIBEXT @
smbwrapper : SHOWFLAGS @WRAPPROG @ @WRAP @ @WRAP 32@
torture : SHOWFLAGS $( TORTURE_PROGS )
smbtorture : SHOWFLAGS bin /smbtorture
masktest : SHOWFLAGS bin /masktest
msgtest : SHOWFLAGS bin /msgtest
locktest : SHOWFLAGS bin /locktest
smbcacls : SHOWFLAGS bin /smbcacls
locktest2 : SHOWFLAGS bin /locktest 2
rpctorture : SHOWFLAGS bin /rpctorture
debug2html : SHOWFLAGS bin /debug 2html
smbfilter : SHOWFLAGS bin /smbfilter
talloctort : SHOWFLAGS bin /talloctort
nsswitch : SHOWFLAGS $( WINBIND_PROGS ) $( WINBIND_SPROGS ) $( LPROGS )
wins : SHOWFLAGS nsswitch /libnss_wins .@SHLIBEXT @
modules : SHOWFLAGS $( MODULES )
everything : all libsmbclient debug 2html smbfilter talloctort
.SUFFIXES :
.SUFFIXES : .c .o .po .po 32 .lo
SHOWFLAGS :
@echo " Using FLAGS = $( FLAGS) "
@echo " FLAGS32 = $( FLAGS32) "
@echo " LIBS = $( LIBS) "
@echo " LDSHFLAGS = $( LDSHFLAGS) "
@echo " LDFLAGS = $( LDFLAGS) "
MAKEDIR = || exec false; \
if test -d " $$ dir " ; then :; else \
echo mkdir " $$ dir " ; \
mkdir -p " $$ dir " >/dev/null 2>& 1 || \
test -d " $$ dir " || \
mkdir " $$ dir " || \
exec false; fi || exec false
.c.o :
@if ( : >> $@ || : > $@ ) >/dev/null 2>& 1; then rm -f $@ ; else \
dir = ` echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,' ` $( MAKEDIR) ; fi
@echo Compiling $* .c
@$( CC) -I. -I$( srcdir) $( FLAGS) -c $< \
-o $@
@ B R O K E N _ C C @ - m v ` e c h o $@ | s e d 's%^.*/%%g' ` $@
# These dependencies are only approximately correct: we want to make
# sure Samba's paths are updated if ./configure is re-run. Really it
# would be nice if "make prefix=/opt/samba all" also rebuilt things,
# but since we also require "make install prefix=/opt/samba" *not* to
# rebuild it's a bit hard.
dynconfig.o : dynconfig .c Makefile
@echo Compiling $* .c
@$( CC) $( FLAGS) $( PATH_FLAGS) -c $< -o $@
dynconfig.po : dynconfig .c Makefile
@if ( : >> $@ || : > $@ ) >/dev/null 2>& 1; then rm -f $@ ; else \
dir = ` echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,' ` $( MAKEDIR) ; fi
@echo Compiling $* .c with @PICFLAG@
@$( CC) -I. -I$( srcdir) $( FLAGS) $( PATH_FLAGS) @PICFLAG@ -c $< -o $* .@PICSUFFIX@
@ B R O K E N _ C C @ - m v ` e c h o $@ | s e d - e 's%^.*/%%g' - e 's%\.po$$%.o%' ` $@
@ P O B A D _ C C @ @ m v $* . p o . o $@
.c.po :
@if ( : >> $@ || : > $@ ) >/dev/null 2>& 1; then rm -f $@ ; else \
dir = ` echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,' ` $( MAKEDIR) ; fi
@echo Compiling $* .c with @PICFLAG@
@$( CC) -I. -I$( srcdir) $( FLAGS) @PICFLAG@ -c $< -o $* .@PICSUFFIX@
@ B R O K E N _ C C @ - m v ` e c h o $@ | s e d - e 's%^.*/%%g' - e 's%\.po$$%.o%' ` $@
@ P O B A D _ C C @ @ m v $* . p o . o $@
# this is for IRIX
.c.po32 :
@if ( : >> $@ || : > $@ ) >/dev/null 2>& 1; then rm -f $@ ; else \
dir = ` echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,' ` $( MAKEDIR) ; fi
@echo Compiling $* .c with @PICFLAG@ and -32
@$( CC) -32 -I. -I$( srcdir) $( FLAGS32) $( PATH_FLAGS) @PICFLAG@ -c $< \
-o $* .po32.o
@ B R O K E N _ C C @ - m v ` e c h o $@ | s e d - e 's%^.*/%%g' - e 's%\.po32$$%.o%' ` $@ . o
@mv $* .po32.o $@
bin/.dummy :
@if ( : >> $@ || : > $@ ) >/dev/null 2>& 1; then :; else \
dir = bin $( MAKEDIR) ; fi
@: >> $@ || : > $@ # what a fancy emoticon!
bin/smbd : $( SMBD_OBJ ) @BUILD_POPT @ bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( SMBD_OBJ) $( LDFLAGS) $( DYNEXP) $( PRINTLIBS) \
$( AUTHLIBS) $( LIBS) @BUILD_POPT@
bin/nmbd : $( NMBD_OBJ ) @BUILD_POPT @ bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( NMBD_OBJ) $( LDFLAGS) $( LIBS) @BUILD_POPT@
bin/wrepld : $( WREPL_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( WREPL_OBJ) $( LDFLAGS) $( LIBS)
bin/swat : $( SWAT_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( SWAT_OBJ) $( LDFLAGS) $( DYNEXP) $( PRINTLIBS) \
$( AUTHLIBS) $( LIBS)
bin/rpcclient : $( RPCCLIENT_OBJ ) @BUILD_POPT @ bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( RPCCLIENT_OBJ) $( LDFLAGS) $( DYNEXP) $( TERMLDFLAGS) $( TERMLIBS) $( LIBS) @BUILD_POPT@
bin/smbclient : $( CLIENT_OBJ ) @BUILD_POPT @ bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( CLIENT_OBJ) $( LDFLAGS) $( TERMLDFLAGS) $( TERMLIBS) $( LIBS) @BUILD_POPT@
bin/net : $( NET_OBJ ) @BUILD_POPT @ bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( NET_OBJ) $( DYNEXP) $( LDFLAGS) $( LIBS) @BUILD_POPT@
bin/profiles : utils /profiles .o bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ utils/profiles.o $( LDFLAGS) $( LIBS)
bin/smbspool : $( CUPS_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( CUPS_OBJ) $( LDFLAGS) $( LIBS)
bin/smbmount : $( MOUNT_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( MOUNT_OBJ) $( LDFLAGS) $( LIBS)
bin/smbmnt : $( MNT_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( MNT_OBJ) $( LDFLAGS) $( LIBS)
bin/smbumount : $( UMOUNT_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( UMOUNT_OBJ) $( LDFLAGS) $( LIBS)
bin/testparm : $( TESTPARM_OBJ ) @BUILD_POPT @ bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( TESTPARM_OBJ) $( LDFLAGS) $( LIBS) @BUILD_POPT@
bin/testprns : $( TESTPRNS_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( TESTPRNS_OBJ) $( LDFLAGS) $( PRINTLIBS) $( LIBS)
bin/smbstatus : $( STATUS_OBJ ) @BUILD_POPT @ bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( STATUS_OBJ) $( LDFLAGS) $( LIBS) @BUILD_POPT@
bin/smbcontrol : $( SMBCONTROL_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( SMBCONTROL_OBJ) $( LDFLAGS) $( LIBS)
bin/smbtree : $( SMBTREE_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( SMBTREE_OBJ) $( LDFLAGS) $( LIBS)
bin/smbpasswd : $( SMBPASSWD_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( SMBPASSWD_OBJ) $( LDFLAGS) $( DYNEXP) $( LIBS)
bin/pdbedit : $( PDBEDIT_OBJ ) @BUILD_POPT @ bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( PDBEDIT_OBJ) $( LDFLAGS) $( DYNEXP) $( LIBS) @BUILD_POPT@
bin/samtest : $( SAMTEST_OBJ ) @BUILD_POPT @ bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( SAMTEST_OBJ) $( LDFLAGS) $( DYNEXP) $( TERMLDFLAGS) $( TERMLIBS) $( DYNEXP) $( LIBS) @BUILD_POPT@
bin/smbgroupedit : $( SMBGROUPEDIT_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( SMBGROUPEDIT_OBJ) $( LDFLAGS) $( LIBS)
bin/nmblookup : $( NMBLOOKUP_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( NMBLOOKUP_OBJ) $( LDFLAGS) $( LIBS)
bin/smbtorture : $( SMBTORTURE_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( SMBTORTURE_OBJ) $( LDFLAGS) $( LIBS)
bin/talloctort : $( TALLOCTORT_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( TALLOCTORT_OBJ) $( LDFLAGS) $( LIBS)
bin/masktest : $( MASKTEST_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( MASKTEST_OBJ) $( LDFLAGS) $( LIBS)
bin/msgtest : $( MSGTEST_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( MSGTEST_OBJ) $( LDFLAGS) $( LIBS)
bin/smbcacls : $( SMBCACLS_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( SMBCACLS_OBJ) $( DYNEXP) $( LDFLAGS) $( LIBS)
bin/locktest : $( LOCKTEST_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( LOCKTEST_OBJ) $( LDFLAGS) $( LIBS)
bin/nsstest : $( NSSTEST_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( NSSTEST_OBJ) $( LDFLAGS) $( LIBS)
bin/vfstest : $( VFSTEST_OBJ ) @BUILD_POPT @ bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( VFSTEST_OBJ) $( LDFLAGS) $( TERMLDFLAGS) $( TERMLIBS) $( DYNEXP) $( PRINTLIBS) $( AUTHLIBS) $( LIBS) @BUILD_POPT@
bin/locktest2 : $( LOCKTEST 2_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( LOCKTEST2_OBJ) $( LDFLAGS) $( LIBS)
bin/rpctorture : $( RPCTORTURE_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( RPCTORTURE_OBJ) $( DYNEXP) $( LDFLAGS) $( LIBS)
bin/debug2html : $( DEBUG 2HTML_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( DEBUG2HTML_OBJ) $( LDFLAGS) $( LIBS)
bin/smbfilter : $( SMBFILTER_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( SMBFILTER_OBJ) $( LDFLAGS) $( LIBS)
bin/smbw_sample : $( SMBW_OBJ ) utils /smbw_sample .o bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( SMBW_OBJ) utils/smbw_sample.o $( LDFLAGS) $( LIBS)
bin/smbsh : $( SMBSH_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( SMBSH_OBJ) $( LDFLAGS) $( LIBS)
bin/smbwrapper.@SHLIBEXT@ : $( PICOBJS ) bin /.dummy
@echo Linking shared library $@
@$( SHLD) $( LDSHFLAGS) -o $@ $( PICOBJS) $( LIBS) \
@SONAMEFLAG@` basename $@ `
bin/smbwrapper.32.@SHLIBEXT@ : $( PICOBJS 32)
@echo Linking shared library $@
@$( SHLD) -32 $( LDSHFLAGS) -o $@ $( PICOBJS32) $( LIBS) \
@SONAMEFLAG@` basename $@ `
bin/libsmbclient.@SHLIBEXT@ : $( LIBSMBCLIENT_PICOBJS )
@echo Linking libsmbclient shared library $@
$( SHLD) $( LDSHFLAGS) -o $@ $( LIBSMBCLIENT_PICOBJS) $( LIBS) \
@SONAMEFLAG@` basename $@ ` .$( LIBSMBCLIENT_MAJOR)
bin/libsmbclient.a : $( LIBSMBCLIENT_PICOBJS )
@echo Linking libsmbclient non-shared library $@
-$( AR) -rc $@ $( LIBSMBCLIENT_PICOBJS)
libsmbclient : bin /libsmbclient .a bin /libsmbclient .@SHLIBEXT @
nsswitch/libnss_wins.@SHLIBEXT@ : $( NSS_OBJ )
@echo " Linking $@ "
@$( SHLD) $( LDSHFLAGS) -o $@ $( NSS_OBJ) -lc \
@SONAMEFLAG@` basename $@ `
bin/winbindd : $( WINBINDD_OBJ ) bin /.dummy
@echo Linking $@
@$( LINK) -o $@ $( WINBINDD_OBJ) $( DYNEXP) $( LIBS)
nsswitch/libns_winbind.@SHLIBEXT@ : $( WINBIND_NSS_PICOBJS )
@echo " Linking $@ "
@$( SHLD) @LDSHFLAGS@ -o $@ $( WINBIND_NSS_PICOBJS) @WINBIND_NSS_EXTRA_LIBS@ \
@SONAMEFLAG@` basename $@ `
nsswitch/libnss_winbind.@SHLIBEXT@ : $( WINBIND_NSS_PICOBJS )
@echo " Linking $@ "
@$( SHLD) $( LDSHFLAGS) -o $@ $( WINBIND_NSS_PICOBJS) @WINBIND_NSS_EXTRA_LIBS@ \
@SONAMEFLAG@` basename $@ `
nsswitch/pam_winbind.@SHLIBEXT@ : $( PAM_WINBIND_OBJ ) bin /.dummy
@echo Linking $@
@$( SHLD) $( LDSHFLAGS) -o $@ $( PAM_WINBIND_OBJ) \
@SONAMEFLAG@` basename $@ ` -lpam
bin/pdb_mysql.@SHLIBEXT@ : $( PDB_MYSQL_OBJ )
@echo " Building plugin $@ "
@$( SHLD) $( LDSHFLAGS) -o $@ $( PDB_MYSQL_OBJ) @MYSQL_LIBS@ \
@SONAMEFLAG@` basename $@ `
bin/developer.@SHLIBEXT@ : $( DEVEL_HELP_OBJ )
@echo " Building plugin $@ "
@$( SHLD) $( LDSHFLAGS) -o $@ $( DEVEL_HELP_OBJ) \
@SONAMEFLAG@` basename $@ `
bin/pdb_xml.@SHLIBEXT@ : $( PDB_XML_OBJ )
@echo " Building plugin $@ "
@$( SHLD) $( LDSHFLAGS) -o $@ $( PDB_XML_OBJ) @XML_LIBS@ \
@SONAMEFLAG@` basename $@ `
bin/vfs_audit.@SHLIBEXT@ : $( VFS_AUDIT_OBJ )
@echo " Building plugin $@ "
@$( SHLD) $( LDSHFLAGS) -o $@ $( VFS_AUDIT_OBJ) \
@SONAMEFLAG@` basename $@ `
bin/vfs_recycle.@SHLIBEXT@ : $( VFS_RECYCLE_OBJ )
@echo " Building plugin $@ "
@$( SHLD) $( LDSHFLAGS) -o $@ $( VFS_RECYCLE_OBJ) \
@SONAMEFLAG@` basename $@ `
bin/vfs_netatalk.@SHLIBEXT@ : $( VFS_NETATALK_OBJ )
@echo " Building plugin $@ "
@$( SHLD) $( LDSHFLAGS) -o $@ $( VFS_NETATALK_OBJ) \
@SONAMEFLAG@` basename $@ `
bin/wbinfo : $( WBINFO_OBJ ) $( PARAM_OBJ ) $( LIB_OBJ ) \
$( UBIQX_OBJ) $( SECRETS_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$( LINK) -o $@ $( WBINFO_OBJ) $( PARAM_OBJ) $( LIB_OBJ) \
$( UBIQX_OBJ) $( SECRETS_OBJ) $( LIBS) @BUILD_POPT@
bin/pam_smbpass.@SHLIBEXT@ : $( PAM_SMBPASS_PICOOBJ )
@echo " Linking shared library $@ "
$( SHLD) $( LDSHFLAGS) -o $@ $( PAM_SMBPASS_PICOOBJ) -lpam $( DYNEXP) $( LIBS) -lc
bin/libmsrpc.a : $( LIBMSRPC_PICOBJ )
-$( AR) -rc $@ $( LIBMSRPC_PICOBJ)
bin/tdbbackup : $( TDBBACKUP_OBJ ) bin /.dummy
@echo Linking $@
@$( CC) $( FLAGS) -o $@ $( TDBBACKUP_OBJ)
install : installbin installman installscripts installdat installswat
installdirs :
@$( SHELL) $( srcdir) /script/installdirs.sh $( DESTDIR) $( BASEDIR) $( DESTDIR) $( BINDIR) $( DESTDIR) $( SBINDIR) $( DESTDIR) $( LIBDIR) $( DESTDIR) $( VARDIR) $( DESTDIR) $( PRIVATEDIR)
installservers : all installdirs
@$( SHELL) $( srcdir) /script/installbin.sh $( INSTALLPERMS) $( DESTDIR) $( BASEDIR) $( DESTDIR) $( SBINDIR) $( DESTDIR) $( LIBDIR) $( DESTDIR) $( VARDIR) $( SPROGS)
installbin : all installdirs
@$( SHELL) $( srcdir) /script/installbin.sh $( INSTALLPERMS) $( DESTDIR) $( BASEDIR) $( DESTDIR) $( SBINDIR) $( DESTDIR) $( LIBDIR) $( DESTDIR) $( VARDIR) $( SPROGS)
@$( SHELL) $( srcdir) /script/installbin.sh $( INSTALLPERMS) $( DESTDIR) $( BASEDIR) $( DESTDIR) $( BINDIR) $( DESTDIR) $( LIBDIR) $( DESTDIR) $( VARDIR) $( PROGS)
installmodules : all installdirs
@$( SHELL) $( srcdir) /script/installmodules.sh $( INSTALLPERMS) $( DESTDIR) $( BASEDIR) $( DESTDIR) $( LIBDIR) $( MODULES)
installscripts : installdirs
@$( SHELL) $( srcdir) /script/installscripts.sh $( INSTALLPERMS) $( DESTDIR) $( BINDIR) $( SCRIPTS)
installdat : installdirs
@$( SHELL) $( srcdir) /script/installdat.sh $( DESTDIR) $( LIBDIR) $( srcdir)
installswat : installdirs
@$( SHELL) $( srcdir) /script/installswat.sh $( DESTDIR) $( SWATDIR) $( srcdir)
installclientlib :
-$( INSTALLCMD) bin/libsmbclient.@SHLIBEXT@ $( DESTDIR) ${ prefix } /lib
-$( INSTALLCMD) -d $( DESTDIR) ${ prefix } /include
-$( INSTALLCMD) include/libsmbclient.h $( DESTDIR) ${ prefix } /include
# Python extensions
PYTHON_OBJS = $( LIB_OBJ) $( LIBSMB_OBJ) $( RPC_PARSE_OBJ) $( UBIQX_OBJ) \
$( PARAM_OBJ) $( LIBMSRPC_OBJ) $( PASSDB_OBJ) $( GROUPDB_OBJ) $( SECRETS_OBJ)
PY_SPOOLSS_PROTO_OBJ = python/py_spoolss.o \
python/py_spoolss_printers.o python/py_spoolss_printers_conv.o\
python/py_spoolss_forms.o python/py_spoolss_forms_conv.o \
python/py_spoolss_ports.o python/py_spoolss_ports_conv.o \
python/py_spoolss_drivers.o python/py_spoolss_drivers_conv.o \
python/py_spoolss_jobs.o python/py_spoolss_jobs_conv.o \
python/py_spoolss_printerdata.o
PY_LSA_PROTO_OBJ = python/py_lsa.o
PY_COMMON_PROTO_OBJ = python/py_common.c python/py_ntsec.c
python_proto : python_spoolss_proto python_lsa_proto python_common_proto
python_spoolss_proto :
@cd $( srcdir) && $( SHELL) script/mkproto.sh $( AWK) \
-h _PY_SPOOLSS_PROTO_H python/py_spoolss_proto.h \
$( PY_SPOOLSS_PROTO_OBJ)
python_lsa_proto :
@cd $( srcdir) && $( SHELL) script/mkproto.sh $( AWK) \
-h _PY_LSA_PROTO_H python/py_lsa_proto.h \
$( PY_LSA_PROTO_OBJ)
python_common_proto :
@cd $( srcdir) && $( SHELL) script/mkproto.sh $( AWK) \
-h _PY_COMMON_PROTO_H python/py_common_proto.h \
$( PY_COMMON_PROTO_OBJ)
python_ext : $( PYTHON_OBJS )
@if test -z " $( PYTHON) " ; then \
echo Use the option --with-python to configure python; \
exit 1; fi
PYTHON_OBJS = " $( PYTHON_OBJS) " PYTHON_CFLAGS = " $( CFLAGS) $( CPPFLAGS) $( FLAGS) " \
LIBS = " $( LIBS) " \
$( PYTHON) python/setup.py build
python_install : $( PYTHON_OBJS )
@if test -z " $( PYTHON) " ; then \
echo Use the option --with-python to configure python; \
exit 1; fi
PYTHON_OBJS = " $( PYTHON_OBJS) " PYTHON_CFLAGS = " $( CFLAGS) $( CPPFLAGS) " \
LIBS = " $( LIBS) " \
$( PYTHON) python/setup.py install
python_clean :
@if test -n " $( PYTHON) " ; then $( PYTHON) python/setup.py clean; fi
# revert to the previously installed version
revert :
@$( SHELL) $( srcdir) /script/revert.sh $( SBINDIR) $( SPROGS)
@$( SHELL) $( srcdir) /script/revert.sh $( BINDIR) $( PROGS) $( SCRIPTS)
installman :
@$( SHELL) $( srcdir) /script/installman.sh $( DESTDIR) $( MANDIR) $( srcdir) $( man_langs) "@ROFF@"
.PHONY : showlayout
showlayout :
@echo "Samba will be installed into:"
@echo " basedir: $( BASEDIR) "
@echo " bindir: $( BINDIR) "
@echo " sbindir: $( SBINDIR) "
@echo " libdir: $( LIBDIR) "
@echo " vardir: $( VARDIR) "
@echo " mandir: $( MANDIR) "
uninstall : uninstallman uninstallbin uninstallscripts
uninstallman :
@$( SHELL) $( srcdir) /script/uninstallman.sh $( DESTDIR) $( MANDIR) $( srcdir) $( man_langs)
uninstallbin :
@$( SHELL) $( srcdir) /script/uninstallbin.sh $( INSTALLPERMS) $( DESTDIR) $( BASEDIR) $( DESTDIR) $( SBINDIR) $( DESTDIR) $( LIBDIR) $( DESTDIR) $( VARDIR) $( DESTDIR) $( SPROGS)
@$( SHELL) $( srcdir) /script/uninstallbin.sh $( INSTALLPERMS) $( DESTDIR) $( BASEDIR) $( DESTDIR) $( BINDIR) $( DESTDIR) $( LIBDIR) $( DESTDIR) $( VARDIR) $( DESTDIR) $( PROGS)
uninstallmodules :
@$( SHELL) $( srcdir) /script/uninstallmodules.sh $( INSTALLPERMS) $( DESTDIR) $( BASEDIR) $( DESTDIR) $( LIBDIR) $( DESTDIR) $( MODULES)
uninstallscripts :
@$( SHELL) $( srcdir) /script/uninstallscripts.sh $( INSTALLPERMS) $( DESTDIR) $( BINDIR) $( SCRIPTS)
# Toplevel clean files
TOPFILES = dynconfig.o dynconfig.po
clean : delheaders python_clean
-rm -f core */*~ *~ */*.o */*.po */*.po32 */*.@SHLIBEXT@ \
$( TOPFILES) $( PROGS) $( SPROGS) $( MODULES) .headers.stamp
# Making this target will just make sure that the prototype files
# exist, not necessarily that they are up to date. Since they're
# removed by "make clean" this will always be run when you do anything
# afterwards.
proto_exists : include /proto .h include /wrepld_proto .h include /build_env .h \
nsswitch/winbindd_proto.h web/swat_proto.h \
client/client_proto.h utils/net_proto.h
delheaders :
@echo Removing prototype headers
@/bin/rm -f $( srcdir) /include/proto.h $( srcdir) /include/build_env.h
@/bin/rm -f $( srcdir) /include/wrepld_proto.h $( srcdir) /nsswitch/winbindd_proto.h
@/bin/rm -f $( srcdir) /web/swat_proto.h
@/bin/rm -f $( srcdir) /client/client_proto.h $( srcdir) /utils/net_proto.h
@/bin/rm -f include/proto.h include/build_env.h include/wrepld_proto.h \
nsswitch/winbindd_proto.h web/swat_proto.h \
client/client_proto.h utils/net_proto.h
include/proto.h :
@echo Building include/proto.h
@cd $( srcdir) && $( SHELL) script/mkproto.sh $( AWK) \
-h _PROTO_H_ $( builddir) /include/proto.h \
$( PROTO_OBJ)
include/build_env.h :
@echo Building include/build_env.h
@cd $( srcdir) && $( SHELL) script/build_env.sh $( srcdir) $( builddir) $( CC) > $( builddir) /include/build_env.h
include/wrepld_proto.h :
@echo Building include/wrepld_proto.h
@cd $( srcdir) && $( SHELL) script/mkproto.sh $( AWK) \
-h _WREPLD_PROTO_H_ $( builddir) /include/wrepld_proto.h \
$( WREPL_OBJ1)
nsswitch/winbindd_proto.h :
@cd $( srcdir) && $( SHELL) script/mkproto.sh $( AWK) \
-h _WINBINDD_PROTO_H_ nsswitch/winbindd_proto.h \
$( WINBINDD_OBJ1)
web/swat_proto.h :
@cd $( srcdir) && $( SHELL) script/mkproto.sh $( AWK) \
-h _SWAT_PROTO_H_ web/swat_proto.h \
$( SWAT_OBJ1)
client/client_proto.h :
@cd $( srcdir) && $( SHELL) script/mkproto.sh $( AWK) \
-h _CLIENT_PROTO_H_ client/client_proto.h \
$( CLIENT_OBJ1)
utils/net_proto.h :
@cd $( srcdir) && $( SHELL) script/mkproto.sh $( AWK) \
-h _CLIENT_PROTO_H_ utils/net_proto.h \
$( NET_OBJ1)
# "make headers" or "make proto" calls a subshell because we need to
# make sure these commands are executed in sequence even for a
# parallel make.
headers :
$( MAKE) delheaders include/proto.h include/build_env.h \
include/wrepld_proto.h nsswitch/winbindd_proto.h \
web/swat_proto.h client/client_proto.h \
utils/net_proto.h
proto : headers
.PHONY : headers proto
etags :
etags ` find $( srcdir) -name "*.[ch]" | grep -v /CVS/`
ctags :
ctags ` find $( srcdir) -name "*.[ch]" | grep -v /CVS/`
realclean : clean delheaders
-rm -f config.log $( PROGS) $( MODULES) $( SPROGS) bin/.dummy script/findsmb
distclean : realclean
-rm -f include/stamp-h
-rm -f include/config.h Makefile
-rm -f config.status config.cache so_locations
-rm -rf .deps
# this target is really just for my use. It only works on a limited
# range of machines and is used to produce a list of potentially
# dead (ie. unused) functions in the code. (tridge)
finddead :
nm */*.o | grep 'U ' | awk '{print $$2}' | sort -u > nmused.txt
nm */*.o | grep 'T ' | awk '{print $$3}' | sort -u > nmfns.txt
comm -13 nmused.txt nmfns.txt
# when configure.in is updated, reconfigure
$(srcdir)/configure : $( srcdir ) /configure .in
@echo "WARNING: you need to rerun autoconf"
config.status : $( srcdir ) /configure
@echo "WARNING: you need to run configure"
Makefile : $( srcdir ) /Makefile .in config .status
@echo "WARNING: you need to run ./config.status"
test_prefix = /tmp/test-samba
# Run regression suite using the external "satyr" framework
check :
@echo "** Sorry, samba self-test without installation does not work "
@echo "** yet. Please try specifying a scratch directory to"
@echo "** ./configure --prefix DIR"
@echo "** then run \"make install installcheck\""
exit 1
# -rm -rf $(test_prefix)/lib
# mkdir $(test_prefix)/lib -p ./testdir
# PATH=$(builddir)/bin:$(PATH) \
# SATYR_SUITEDIR=../testsuite/build_farm/ prefix=$(test_prefix) \
# testdir=./testdir $(SHELL) satyr
# Run regression suite on the installed version.
# `installcheck'
# Perform installation tests (if any). The user must build and
# install the program before running the tests. You should not
# assume that `$(bindir)' is in the search path.
dangerous-installcheck :
mkdir -p $( BASEDIR) /lib
mkdir -p $( BASEDIR) /var
PATH = $( BINDIR) :$( SBINDIR) :$( PATH) \
SATYR_DISCOURAGE = 1 \
SATYR_SUITEDIR = ../testsuite/satyr/ prefix = $( BASEDIR) \
LIBSMB_PROG = $( SBINDIR) /smbd \
testdir = ./testdir $( SHELL) satyr