Move string manipulation functions out of util
[openafs.git] / src / WINNT / afsd / NTMakefile
1 # Copyright 2000, International Business Machines Corporation and others.
2 # All Rights Reserved.
3 #
4 # This software has been released under the terms of the IBM Public
5 # License.  For details, see the LICENSE file in the top-level source
6 # directory or online at http://www.openafs.org/dl/license10.html
7
8 AFSDEV_AUXCDEFINES = $(AFSDEV_AUXCDEFINES) /D"_AFXDLL" /DSMB_UNICODE -I..\kfw\inc\loadfuncs \
9         -I..\kfw\inc\krb5 -I..\kfw\inc\leash -I$(DESTDIR)\include\afs \
10         -I$(DESTDIR)\include\rx
11 AFSDEV_NETGUI = 1
12 RELDIR=WINNT\afsd
13 !INCLUDE ..\..\config\NTMakefile.$(SYS_NAME)
14 !INCLUDE ..\..\config\NTMakefile.version
15
16 EXEDIR = $(DESTDIR)\root.client\usr\vice\etc
17
18 ############################################################################
19 # Definitions for installing header files
20
21 INCFILEDIR = $(DESTDIR)\include\afs  # header file install directory
22
23 # afsdicon and below added for WINNT\extra support
24
25 INCFILES =\
26         $(INCFILEDIR)\afsd.h \
27         $(INCFILEDIR)\cm.h \
28         $(INCFILEDIR)\cm_buf.h \
29         $(INCFILEDIR)\cm_cell.h \
30         $(INCFILEDIR)\cm_config.h \
31         $(INCFILEDIR)\cm_conn.h \
32         $(INCFILEDIR)\cm_error.h \
33         $(INCFILEDIR)\cm_ioctl.h \
34         $(INCFILEDIR)\cm_scache.h \
35         $(INCFILEDIR)\cm_server.h \
36         $(INCFILEDIR)\cm_user.h \
37         $(INCFILEDIR)\cm_dns.h \
38         $(INCFILEDIR)\cm_utils.h \
39         $(INCFILEDIR)\fs_acl.h \
40         $(INCFILEDIR)\fs_utils.h \
41         $(INCFILEDIR)\krb.h \
42         $(INCFILEDIR)\krb_prot.h \
43         $(INCFILEDIR)\cm_dir.h \
44         $(INCFILEDIR)\smb.h \
45         $(INCFILEDIR)\smb3.h \
46         $(INCFILEDIR)\smb_iocons.h \
47         $(INCFILEDIR)\smb_ioctl.h \
48         $(INCFILEDIR)\smb_rpc.h \
49         $(INCFILEDIR)\afsrpc.h \
50 !IFDEF OSICRASH
51         $(INCFILEDIR)\afsdcrash.h \
52 !ENDIF
53         $(INCFILEDIR)\cm_dns_private.h \
54         $(INCFILEDIR)\lanahelper.h \
55         $(INCFILEDIR)\afsdicon.h \
56         $(INCFILEDIR)\cm_callback.h \
57         $(INCFILEDIR)\cm_aclent.h \
58         $(INCFILEDIR)\cm_volume.h \
59         $(INCFILEDIR)\cm_volstat.h \
60         $(INCFILEDIR)\cm_dcache.h \
61         $(INCFILEDIR)\cm_access.h \
62         $(INCFILEDIR)\cm_vnodeops.h \
63         $(INCFILEDIR)\cm_dir.h \
64         $(INCFILEDIR)\cm_utils.h \
65         $(INCFILEDIR)\cm_daemon.h \
66         $(INCFILEDIR)\cm_ioctl.h \
67         $(INCFILEDIR)\cm_dnlc.h \
68         $(INCFILEDIR)\cm_buf.h \
69         $(INCFILEDIR)\cm_freelance.h \
70         $(INCFILEDIR)\cm_memmap.h \
71         $(INCFILEDIR)\cm_performance.h \
72         $(INCFILEDIR)\cm_nls.h \
73         $(INCFILEDIR)\afsd_eventlog.h \
74         $(INCFILEDIR)\afsd_eventmessages.h \
75         $(INCFILEDIR)\afskfw.h \
76         $(INCFILEDIR)\afsicf.h
77
78 IDLFILES =\
79         afsrpc.h $(OUT)\afsrpc_c.obj
80
81 CONFOBJS=$(OUT)\cm_config.obj \
82          $(OUT)\cm_dns.obj \
83          $(OUT)\cm_nls.obj
84
85 $(CONFOBJS):
86
87 RXOBJS = $(OUT)\xdr_int32.obj $(OUT)\xdr_int64.obj
88
89 $(RXOBJS):
90
91 RX= ..\..\rx
92
93 $(RXOBJS): $(RX)\$$(@B).c
94         $(C2OBJ) -I$(RX) $**
95
96 $(IDLFILES):afsrpc.idl
97         midl $(MIDL_FLAGS) $(AFSDEV_AUXMIDLFLAGS) /app_config $?
98
99 ms-srvsvc.h ms-srvsvc_s.c: ms-srvsvc.idl
100         midl $(MIDL_FLAGS) $(AFSDEV_AUXMIDLFLAGS) /Os ms-srvsvc.idl
101
102 ms-wkssvc.h ms-wkssvc_s.c: ms-wkssvc.idl
103         midl $(MIDL_FLAGS) $(AFSDEV_AUXMIDLFLAGS) /Os ms-wkssvc.idl
104
105 $(OUT)\ms-srvsvc_s.obj: ms-srvsvc_s.c
106         $(C2OBJ) /FImsrpc.h /Fo$@ $**
107
108 $(OUT)\ms-wkssvc_s.obj: ms-wkssvc_s.c
109         $(C2OBJ) /FImsrpc.h /Fo$@ $**
110
111 AFSDOBJS=\
112         $(OUT)\rawops.obj \
113         $(OUT)\afsd_init.obj \
114         $(OUT)\cm_btree.obj \
115         $(OUT)\cm_cell.obj \
116         $(OUT)\cm_server.obj \
117         $(OUT)\cm_volume.obj \
118         $(OUT)\cm_volstat.obj \
119         $(OUT)\cm_config.obj \
120         $(OUT)\cm_conn.obj \
121         $(OUT)\cm_user.obj \
122         $(OUT)\cm_buf.obj \
123         $(OUT)\cm_scache.obj \
124         $(OUT)\cm_dcache.obj \
125         $(OUT)\cm_access.obj \
126         $(OUT)\cm_callback.obj \
127         $(OUT)\cm_vnodeops.obj \
128         $(OUT)\cm_dir.obj \
129         $(OUT)\cm_utils.obj \
130         $(OUT)\largeintdotnet.obj \
131         $(OUT)\smb.obj \
132         $(OUT)\smb3.obj \
133         $(OUT)\smb_ioctl.obj \
134         $(OUT)\smb_rpc.obj \
135         $(OUT)\msrpc.obj \
136         $(OUT)\cm_ioctl.obj \
137         $(OUT)\cm_daemon.obj \
138         $(OUT)\cm_aclent.obj \
139         $(OUT)\cm_dnlc.obj \
140         $(OUT)\cm_rpc.obj \
141         $(OUT)\cm_memmap.obj \
142         $(OUT)\cm_performance.obj \
143         $(OUT)\cm_nls.obj \
144         $(OUT)\afsrpc_s.obj \
145 !IFDEF OSICRASH
146         $(OUT)\afsdcrash.obj \
147 !ENDIF
148         $(OUT)\cm_freelance.obj \
149         $(OUT)\afsd_eventlog.obj \
150         $(OUT)\afsd_flushvol.obj \
151         $(OUT)\afsicf.obj \
152         $(OUT)\ms-srvsvc_s.obj \
153         $(OUT)\ms-wkssvc_s.obj \
154         $(OUT)\rpc_wkssvc.obj \
155         $(OUT)\rpc_srvsvc.obj \
156         $(OUT)\AFS_component_version_number.obj
157
158 $(AFSDOBJS):
159
160 $(OUT)\cm_conn.obj: cm_conn.c
161         $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
162
163 FSOBJS=$(OUT)\fs.obj \
164        $(OUT)\fs_acl.obj \
165        $(OUT)\fs_utils.obj \
166        $(OUT)\cm_nls.obj \
167        $(OUT)\parsemode.obj
168
169 CMDBGOBJS=$(OUT)\cmdebug.obj
170
171 $(CMDBGOBJS): $(AFSROOT)\src\venus\cmdebug.c
172         $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
173
174 AFSIOOBJS=$(OUT)\afsio.obj
175
176 $(AFSIOOBJS): $(AFSROOT)\src\venus\afsio.c
177         $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
178
179 SLOBJS= $(OUT)\symlink.obj \
180         $(OUT)\fs_utils.obj \
181         $(OUT)\cm_nls.obj
182
183 ILIBDIR = $(DESTDIR)\lib
184
185 #
186 # Rules for message compiler info for logging events
187 #
188 $(INCFILEDIR)\afsd_eventmessages.h:  afsd_eventmessages.mc
189         mc afsd_eventmessages.mc
190
191 ############################################################################
192 #
193 # Flags for linking LOGON DLL'S
194 #
195
196 LOGONLINKFLAGS = -entry:DllEntryPoint
197
198
199 ############################################################################
200 #
201 # IDL COMPILATION
202 #
203
204 MIDL_FLAGS=/app_config \
205            /Zp4 \
206            /cpp_cmd $(cc) \
207            /cpp_opt "-E" \
208            /nologo
209
210 .SUFFIXES: .h .idl
211
212 .idl.h:
213         midl $(MIDL_FLAGS) $(AFSDEV_AUXMIDLFLAGS) $<
214
215
216 AFSD_SDKLIBS =\
217         netapi32.lib \
218         dnsapi.lib \
219         mpr.lib \
220         rpcrt4.lib \
221         user32.lib \
222         Dbghelp.lib \
223         strsafe.lib \
224         mpr.lib \
225         secur32.lib \
226         ole32.lib \
227         oleaut32.lib \
228         iphlpapi.lib \
229         shell32.lib \
230         shlwapi.lib
231
232 ############################################################################
233 # libafsconf.dll
234
235 CONF_DLLFILE = $(DESTDIR)\lib\libafsconf.dll
236
237 CONF_DLLLIBS = \
238     $(DESTDIR)\lib\afs\afsutil.lib \
239     $(DESTDIR)\lib\afs\afsreg.lib \
240     $(DESTDIR)\lib\afsroken.lib
241
242 $(CONF_DLLFILE): $(CONFOBJS) $(OUT)\libafsconf.res $(CONF_DLLLIBS)
243         $(DLLGUILINK) -def:libafsconf.def  $(AFSD_SDKLIBS)
244         $(_VC_MANIFEST_EMBED_DLL)
245         $(DLLPREP)
246         $(CODESIGN_USERLAND)
247         $(SYMSTORE_IMPORT)
248         $(MAKECYGLIB) --input-def libafsconf.def
249         $(DEL) $*.exp
250
251 ############################################################################
252 # lanahelper.lib
253
254 LANAHELPERLIB = $(DESTDIR)\lib\lanahelper.lib
255
256 LANAHELPERLIB_OBJS =\
257       $(OUT)\lanahelper.obj
258
259 $(LANAHELPERLIB_OBJS):
260
261 $(LANAHELPERLIB): $(LANAHELPERLIB_OBJS)
262       $(LIBARCH) netapi32.lib
263
264 ############################################################################
265 # afskfw.lib
266
267 AFSKFWLIB = $(DESTDIR)\lib\afskfw.lib
268
269 PTERROBJS=$(OUT)\pterror.obj
270
271 $(PTERROBJS): $(AFSROOT)\src\ptserver\pterror.c
272         $(C2OBJ) /Fo$@ $**
273
274 KTCERROBJS=$(OUT)\ktc_errors.obj
275
276 $(KTCERROBJS): $(AFSROOT)\src\auth\ktc_errors.c
277         $(C2OBJ) /Fo$@ $**
278
279 AFSKFWLIB_OBJS = $(OUT)\afskfw.obj
280
281 $(AFSKFWLIB_OBJS):
282
283 $(AFSKFWLIB): $(AFSKFWLIB_OBJS) $(PTERROBJS) $(KTCERROBJS)
284       $(LIBARCH)
285
286 ############################################################################
287 # afslogon.dll
288
289 LOGON_DLLFILE = $(DESTDIR)\root.client\usr\vice\etc\afslogon.dll
290
291 LOGON_DLLOBJS =\
292     $(OUT)\afslogon.obj \
293     $(OUT)\logon_ad.obj \
294     $(OUT)\afslogon.res \
295     $(OUT)\cm_nls.obj
296
297 LOGON_DLLLIBS =\
298     $(DESTDIR)\lib\afsauthent.lib \
299     $(DESTDIR)\lib\libafsconf.lib \
300     $(DESTDIR)\lib\afs\afscom_err.lib \
301     $(DESTDIR)\lib\afs\afsutil.lib \
302     $(DESTDIR)\lib\opr.lib \
303     $(DESTDIR)\lib\afsroken.lib \
304     $(LANAHELPERLIB) \
305     $(AFSKFWLIB)
306
307 LOGON_DLLSDKLIBS =\
308         dnsapi.lib \
309         netapi32.lib \
310         mpr.lib \
311         advapi32.lib \
312         secur32.lib \
313         strsafe.lib \
314         oleaut32.lib \
315         ole32.lib \
316         adsiid.lib \
317         activeds.lib \
318         user32.lib \
319         userenv.lib \
320         shell32.lib
321
322 $(LOGON_DLLFILE): $(LOGON_DLLOBJS) $(LOGON_DLLLIBS)
323         $(DLLGUILINK) $(LOGONLINKFLAGS) -def:afslogon.def $(LOGON_DLLSDKLIBS)
324         $(_VC_MANIFEST_EMBED_DLL)
325         $(DLLPREP)
326         $(CODESIGN_USERLAND)
327         $(SYMSTORE_IMPORT)
328         $(COPY) $*.lib $(DESTDIR)\lib
329         $(DEL) $*.lib $*.exp
330
331 ############################################################################
332 # Install target; primary makefile target
333
334 install_objs: $(CONF_DLLFILE) $(LANAHELPERLIB) $(OUT)\afsicf.obj
335      $(COPY) $(OUT)\afsicf.obj $(DESTDIR)\lib
336
337 install_headers: $(IDLFILES) $(INCFILES) ms-wkssvc.h ms-srvsvc.h
338
339 install: install_headers install_objs $(CONF_DLLFILE) \
340         $(EXEDIR)\klog.exe \
341         $(EXEDIR)\tokens.exe \
342         $(EXEDIR)\unlog.exe \
343         $(EXEDIR)\afsd_service.exe \
344         $(EXEDIR)\fs.exe \
345         $(EXEDIR)\symlink.exe \
346         $(EXEDIR)\afsdacl.exe \
347         $(LOGON_DLLFILE) \
348         $(EXEDIR)\afsshare.exe \
349         $(DESTDIR)\bin\kpasswd.exe \
350         $(EXEDIR)\cmdebug.exe \
351         $(EXEDIR)\afscpcc.exe \
352         $(EXEDIR)\afsio.exe
353
354 install_libutils: install_headers $(CONF_DLLFILE) \
355         $(EXEDIR)\klog.exe \
356         $(EXEDIR)\tokens.exe \
357         $(EXEDIR)\unlog.exe \
358         $(EXEDIR)\fs.exe $(EXEDIR)\symlink.exe \
359         $(EXEDIR)\afsshare.exe \
360         $(DESTDIR)\bin\kpasswd.exe $(EXEDIR)\cmdebug.exe
361
362 ############################################################################
363 # Local clean target; augments predefined clean target
364
365 ############################################################################
366 # assorted exe's
367
368 EXELIBS = \
369         $(DESTDIR)\lib\afs\afsauth.lib \
370         $(DESTDIR)\lib\afs\afskauth.lib \
371         $(DESTDIR)\lib\afs\afsprot.lib \
372         $(DESTDIR)\lib\afs\afspioctl.lib \
373         $(DESTDIR)\lib\afs\afsaudit.lib \
374         $(DESTDIR)\lib\afs\afsutil.lib \
375         $(DESTDIR)\lib\afs\afscom_err.lib \
376         $(DESTDIR)\lib\afs\afsreg.lib \
377         $(DESTDIR)\lib\afs\afscmd.lib \
378         $(DESTDIR)\lib\afs\afsvldb.lib \
379         $(DESTDIR)\lib\afsubik.lib \
380         $(DESTDIR)\lib\afsrxkad.lib \
381         $(DESTDIR)\lib\afsrx.lib \
382         $(DESTDIR)\lib\afslwp.lib \
383         $(DESTDIR)\lib\libosi.lib \
384         $(DESTDIR)\lib\libafsconf.lib \
385         $(DESTDIR)\lib\opr.lib \
386         $(DESTDIR)\lib\afshcrypto.lib \
387         $(DESTDIR)\lib\afsroken.lib
388
389 EXELIBS2 = \
390         $(DESTDIR)\lib\afsrpc.lib \
391         $(DESTDIR)\lib\afs\afsprot.lib \
392         $(DESTDIR)\lib\afs\afspioctl.lib \
393         $(DESTDIR)\lib\afs\afscom_err.lib \
394         $(DESTDIR)\lib\afs\afscmd.lib \
395         $(DESTDIR)\lib\afs\afsutil.lib \
396         $(DESTDIR)\lib\afsubik.lib \
397         $(DESTDIR)\lib\afsrxkad.lib \
398         $(DESTDIR)\lib\afslwp.lib \
399         $(DESTDIR)\lib\libosi.lib \
400         $(DESTDIR)\lib\libafsconf.lib \
401         $(DESTDIR)\lib\opr.lib \
402         $(DESTDIR)\lib\afshcrypto.lib \
403         $(DESTDIR)\lib\afsroken.lib
404
405 EXELIBS3 = \
406         $(DESTDIR)\lib\afs\afscmd.lib \
407         $(DESTDIR)\lib\afsrxkad.lib \
408         $(DESTDIR)\lib\opr.lib \
409         $(DESTDIR)\lib\afshcrypto.lib \
410         $(DESTDIR)\lib\afsroken.lib
411
412 # klog.exe
413 $(EXEDIR)\klog.exe: $(OUT)\cklog.obj $(OUT)\klog.res $(EXELIBS)
414         $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib
415         $(_VC_MANIFEST_EMBED_EXE)
416         $(EXEPREP)
417         $(CODESIGN_USERLAND)
418         $(SYMSTORE_IMPORT)
419
420 # tokens.exe
421 $(EXEDIR)\tokens.exe: $(OUT)\ctokens.obj $(OUT)\tokens.res $(EXELIBS)
422         $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib
423         $(_VC_MANIFEST_EMBED_EXE)
424         $(EXEPREP)
425         $(CODESIGN_USERLAND)
426         $(SYMSTORE_IMPORT)
427
428 # unlog.exe
429 $(EXEDIR)\unlog.exe: $(OUT)\cunlog.obj $(OUT)\unlog.res $(EXELIBS)
430         $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib
431         $(_VC_MANIFEST_EMBED_EXE)
432         $(EXEPREP)
433         $(CODESIGN_USERLAND)
434         $(SYMSTORE_IMPORT)
435
436 # afscpcc.exe
437 $(EXEDIR)\afscpcc.exe: $(OUT)\afscpcc.obj $(OUT)\afscpcc.res $(LOGON_DLLLIBS)
438         $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib userenv.lib
439         $(_VC_MANIFEST_EMBED_EXE)
440         $(EXEPREP)
441         $(CODESIGN_USERLAND)
442         $(SYMSTORE_IMPORT)
443
444
445 # afsd.exe
446 AFSD_EXEFILE = $(EXEDIR)\afsd.exe
447
448 AFSD_EXELIBS =\
449         $(DESTDIR)\lib\libosi.lib \
450         $(DESTDIR)\lib\afs\mtafsvldb.lib \
451         $(DESTDIR)\lib\afs\mtafsint.lib \
452         $(DESTDIR)\lib\afsrpc.lib \
453         $(DESTDIR)\lib\afs\mtafsutil.lib \
454         $(DESTDIR)\lib\afsauthent.lib \
455         $(DESTDIR)\lib\libafsconf.lib \
456         $(DESTDIR)\lib\afs\afsreg.lib \
457         $(DESTDIR)\lib\afspthread.lib \
458         $(DESTDIR)\lib\afsroken.lib \
459         $(LANAHELPERLIB)
460
461 $(AFSD_EXEFILE): $(OUT)\afsd.obj $(AFSDOBJS) $(OUT)\afsd.res  $(RXOBJS) $(AFSD_EXELIBS)
462         $(EXEGUILINK) $(AFSD_SDKLIBS)
463         $(_VC_MANIFEST_EMBED_EXE)
464         $(EXEPREP)
465         $(CODESIGN_USERLAND)
466         $(SYMSTORE_IMPORT)
467
468 # afsd_service.exe
469 $(EXEDIR)\afsd_service.exe: $(OUT)\afsd_service.obj $(AFSDOBJS) $(OUT)\afsd_service.res  $(RXOBJS) $(AFSD_EXELIBS)
470         $(EXECONLINK) $(AFSD_SDKLIBS) /MAP /LARGEADDRESSAWARE
471         $(_VC_MANIFEST_EMBED_EXE)
472         $(EXEPREP)
473         $(CODESIGN_USERLAND)
474         $(SYMSTORE_IMPORT)
475
476 # fs.exe
477 $(EXEDIR)\fs.exe: $(FSOBJS) $(OUT)\fs.res $(EXELIBS)
478         $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib
479         $(_VC_MANIFEST_EMBED_EXE)
480         $(EXEPREP)
481         $(CODESIGN_USERLAND)
482         $(SYMSTORE_IMPORT)
483
484 # cmdebug.exe
485 $(EXEDIR)\cmdebug.exe: $(CMDBGOBJS) $(OUT)\cmdebug.res
486         $(EXECONLINK) $(EXELIBS2) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib rpcrt4.lib
487         $(_VC_MANIFEST_EMBED_EXE)
488         $(EXEPREP)
489         $(CODESIGN_USERLAND)
490         $(SYMSTORE_IMPORT)
491
492 # afsio.exe
493 AFSCPLIB = \
494         $(DESTDIR)\lib\afs\afscp.lib
495
496 !IF "$(CPU)" == "IA64" || "$(CPU)" == "AMD64" || "$(CPU)" == "ALPHA64"
497 KFWLIBS = \
498     ..\kfw\lib\$(CPU)\krb5_64.lib \
499     ..\kfw\lib\$(CPU)\comerr64.lib \
500     dnsapi.lib mpr.lib delayimp.lib
501 LINKOPTS = /DELAYLOAD:krb5_64.dll /DELAYLOAD:comerr64.dll
502 !else
503 KFWLIBS = \
504     ..\kfw\lib\$(CPU)\krb5_32.lib \
505     ..\kfw\lib\$(CPU)\comerr32.lib \
506     dnsapi.lib mpr.lib delayimp.lib
507 LINKOPTS = /DELAYLOAD:krbv4w32.dll /DELAYLOAD:krb5_32.dll /DELAYLOAD:comerr32.dll
508 !endif
509
510 $(EXEDIR)\afsio.exe: $(AFSIOOBJS) $(OUT)\afsio.res $(RXOBJS) $(AFSD_EXELIBS) $(EXELIBS3) $(AFSCPLIB)
511         $(EXECONLINK) $(KFWLIBS) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib rpcrt4.lib
512         $(_VC_MANIFEST_EMBED_EXE)
513         $(EXEPREP)
514         $(CODESIGN_USERLAND)
515         $(SYMSTORE_IMPORT)
516
517 # symlink.exe
518 $(EXEDIR)\symlink.exe: $(SLOBJS) $(OUT)\symlink.res  $(EXELIBS)
519         $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib
520         $(_VC_MANIFEST_EMBED_EXE)
521         $(EXEPREP)
522         $(CODESIGN_USERLAND)
523         $(SYMSTORE_IMPORT)
524
525 # afsshare.exe
526 $(EXEDIR)\afsshare.exe: $(OUT)\afsshare.obj $(OUT)\afsshare.res $(EXELIBS)
527         $(EXECONLINK)
528         $(_VC_MANIFEST_EMBED_EXE)
529         $(EXEPREP)
530         $(CODESIGN_USERLAND)
531         $(SYMSTORE_IMPORT)
532
533 # afsdacl.exe
534 $(EXEDIR)\afsdacl.exe: $(OUT)\afsdacl.obj $(OUT)\afsdacl.res
535         $(EXECONLINK)
536         $(_VC_MANIFEST_EMBED_EXE)
537         $(EXEPREP)
538         $(CODESIGN_USERLAND)
539         $(SYMSTORE_IMPORT)
540
541 # kpasswd.exe - built in kauth, but rebuild here to make pthread-based,
542 #    which is required for Windows 95.  At some point it would be nice
543 #    for all commands to be pthread based, in which case they should
544 #    be built in a separate directory (perhaps tbin ala tviced) or
545 #    libafsauthent should be built earlier so that each command can
546 #    be built in its native directory.
547
548 KAUTH = ..\..\kauth
549
550 KPASSWD_OBJS =\
551         $(OUT)\kpasswd.obj \
552         $(OUT)\kkids.obj \
553         $(OUT)\kautils.obj \
554         $(OUT)\$(KAUTH)\kpasswd.res
555
556 KPASSWD_LIBS =\
557         $(DESTDIR)\lib\afsauthent.lib \
558         $(DESTDIR)\lib\afsrpc.lib \
559         $(DESTDIR)\lib\afs\afscmd.lib \
560         $(DESTDIR)\lib\afs\mtafsutil.lib \
561         $(DESTDIR)\lib\opr.lib \
562         $(DESTDIR)\lib\afshcrypto.lib \
563         $(DESTDIR)\lib\afsroken.lib
564
565 $(OUT)\kpasswd.obj: $(KAUTH)/kpasswd.c
566         $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
567
568 $(OUT)\kkids.obj: $(KAUTH)/kkids.c
569         $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
570
571 $(OUT)\kautils.obj: $(KAUTH)/kautils.c
572         $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
573
574 $(OUT)\kpasswd.res: $(KAUTH)\kpasswd.rc
575     $(RC) /Fo$@ $**
576
577 $(DESTDIR)\bin\kpasswd.exe: $(KPASSWD_OBJS) $(KPASSWD_LIBS)
578         $(DEL) $(DESTDIR)\bin\kpasswd.exe
579         $(EXECONLINK)
580         $(_VC_MANIFEST_EMBED_EXE)
581         $(EXEPREP)
582         $(CODESIGN_USERLAND)
583         $(SYMSTORE_IMPORT)
584
585
586 ############################################################################
587 # generate versioninfo resources
588
589 $(OUT)\afsshare.res: afsshare.rc AFS_component_version_number.h
590
591 $(OUT)\fs.res: fs.rc AFS_component_version_number.h
592
593 $(OUT)\symlink.res: symlink.rc AFS_component_version_number.h
594
595 $(OUT)\klog.res: klog.rc AFS_component_version_number.h
596
597 $(OUT)\tokens.res: tokens.rc AFS_component_version_number.h
598
599 $(OUT)\unlog.res: unlog.rc AFS_component_version_number.h
600
601 $(OUT)\afscpcc.res: afscpcc.rc AFS_component_version_number.h
602
603 afsd_eventmessages.rc: $(INCFILEDIR)\afsd_eventmessages.h
604
605 $(OUT)\afsd_service.res: afsd_service.rc afsd_eventmessages.rc AFS_component_version_number.h
606
607 $(OUT)\afslogon.res: afslogon.rc AFS_component_version_number.h
608
609 $(OUT)\libafsconf.res: libafsconf.rc AFS_component_version_number.h
610
611 ############################################################################
612 clean::
613         $(DEL) $(OUT)\*.res
614         $(DEL) afsrpc.h
615         $(DEL) afsrpc_?.*
616         $(DEL) ms-srvsvc.h
617         $(DEL) ms-srvsvc_?.*
618         $(DEL) ms-wkssvc.h
619         $(DEL) ms-wkssvc_?.*
620         $(DEL) afsd_eventmessages.h
621         $(DEL) afsd_eventmessages.rc
622         $(DEL) MSG?????.bin
623         $(DEL) $(CONF_DLLFILE)
624         $(DEL) $(LOGON_DLLFILE)
625
626 mkdir:
627
628 ############################################################################
629 # Tests
630
631 {test}.c{$(OUT)\}.obj:
632         $(C2OBJ) $<
633
634 test::
635
636 test:: btreetest
637
638 btreetest: "$(OUT)\btreetest.exe"
639         "$(OUT)\btreetest.exe"
640
641 $(OUT)\btreetest.exe: \
642                 $(OUT)\btreetest.obj \
643                 $(OUT)\cm_btree.obj \
644                 $(OUT)\cm_nls.obj \
645                 $(OUT)\cm_utils.obj \
646                 $(DESTDIR)\lib\libosi.lib
647         $(EXECONLINK)
648         $(_VC_MANIFEST_EMBED_EXE)
649         $(EXEPREP)