delineation between smb and msrpc more marked. smbd now constructs
[sfrench/samba-autobuild/.git] / source3 / Makefile.in
index d353ed9ea50352047264509f6029fd3eb89b16b1..d6b959afdce86d09028bad2aff7e19cb8081fcc5 100644 (file)
@@ -37,10 +37,13 @@ INSTALLPERMS = 0755
 # These can be overridden by command line switches (see smbd(8))
 # or in smb.conf (see smb.conf(5))
 SMBLOGFILE = $(VARDIR)/log.smb
+LSARPCLOGFILE = $(VARDIR)/log.lsarpc
 NMBLOGFILE = $(VARDIR)/log.nmb
 CONFIGFILE = $(LIBDIR)/smb.conf
 LMHOSTSFILE = $(LIBDIR)/lmhosts
 DRIVERFILE = $(LIBDIR)/printers.def
+FORMSFILE = $(LIBDIR)/ntforms.def
+NTDRIVERSDIR = $(LIBDIR)
 PASSWD_PROGRAM = /bin/passwd
 SMB_PASSWD_FILE = $(BASEDIR)/private/smbpasswd
 SMB_PASSGRP_FILE = $(BASEDIR)/private/smbpassgrp
@@ -75,18 +78,26 @@ PASSWD_FLAGS = \
                -DSMB_PASSGRP_FILE=\"$(SMB_PASSGRP_FILE)\"       \
                -DSMB_GROUP_FILE=\"$(SMB_GROUP_FILE)\"           \
                -DSMB_ALIAS_FILE=\"$(SMB_ALIAS_FILE)\" 
-FLAGS1 = $(CFLAGS) -Iinclude -I$(srcdir)/include -I$(srcdir)/ubiqx -I$(srcdir)/smbwrapper $(CPPFLAGS) -DSMBLOGFILE=\"$(SMBLOGFILE)\" -DNMBLOGFILE=\"$(NMBLOGFILE)\"
+FLAGS1 = $(CFLAGS)     \
+               -Iinclude -I$(srcdir)/include \
+               -I$(srcdir)/ubiqx \
+               -I$(srcdir)/smbwrapper \
+               $(CPPFLAGS) \
+               -DLSARPCLOGFILE=\"$(LSARPCLOGFILE)\" \
+               -DSMBLOGFILE=\"$(SMBLOGFILE)\" \
+               -DNMBLOGFILE=\"$(NMBLOGFILE)\"
 FLAGS2 = -DCONFIGFILE=\"$(CONFIGFILE)\" -DLMHOSTSFILE=\"$(LMHOSTSFILE)\"  
 FLAGS3 = -DSWATDIR=\"$(SWATDIR)\" -DSBINDIR=\"$(SBINDIR)\" -DLOCKDIR=\"$(LOCKDIR)\" -DSMBRUN=\"$(SMBRUN)\" -DCODEPAGEDIR=\"$(CODEPAGEDIR)\"
-FLAGS4 = -DDRIVERFILE=\"$(DRIVERFILE)\" -DBINDIR=\"$(BINDIR)\"
+FLAGS4 = -DDRIVERFILE=\"$(DRIVERFILE)\" -DBINDIR=\"$(BINDIR)\" -DFORMSFILE=\"$(FORMSFILE)\" -DNTDRIVERSDIR=\"$(NTDRIVERSDIR)\"
 FLAGS5 = $(FLAGS1) $(FLAGS2) $(FLAGS3) $(FLAGS4) -DHAVE_INCLUDES_H
 FLAGS  = $(FLAGS5) $(PASSWD_FLAGS)
 
-SPROGS = bin/smbd bin/nmbd bin/swat
+SPROGS = bin/smbd bin/lsarpcd bin/nmbd bin/swat
 PROGS1 = bin/smbclient bin/testparm bin/testprns bin/smbrun bin/smbstatus 
-PROGS2 = bin/rpcclient bin/smbpasswd bin/make_smbcodepage @WRAP@ @WRAP32@
+PROGS2 = bin/rpcclient bin/smbpasswd bin/make_smbcodepage bin/debug2html 
+PROGS3 = @WRAP@ @WRAP32@
 MPROGS = @MPROGS@
-PROGS = $(PROGS1) $(PROGS2) $(MPROGS) bin/nmblookup bin/make_printerdef 
+PROGS = $(PROGS1) $(PROGS2) $(PROGS3) $(MPROGS) bin/nmblookup bin/make_printerdef 
 
 SCRIPTS = script/smbtar script/addtosmbpass script/convert_smbpasswd
 
@@ -96,56 +107,94 @@ QUOTAOBJS=@QUOTAOBJS@
 # object file lists
 ######################################################################
 
+LIBSTATUS_OBJ = lib/util_status.o 
+
 LIB_OBJ = lib/charcnv.o lib/charset.o lib/debug.o lib/fault.o \
-          lib/getsmbpass.o lib/interface.o lib/kanji.o lib/md4.o \
+          lib/getsmbpass.o lib/interface.o lib/kanji.o \
+          lib/md5.o lib/hmacmd5.o lib/md4.o \
           lib/membuffer.o lib/netmask.o lib/pidfile.o lib/replace.o \
           lib/signal.o lib/slprintf.o lib/system.o lib/doscalls.o lib/time.o \
                  lib/ufc.o lib/util.o lib/genrand.o lib/username.o \
+               lib/vuser.o \
                lib/access.o lib/smbrun.o \
          lib/bitmap.o lib/crc32.o lib/util_sid.o lib/snprintf.o \
                lib/util_str.o lib/util_unistr.o \
                lib/util_file.o mem_man/mem_man.o \
-               lib/util_sock.o lib/unix_sec_ctxt.c
+               lib/util_sock.o \
+               lib/util_array.o \
+               lib/vagent.o \
+               lib/util_hnd.o
 
+LIBSRV_OBJ = lib/passcheck.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
+            ubiqx/ubi_dLinkList.o ubiqx/ubi_sLinkList.o
 
 PARAM_OBJ = param/loadparm.o param/params.o 
 
 LIBSMB_OBJ = libsmb/clientgen.o libsmb/namequery.o libsmb/nmblib.o \
              libsmb/nterr.o libsmb/smbdes.o libsmb/smbencrypt.o \
              libsmb/smberr.o libsmb/credentials.o libsmb/pwd_cache.o \
-            libsmb/passchange.o
+            libsmb/passchange.o 
 
-RPC_SERVER_OBJ = \
+RPC_SRVUTIL_OBJ = \
+               rpc_server/srv_pipe_hnd.o \
+               rpc_server/srv_lookup.o \
+               rpc_server/srv_pipe.o 
+
+RPC_SERVER_OBJ1 = \
                rpc_server/srv_lsa.o \
-               rpc_server/srv_lsa_hnd.o \
                rpc_server/srv_netlog.o \
-               rpc_server/srv_pipe_hnd.o \
                rpc_server/srv_reg.o \
                rpc_server/srv_samr.o \
                rpc_server/srv_srvsvc.o \
-               rpc_server/srv_pipe.o \
-               rpc_server/srv_lookup.o \
-               rpc_server/srv_wkssvc.o
+               rpc_server/srv_svcctl.o \
+               rpc_server/srv_wkssvc.o \
+               rpc_server/srv_brs.o \
+               rpc_server/srv_spoolss.o
+
+RPC_SERVER_OBJ = $(RPC_SERVER_OBJ1) $(RPC_SRVUTIL_OBJ)
 
-RPC_PARSE_OBJ = rpc_parse/parse_lsa.o rpc_parse/parse_misc.o \
-                rpc_parse/parse_net.o rpc_parse/parse_prs.o \
-                rpc_parse/parse_reg.o rpc_parse/parse_rpc.o \
+RPC_PARSE_OBJ1 = rpc_parse/parse_lsa.o \
+                rpc_parse/parse_net.o \
+                rpc_parse/parse_reg.o \
                 rpc_parse/parse_samr.o rpc_parse/parse_srv.o \
-                rpc_parse/parse_wks.o rpc_parse/parse_sec.o
+                rpc_parse/parse_wks.o \
+                rpc_parse/parse_svc.o rpc_parse/parse_at.o \
+               rpc_parse/parse_spoolss.o rpc_parse/parse_eventlog.o \
+               rpc_parse/parse_brs.o
+
+RPC_PARSE_OBJ2 = rpc_parse/parse_rpc.o \
+               rpc_parse/parse_prs.o \
+               rpc_parse/parse_misc.o \
+               rpc_parse/parse_creds.o \
+               rpc_parse/parse_sec.o \
+               lib/msrpc-agent.o \
+               lib/msrpc-client.o \
+               lib/msrpc_use.o \
+
+RPC_PARSE_OBJ = $(RPC_PARSE_OBJ1) $(RPC_PARSE_OBJ2)
 
 RPC_CLIENT_OBJ = \
                rpc_client/cli_login.o    \
                rpc_client/cli_netlogon.o \
+               rpc_client/cli_netlogon_sync.o \
                rpc_client/cli_reg.o \
                rpc_client/cli_pipe.o     \
+               rpc_client/cli_connect.o     \
+               rpc_client/cli_use.o     \
+               rpc_client/cli_spoolss.o   \
                rpc_client/cli_lsarpc.o   \
                rpc_client/cli_wkssvc.o   \
+               rpc_client/cli_brs.o   \
                rpc_client/cli_srvsvc.o   \
-               rpc_client/cli_samr.o 
-
+               rpc_client/cli_svcctl.o \
+               rpc_client/cli_samr.o   \
+               rpc_client/msrpc_samr.o   \
+               rpc_client/msrpc_lsarpc.o   \
+               rpc_client/cli_atsvc.o \
+               rpc_client/cli_eventlog.o \
+               libsmb/clienttrust.o
 
 LOCKING_OBJ = locking/locking.o locking/locking_shm.o locking/locking_slow.o \
               locking/shmem.o locking/shmem_sysv.o
@@ -157,12 +206,14 @@ GROUPDB_OBJ = groupdb/groupdb.o groupdb/aliasdb.o groupdb/builtindb.o \
                passdb/passgrp.o passdb/smbpassgroup.o \
                passdb/smbpassgroupunix.o passdb/passgrpldap.o
 
-SAMPASSDB_OBJ = passdb/sampassdb.o passdb/sampass.o passdb/sampassldap.o
+SAMPASSDB_OBJ = passdb/sampassdb.o passdb/sampass.o passdb/sampassldap.o passdb/mysqlsampass.o
 
 PASSDB_OBJ = passdb/passdb.o passdb/smbpassfile.o passdb/smbpass.o \
              passdb/pass_check.o passdb/ldap.o passdb/nispass.o \
-               passdb/smbpasschange.o \
-               lib/util_pwdb.o lib/domain_namemap.o lib/sids.o
+             passdb/smbpasschange.o passdb/mysqlpass.o \
+             lib/util_pwdb.o lib/domain_namemap.o lib/sids.o
+
+PROFILE_OBJ = profile/profile.o
 
 SMBD_OBJ1 = smbd/server.o smbd/files.o smbd/chgpasswd.o smbd/connection.o \
             smbd/dfree.o smbd/dir.o smbd/password.o smbd/conn.o smbd/fileio.o \
@@ -170,15 +221,30 @@ SMBD_OBJ1 = smbd/server.o smbd/files.o smbd/chgpasswd.o smbd/connection.o \
             smbd/message.o smbd/nttrans.o smbd/pipes.o smbd/predict.o \
             smbd/$(QUOTAOBJS) smbd/reply.o smbd/ssl.o smbd/trans2.o smbd/uid.o \
            smbd/dosmode.o smbd/filename.o smbd/open.o smbd/close.o smbd/blocking.o \
-           smbd/process.o smbd/oplock.o smbd/service.o smbd/error.o
+           smbd/process.o smbd/oplock.o smbd/service.o smbd/error.o smbd/vfs.o \
+           smbd/vfs-wrap.o printing/nt_printing.o smbd/dfs.o \
+               smbd/challenge.o
 
 PRINTING_OBJ = printing/pcap.o printing/print_svid.o printing/printing.o
 
+LSARPCD_OBJ1 = lsarpcd/lsarpcd.o \
+               lsarpcd/lsarpcd_process.o \
+               rpc_server/srv_lsa.o \
+               smbd/uid.o
+
 SMBD_OBJ = $(SMBD_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) \
            $(RPC_SERVER_OBJ) $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) \
            $(LOCKING_OBJ) $(SAMPASSDB_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
-               $(PRINTING_OBJ) $(LIB_OBJ)
+               $(LIBSTATUS_OBJ) $(PRINTING_OBJ) $(PROFILE_OBJ) $(LIB_OBJ) \
+               $(LIBSRV_OBJ)
+
 
+LSARPCD_OBJ = $(LSARPCD_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) \
+               $(UBIQX_OBJ) \
+           $(RPC_SRVUTIL_OBJ) $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) \
+           $(LOCKING_OBJ) $(SAMPASSDB_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
+               $(LIBSTATUS_OBJ) $(PRINTING_OBJ) $(PROFILE_OBJ) $(LIB_OBJ) \
+               $(LIBSRV_OBJ)
 
 NMBD_OBJ1 = nmbd/asyncdns.o nmbd/nmbd.o nmbd/nmbd_become_dmb.o \
             nmbd/nmbd_become_lmb.o nmbd/nmbd_browserdb.o \
@@ -194,7 +260,7 @@ NMBD_OBJ1 = nmbd/asyncdns.o nmbd/nmbd.o nmbd/nmbd_become_dmb.o \
             nmbd/nmbd_workgroupdb.o nmbd/nmbd_synclists.o
 
 NMBD_OBJ = $(NMBD_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) \
-            $(PASSDB_OBJ) $(LIB_OBJ) $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ)
+            $(LIB_OBJ) $(RPC_PARSE_OBJ2)
 
 SWAT_OBJ = web/cgi.o web/diagnose.o web/startstop.o web/statuspage.o \
            web/swat.o $(LIBSMB_OBJ) $(LOCKING_OBJ) \
@@ -204,7 +270,7 @@ SWAT_OBJ = web/cgi.o web/diagnose.o web/startstop.o web/statuspage.o \
 SMBRUN_OBJ = utils/smbrun.o
 
 SMBSH_OBJ = smbwrapper/smbsh.o smbwrapper/shared.o \
-            $(PARAM_OBJ) $(UBIQX_OBJ) $(LIB_OBJ)
+            $(PARAM_OBJ) $(UBIQX_OBJ) $(LIB_OBJ) $(RPC_PARSE_OBJ2)
 
 MAKE_SMBCODEPAGE_OBJ = utils/make_smbcodepage.o $(PARAM_OBJ) \
                        $(UBIQX_OBJ) $(LIB_OBJ)
@@ -212,8 +278,8 @@ MAKE_SMBCODEPAGE_OBJ = utils/make_smbcodepage.o $(PARAM_OBJ) \
 MAKE_PRINTERDEF_OBJ = utils/make_printerdef.o $(PARAM_OBJ) \
                       $(UBIQX_OBJ) $(LIB_OBJ)
 
-STATUS_OBJ = utils/status.o $(LOCKING_OBJ) $(PARAM_OBJ) \
-             $(UBIQX_OBJ) $(LIB_OBJ)
+STATUS_OBJ = utils/status.o $(LIBSTATUS_OBJ) $(LOCKING_OBJ) $(PARAM_OBJ) \
+             $(UBIQX_OBJ) $(PROFILE_OBJ) $(LIB_OBJ)
 
 TESTPARM_OBJ = utils/testparm.o \
                $(PARAM_OBJ) $(UBIQX_OBJ) $(LIB_OBJ)
@@ -226,15 +292,28 @@ SMBPASSWD_OBJ = utils/smbpasswd.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
                 $(UBIQX_OBJ) $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) $(LIB_OBJ)
 
 RPCCLIENT_OBJ = rpcclient/rpcclient.o \
-             rpcclient/display.o \
-             rpcclient/cmd_lsarpc.o \
-             rpcclient/cmd_wkssvc.o \
-             rpcclient/cmd_samr.o \
-             rpcclient/cmd_reg.o \
-             rpcclient/cmd_srvsvc.o \
-             rpcclient/cmd_netlogon.o \
-             $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(LIB_OBJ) \
-             $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) $(PASSDB_OBJ)
+               rpcclient/display_at.o \
+               rpcclient/display_event.o \
+               rpcclient/display_reg.o \
+               rpcclient/display_sam.o \
+               rpcclient/display_sec.o \
+               rpcclient/display_spool.o \
+               rpcclient/display_srv.o \
+               rpcclient/display_svc.o \
+               rpcclient/display_sync.o \
+               rpcclient/cmd_lsarpc.o \
+               rpcclient/cmd_wkssvc.o \
+               rpcclient/cmd_brs.o \
+               rpcclient/cmd_samr.o \
+               rpcclient/cmd_reg.o \
+               rpcclient/cmd_srvsvc.o \
+               rpcclient/cmd_svcctl.o \
+               rpcclient/cmd_netlogon.o \
+               rpcclient/cmd_atsvc.o \
+               rpcclient/cmd_spoolss.o \
+               rpcclient/cmd_eventlog.o \
+               $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(LIB_OBJ) \
+               $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) $(PASSDB_OBJ)
 
 SMBWRAPPER_OBJ = smbwrapper/smbw.o smbwrapper/wrapped.o \
                smbwrapper/smbw_dir.o smbwrapper/smbw_stat.o \
@@ -243,7 +322,7 @@ SMBWRAPPER_OBJ = smbwrapper/smbw.o smbwrapper/wrapped.o \
                 $(UBIQX_OBJ) $(LIB_OBJ)
 
 CLIENT_OBJ = client/client.o client/clitar.o \
-             $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(LIB_OBJ)
+             $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(LIB_OBJ) $(RPC_PARSE_OBJ2)
 
 MOUNT_OBJ = client/smbmount.o client/clientutil.o \
              $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(LIB_OBJ)
@@ -254,12 +333,25 @@ MNT_OBJ = client/smbmnt.o \
 UMOUNT_OBJ = client/smbumount.o \
              $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(LIB_OBJ)
 
+NMB_AGENT_OBJ = utils/nmb-agent.o $(PARAM_OBJ) $(UBIQX_OBJ) \
+                $(LIBSMB_OBJ) $(LIB_OBJ) $(RPC_PARSE_OBJ2)
+
 NMBLOOKUP_OBJ = utils/nmblookup.o $(PARAM_OBJ) $(UBIQX_OBJ) \
-                $(LIBSMB_OBJ) $(LIB_OBJ)
+                $(LIBSMB_OBJ) $(LIB_OBJ) $(RPC_PARSE_OBJ2)
+
+DEBUG2HTML_OBJ = utils/debug2html.o $(PARAM_OBJ) $(LIB_OBJ)
+
+SMB_AGENT_OBJ = utils/smb-agent.o $(LIBSMB_OBJ) $(PARAM_OBJ) $(LIB_OBJ) \
+                       $(RPC_PARSE_OBJ2) rpc_client/cli_use.o
+
+SMB_CLIENT_OBJ = smb-client.o $(PARAM_OBJ) $(LIB_OBJ)
 
 SMBTORTURE_OBJ = utils/torture.o $(LIBSMB_OBJ) $(PARAM_OBJ) \
                  $(UBIQX_OBJ) $(LIB_OBJ)
 
+SMBFILTER_OBJ = utils/smbfilter.o $(LIBSMB_OBJ) $(PARAM_OBJ) \
+                 $(UBIQX_OBJ) $(LIB_OBJ)
+
 RPCTORTURE_OBJ = utils/rpctorture.o \
              rpcclient/display.o \
              rpcclient/cmd_lsarpc.o \
@@ -271,9 +363,7 @@ RPCTORTURE_OBJ = utils/rpctorture.o \
              $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) \
                $(PASSDB_OBJ) 
 
-DEBUG2HTML_OBJ = utils/debug2html.o ubiqx/debugparse.o
-
-PROTO_OBJ = $(SMBD_OBJ) $(NMBD_OBJ) $(SWAT_OBJ) $(CLIENT_OBJ) \
+PROTO_OBJ = $(LSARPCD_OBJ) $(SMBD_OBJ) $(NMBD_OBJ) $(SWAT_OBJ) $(CLIENT_OBJ) \
            $(RPCCLIENT_OBJ) $(SMBWRAPPER_OBJ)
 
 PICOBJS = $(SMBWRAPPER_OBJ:.o=.po)
@@ -291,7 +381,8 @@ smbtorture : CHECK bin/smbtorture
 
 rpctorture : CHECK bin/rpctorture
 
-debug2html : CHECK bin/debug2html
+smbfilter : CHECK bin/smbfilter
+
 
 .SUFFIXES:
 .SUFFIXES: .c .o .po .po32
@@ -362,6 +453,10 @@ bin/smbd: $(SMBD_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(LDFLAGS) $(LIBS) 
 
+bin/lsarpcd: $(LSARPCD_OBJ) bin/.dummy
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(LSARPCD_OBJ) $(LDFLAGS) $(LIBS) 
+
 bin/nmbd: $(NMBD_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(NMBD_OBJ) $(LDFLAGS) $(LIBS)
@@ -430,6 +525,22 @@ bin/rpctorture: $(RPCTORTURE_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(RPCTORTURE_OBJ) $(LDFLAGS) $(LIBS)
 
+bin/smb-client: $(SMB_CLIENT_OBJ) bin/.dummy
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(SMB_CLIENT_OBJ) $(LDFLAGS) $(LIBS)
+
+bin/nmb-agent: $(NMB_AGENT_OBJ) bin/.dummy
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(NMB_AGENT_OBJ) $(LDFLAGS) $(LIBS)
+
+bin/smb-agent: $(SMB_AGENT_OBJ) bin/.dummy
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(SMB_AGENT_OBJ) $(LDFLAGS) $(LIBS)
+
+bin/smbfilter: $(SMBFILTER_OBJ) bin/.dummy
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(SMBFILTER_OBJ) $(LDFLAGS) $(LIBS)
+
 bin/debug2html: $(DEBUG2HTML_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(DEBUG2HTML_OBJ) $(LDFLAGS) $(LIBS)
@@ -564,7 +675,7 @@ $(srcdir)/include/stamp-h.in: @MAINT@ $(srcdir)/acconfig.h $(srcdir)/configure.i
        @: >> $@ || : > $@ # what a fancy emoticon!
 
 .deps/.stamp: .deps/.dummy
-       @:
+       @: >> $@ || : > $@
 
 .deps/depend: .deps/.stamp
        @echo Updating dependencies