windows-vc-locks-and-more-20060115
[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"  -I..\kfw\inc\loadfuncs -I..\kfw\inc\krb5 -I..\kfw\inc\leash
9 AFSDEV_NETGUI = 1
10 RELDIR=WINNT\afsd
11 !INCLUDE ..\..\config\NTMakefile.$(SYS_NAME)
12 !INCLUDE ..\..\config\NTMakefile.version
13
14 EXEDIR = $(DESTDIR)\root.client\usr\vice\etc
15
16 ############################################################################
17 # Definitions for installing header files
18
19 INCFILEDIR = $(DESTDIR)\include\afs  # header file install directory
20
21 # afsdicon and below added for WINNT\extra support
22
23 INCFILES =\
24         $(INCFILEDIR)\afsd.h \
25         $(INCFILEDIR)\cm.h \
26         $(INCFILEDIR)\cm_buf.h \
27         $(INCFILEDIR)\cm_cell.h \
28         $(INCFILEDIR)\cm_config.h \
29         $(INCFILEDIR)\cm_conn.h \
30         $(INCFILEDIR)\cm_ioctl.h \
31         $(INCFILEDIR)\cm_scache.h \
32         $(INCFILEDIR)\cm_server.h \
33         $(INCFILEDIR)\cm_user.h \
34         $(INCFILEDIR)\cm_dns.h \
35         $(INCFILEDIR)\cm_utils.h \
36         $(INCFILEDIR)\fs_utils.h \
37         $(INCFILEDIR)\krb.h \
38         $(INCFILEDIR)\krb_prot.h \
39         $(INCFILEDIR)\cm_dir.h \
40         $(INCFILEDIR)\smb.h \
41         $(INCFILEDIR)\smb3.h \
42         $(INCFILEDIR)\smb_iocons.h \
43         $(INCFILEDIR)\smb_ioctl.h \
44         $(INCFILEDIR)\afsmsg95.h \
45         $(INCFILEDIR)\afsrpc.h \
46 !IFDEF OSICRASH
47         $(INCFILEDIR)\afsdcrash.h \
48 !ENDIF
49         $(INCFILEDIR)\cm_dns_private.h \
50         $(INCFILEDIR)\lanahelper.h \
51         $(INCFILEDIR)\afsdicon.h \
52         $(INCFILEDIR)\cm_callback.h \
53         $(INCFILEDIR)\cm_aclent.h \
54         $(INCFILEDIR)\cm_volume.h \
55         $(INCFILEDIR)\cm_dcache.h \
56         $(INCFILEDIR)\cm_access.h \
57         $(INCFILEDIR)\cm_vnodeops.h \
58         $(INCFILEDIR)\cm_dir.h \
59         $(INCFILEDIR)\cm_utils.h \
60         $(INCFILEDIR)\cm_daemon.h \
61         $(INCFILEDIR)\cm_ioctl.h \
62         $(INCFILEDIR)\cm_dnlc.h \
63         $(INCFILEDIR)\cm_buf.h \
64         $(INCFILEDIR)\cm_freelance.h \
65         $(INCFILEDIR)\cm_memmap.h \
66         $(INCFILEDIR)\afsd_eventlog.h \
67         $(INCFILEDIR)\afsd_eventmessages.h \
68         $(INCFILEDIR)\afskfw.h \
69         $(INCFILEDIR)\afsicf.h
70
71 IDLFILES =\
72         afsrpc.h $(OUT)\afsrpc_c.obj
73
74 CONFOBJS=$(OUT)\cm_config.obj \
75          $(OUT)\cm_dns.obj
76
77 $(CONFOBJS):
78
79 RXOBJS = $(OUT)\xdr_int32.obj $(OUT)\xdr_int64.obj
80
81 $(RXOBJS):
82
83 RX= ..\..\rx
84
85 $(RXOBJS): $(RX)\$$(@B).c
86         $(C2OBJ) -I$(RX) $**
87
88 $(IDLFILES):afsrpc.idl
89         midl $(MIDL_FLAGS) $(AFSDEV_AUXMIDLFLAGS) /app_config $?
90
91 RPCOBJS = $(OUT)\ifs_rpc.obj
92
93 $(RPCOBJS):..\afsrdr\ifs_rpc.c
94         $(C2OBJ) ..\afsrdr\ifs_rpc.c
95
96 AFSDOBJS=\
97         $(OUT)\ifs_rpc.obj \
98         $(OUT)\rawops.obj \
99         $(OUT)\afsdifs.obj \
100         $(OUT)\afsd_init.obj \
101         $(OUT)\cm_cell.obj \
102         $(OUT)\cm_server.obj \
103         $(OUT)\cm_volume.obj \
104         $(OUT)\cm_conn.obj \
105         $(OUT)\cm_user.obj \
106         $(OUT)\cm_buf.obj \
107         $(OUT)\cm_scache.obj \
108         $(OUT)\cm_dcache.obj \
109         $(OUT)\cm_access.obj \
110         $(OUT)\cm_callback.obj \
111         $(OUT)\cm_vnodeops.obj \
112         $(OUT)\cm_dir.obj \
113         $(OUT)\cm_utils.obj \
114         $(OUT)\largeintdotnet.obj \
115         $(OUT)\smb.obj \
116         $(OUT)\smb3.obj \
117         $(OUT)\smb_ioctl.obj \
118         $(OUT)\cm_ioctl.obj \
119         $(OUT)\cm_daemon.obj \
120         $(OUT)\cm_aclent.obj \
121         $(OUT)\cm_dnlc.obj \
122         $(OUT)\cm_rpc.obj \
123         $(OUT)\cm_memmap.obj \
124         $(OUT)\afsrpc_s.obj \
125 !IFDEF OSICRASH
126         $(OUT)\afsdcrash.obj \
127 !ENDIF
128         $(OUT)\cm_freelance.obj \
129         $(OUT)\afsd_eventlog.obj \
130         $(OUT)\afsd_flushvol.obj \
131         $(OUT)\afsicf.obj
132
133 $(AFSDOBJS):
134
135 $(OUT)\cm_conn.obj: cm_conn.c
136         $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
137
138 FSOBJS=$(OUT)\fs.obj $(OUT)\fs_utils.obj
139
140 CMDBGOBJS=$(OUT)\cmdebug.obj
141
142 $(CMDBGOBJS): $(AFSROOT)\src\venus\cmdebug.c
143         $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
144
145 SLOBJS=$(OUT)\symlink.obj $(OUT)\fs_utils.obj
146
147 ILIBDIR = $(DESTDIR)\lib
148
149 #                                                    
150 # Rules for message compiler info for logging events 
151 #                                                    
152 $(INCFILEDIR)\afsd_eventmessages.h:  afsd_eventmessages.mc         
153         mc afsd_eventmessages.mc                           
154                                                      
155 ############################################################################
156 #
157 # Flags for linking LOGON DLL'S
158 #
159
160 LOGONLINKFLAGS = -entry:DllEntryPoint
161
162
163 ############################################################################
164 #
165 # IDL COMPILATION
166 #
167
168 MIDL_FLAGS=/app_config \
169            /Zp4 \
170            /cpp_cmd $(cc) \
171            /cpp_opt "-E" \
172            /nologo
173
174 .SUFFIXES: .h .idl
175
176 .idl.h:
177         midl $(MIDL_FLAGS) $(AFSDEV_AUXMIDLFLAGS) $<
178
179 ############################################################################
180 # libafsconf.dll
181
182 CONF_DLLFILE = $(DESTDIR)\root.client\usr\vice\etc\libafsconf.dll
183
184 CONF_DLLLIBS = \
185     $(DESTDIR)\lib\afs\afsutil.lib \
186     $(DESTDIR)\lib\afs\afsreg.lib
187
188 $(CONF_DLLFILE): $(CONFOBJS) $(OUT)\libafsconf.res $(CONF_DLLLIBS)
189         $(DLLGUILINK) -def:libafsconf.def dnsapi.lib mpr.lib
190         $(_VC_MANIFEST_EMBED_DLL)
191         $(DLLPREP)
192         $(COPY) $*.lib $(ILIBDIR)
193         $(DEL) $*.lib $*.exp
194
195 ############################################################################
196 # lanahelper.lib
197
198 LANAHELPERLIB = $(DESTDIR)\lib\lanahelper.lib
199
200 LANAHELPERLIB_OBJS =\
201       $(OUT)\lanahelper.obj
202
203 $(LANAHELPERLIB_OBJS):
204
205 $(LANAHELPERLIB): $(LANAHELPERLIB_OBJS)
206       $(LIBARCH) netapi32.lib
207
208 ############################################################################
209 # afskfw.lib
210
211 AFSKFWLIB = $(DESTDIR)\lib\afskfw.lib
212
213 AFSKFWLIB_OBJS =\
214       $(OUT)\afskfw.obj
215
216 $(AFSKFWLIB_OBJS):
217
218 $(AFSKFWLIB): $(AFSKFWLIB_OBJS)
219       $(LIBARCH)
220
221 ############################################################################
222 # afslogon.dll
223
224 LOGON_DLLFILE = $(DESTDIR)\root.client\usr\vice\etc\afslogon.dll
225
226 LOGON_DLLOBJS =\
227     $(OUT)\afslogon.obj \
228     $(OUT)\logon_ad.obj \
229     $(OUT)\afslogon.res
230
231 LOGON_DLLLIBS =\
232     $(DESTDIR)\lib\afsauthent.lib \
233     $(DESTDIR)\lib\libafsconf.lib \
234     $(DESTDIR)\lib\afsrxkad.lib \
235     $(DESTDIR)\lib\afsdes.lib \
236     $(LANAHELPERLIB) \
237     $(AFSKFWLIB)
238
239 LOGON_DLLSDKLIBS =\
240         dnsapi.lib \
241         netapi32.lib \
242         mpr.lib \
243         advapi32.lib \
244         secur32.lib \
245         strsafe.lib \
246         oleaut32.lib \
247         ole32.lib \
248         adsiid.lib \
249         activeds.lib \
250     userenv.lib
251
252 $(LOGON_DLLFILE): $(LOGON_DLLOBJS) $(LOGON_DLLLIBS)
253         $(DLLGUILINK) $(LOGONLINKFLAGS) -def:afslogon.def $(LOGON_DLLSDKLIBS)
254         $(_VC_MANIFEST_EMBED_DLL)
255         $(DLLPREP)
256         $(COPY) $*.lib $(DESTDIR)\lib
257         $(DEL) $*.lib $*.exp
258
259 ############################################################################
260 # afslog95.dll
261
262 LOG95_DLLFILE = $(DESTDIR)\root.client\usr\vice\etc\afslog95.dll
263
264 LOG95_DLLOBJS =\
265         $(OUT)\afslog95.obj \
266         $(OUT)\afslog95.res
267
268 LOG95_DLLLIBS =\
269         $(DESTDIR)\lib\afsauthent.lib \
270         $(DESTDIR)\lib\libafsconf.lib
271
272 $(LOG95_DLLFILE): $(LOG95_DLLOBJS) $(LOG95_DLLLIBS)
273         $(DLLGUILINK) $(LOGONLINKFLAGS) -def:afslog95.def dnsapi.lib mpr.lib
274         $(DLLPREP)
275         $(COPY) $*.lib $(DESTDIR)\lib
276         $(DEL) $*.lib $*.exp
277
278 ############################################################################
279 # Install target; primary makefile target
280
281 install_objs: $(OUT)\cm_dns.obj $(OUT)\cm_config.obj $(LANAHELPERLIB) $(OUT)\afsicf.obj
282      $(COPY) $(OUT)\cm_dns.obj $(DESTDIR)\lib
283      $(COPY) $(OUT)\cm_config.obj $(DESTDIR)\lib
284      $(COPY) $(OUT)\afsicf.obj $(DESTDIR)\lib
285
286 install_headers: $(IDLFILES) $(INCFILES)
287
288 install: install_headers install_objs $(CONF_DLLFILE) \
289         $(EXEDIR)\klog.exe \
290         $(EXEDIR)\tokens.exe \
291         $(EXEDIR)\unlog.exe \
292         $(EXEDIR)\afsd_service.exe \
293         $(EXEDIR)\fs.exe \
294         $(EXEDIR)\symlink.exe \
295         $(EXEDIR)\afsdacl.exe \
296         $(LOGON_DLLFILE) \
297         $(EXEDIR)\afsshare.exe \
298         $(DESTDIR)\bin\kpasswd.exe $(EXEDIR)\cmdebug.exe $(EXEDIR)\afscpcc.exe
299
300 install9X: install_headers $(CONF_DLLFILE) \
301         $(EXEDIR)\klog.exe \
302         $(EXEDIR)\tokens.exe \
303         $(EXEDIR)\unlog.exe $(EXEDIR)\afsd.exe $(EXEDIR)\afsd_service.exe \
304         $(EXEDIR)\fs.exe $(EXEDIR)\symlink.exe \
305         $(LOGON_DLLFILE) $(LOG95_DLLFILE) \
306         $(EXEDIR)\afsshare.exe \
307         $(DESTDIR)\bin\kpasswd.exe
308
309 install_libutils: install_headers $(CONF_DLLFILE) \
310         $(EXEDIR)\klog.exe \
311         $(EXEDIR)\tokens.exe \
312         $(EXEDIR)\unlog.exe \
313         $(EXEDIR)\fs.exe $(EXEDIR)\symlink.exe \
314         $(EXEDIR)\afsshare.exe \
315         $(DESTDIR)\bin\kpasswd.exe $(EXEDIR)\cmdebug.exe
316
317 ############################################################################
318 # Local clean target; augments predefined clean target
319
320 ############################################################################
321 # assorted exe's
322
323 EXELIBS = \
324         $(DESTDIR)\lib\afs\afsauth.lib \
325         $(DESTDIR)\lib\afs\afskauth.lib \
326         $(DESTDIR)\lib\afs\afsprot.lib \
327         $(DESTDIR)\lib\afs\afspioctl.lib \
328         $(DESTDIR)\lib\afs\afsaudit.lib \
329         $(DESTDIR)\lib\afs\afsutil.lib \
330         $(DESTDIR)\lib\afs\afscom_err.lib \
331         $(DESTDIR)\lib\afs\afsreg.lib \
332         $(DESTDIR)\lib\afs\afscmd.lib \
333         $(DESTDIR)\lib\afsubik.lib \
334         $(DESTDIR)\lib\afsrxkad.lib \
335         $(DESTDIR)\lib\afsdes.lib \
336         $(DESTDIR)\lib\afsrx.lib \
337         $(DESTDIR)\lib\afslwp.lib \
338         $(DESTDIR)\lib\libosi.lib \
339         $(DESTDIR)\lib\libafsconf.lib
340
341 EXELIBS2 = \
342         $(DESTDIR)\lib\afsrpc.lib \
343         $(DESTDIR)\lib\afs\afsprot.lib \
344         $(DESTDIR)\lib\afs\afspioctl.lib \
345         $(DESTDIR)\lib\afs\afscom_err.lib \
346         $(DESTDIR)\lib\afs\afscmd.lib \
347         $(DESTDIR)\lib\afs\afsutil.lib \
348         $(DESTDIR)\lib\afsubik.lib \
349         $(DESTDIR)\lib\afsrxkad.lib \
350         $(DESTDIR)\lib\afsdes.lib \
351         $(DESTDIR)\lib\afslwp.lib \
352         $(DESTDIR)\lib\libosi.lib \
353         $(DESTDIR)\lib\libafsconf.lib
354
355 # klog.exe
356 $(EXEDIR)\klog.exe: $(OUT)\cklog.obj $(OUT)\klog.res $(EXELIBS)
357         $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib
358         $(_VC_MANIFEST_EMBED_EXE)
359         $(EXEPREP)
360
361 # tokens.exe
362 $(EXEDIR)\tokens.exe: $(OUT)\ctokens.obj $(OUT)\tokens.res $(EXELIBS)
363         $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib
364         $(_VC_MANIFEST_EMBED_EXE)
365         $(EXEPREP)
366
367 # unlog.exe
368 $(EXEDIR)\unlog.exe: $(OUT)\cunlog.obj $(OUT)\unlog.res $(EXELIBS)
369         $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib
370         $(_VC_MANIFEST_EMBED_EXE)
371         $(EXEPREP)
372
373 # afscpcc.exe
374 $(EXEDIR)\afscpcc.exe: $(OUT)\afscpcc.obj $(OUT)\afscpcc.res $(LOGON_DLLLIBS)
375         $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib
376         $(_VC_MANIFEST_EMBED_EXE)
377         $(EXEPREP)
378
379
380 # afsd.exe
381 AFSD_EXEFILE = $(EXEDIR)\afsd.exe
382
383 AFSD_SDKLIBS =\
384         netapi32.lib \
385         dnsapi.lib \
386         mpr.lib \
387         rpcrt4.lib \
388         user32.lib \
389         Dbghelp.lib \
390         strsafe.lib \
391         mpr.lib \
392         secur32.lib \
393         ole32.lib \
394         oleaut32.lib \
395         iphlpapi.lib
396
397 AFSD_EXELIBS =\
398         $(DESTDIR)\lib\libosi.lib \
399         $(DESTDIR)\lib\afsrpc.lib \
400         $(DESTDIR)\lib\afsauthent.lib \
401         $(DESTDIR)\lib\afs\mtafsvldb.lib \
402         $(DESTDIR)\lib\afs\mtafsint.lib \
403         $(DESTDIR)\lib\libafsconf.lib \
404         $(DESTDIR)\lib\afs\afsreg.lib \
405         $(LANAHELPERLIB)
406
407 $(AFSD_EXEFILE): $(OUT)\afsd.obj $(AFSDOBJS) $(OUT)\afsd.res  $(RXOBJS) $(AFSD_EXELIBS)
408         $(EXEGUILINK) $(AFSD_SDKLIBS)
409         $(_VC_MANIFEST_EMBED_EXE)
410         $(EXEPREP)
411
412 # afsd_service.exe
413 $(EXEDIR)\afsd_service.exe: $(OUT)\afsd_service.obj $(AFSDOBJS) $(OUT)\afsd_service.res  $(RXOBJS) $(AFSD_EXELIBS)
414         $(EXECONLINK) $(AFSD_SDKLIBS) /MAP /LARGEADDRESSAWARE
415         $(_VC_MANIFEST_EMBED_EXE)
416         $(EXEPREP)
417
418 # fs.exe
419 $(EXEDIR)\fs.exe: $(FSOBJS) $(OUT)\fs.res $(EXELIBS)
420         $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib
421         $(_VC_MANIFEST_EMBED_EXE)
422         $(EXEPREP)
423
424 # cmdebug.exe
425 $(EXEDIR)\cmdebug.exe: $(CMDBGOBJS) $(OUT)\cmdebug.res $(EXELIBS2)
426         $(EXECONLINK) $(EXELIBS2) dnsapi.lib mpr.lib iphlpapi.lib rpcrt4.lib
427         $(_VC_MANIFEST_EMBED_EXE)
428         $(EXEPREP)
429
430 # symlink.exe
431 $(EXEDIR)\symlink.exe: $(SLOBJS) $(OUT)\symlink.res  $(EXELIBS)
432         $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib
433         $(_VC_MANIFEST_EMBED_EXE)
434         $(EXEPREP)
435
436 # afsshare.exe
437 $(EXEDIR)\afsshare.exe: $(OUT)\afsshare.obj $(OUT)\afsshare.res
438         $(EXECONLINK)
439         $(_VC_MANIFEST_EMBED_EXE)
440         $(EXEPREP)
441
442 # afsdacl.exe
443 $(EXEDIR)\afsdacl.exe: $(OUT)\afsdacl.obj $(OUT)\afsdacl.res
444         $(EXECONLINK)
445         $(_VC_MANIFEST_EMBED_EXE)
446         $(EXEPREP)
447
448 # kpasswd.exe - built in kauth, but rebuild here to make pthread-based,
449 #    which is required for Windows 95.  At some point it would be nice
450 #    for all commands to be pthread based, in which case they should
451 #    be built in a separate directory (perhaps tbin ala tviced) or
452 #    libafsauthent should be built earlier so that each command can
453 #    be built in its native directory.
454
455 KAUTH = ..\..\kauth
456
457 KPASSWD_OBJS =\
458         $(OUT)\kpasswd.obj \
459         $(OUT)\kkids.obj \
460         $(OUT)\kautils.obj \
461         $(OUT)\$(KAUTH)\kpasswd.res
462
463 KPASSWD_LIBS =\
464         $(DESTDIR)\lib\afsauthent.lib \
465         $(DESTDIR)\lib\afsrpc.lib \
466         $(DESTDIR)\lib\afsrx.lib \
467         $(DESTDIR)\lib\afs\afscmd.lib \
468         $(DESTDIR)\lib\afsdes.lib \
469         $(DESTDIR)\lib\afs\afsutil.lib
470
471 $(OUT)\kpasswd.obj: $(KAUTH)/kpasswd.c
472         $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
473
474 $(OUT)\kkids.obj: $(KAUTH)/kkids.c
475         $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
476
477 $(OUT)\kautils.obj: $(KAUTH)/kautils.c
478         $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
479
480 $(OUT)\kpasswd.res: $(KAUTH)\kpasswd.rc
481     $(RC) /Fo$@ $**
482
483 $(DESTDIR)\bin\kpasswd.exe: $(KPASSWD_OBJS) $(KPASSWD_LIBS)
484         $(DEL) $(DESTDIR)\bin\kpasswd.exe
485         $(EXECONLINK)
486         $(_VC_MANIFEST_EMBED_EXE)
487         $(EXEPREP)
488
489
490 ############################################################################
491 # generate versioninfo resources
492
493 $(OUT)\afsshare.res: afsshare.rc AFS_component_version_number.h
494
495 $(OUT)\fs.res: fs.rc AFS_component_version_number.h
496
497 $(OUT)\symlink.res: symlink.rc AFS_component_version_number.h
498
499 $(OUT)\klog.res: klog.rc AFS_component_version_number.h
500
501 $(OUT)\tokens.res: tokens.rc AFS_component_version_number.h
502
503 $(OUT)\unlog.res: unlog.rc AFS_component_version_number.h
504
505 $(OUT)\afscpcc.res: afscpcc.rc AFS_component_version_number.h
506
507 afsd_eventmessages.rc: $(INCFILEDIR)\afsd_eventmessages.h
508
509 $(OUT)\afsd_service.res: afsd_service.rc afsd_eventmessages.rc AFS_component_version_number.h
510
511 $(OUT)\afslogon.res: afslogon.rc AFS_component_version_number.h
512
513 $(OUT)\afslog95.res: afslog95.rc AFS_component_version_number.h
514
515 $(OUT)\libafsconf.res: libafsconf.rc AFS_component_version_number.h
516
517 ############################################################################
518 clean::
519         $(DEL) $(OUT)\*.res
520         $(DEL) afsrpc.h
521         $(DEL) afsrpc_?.*
522         $(DEL) afsd_eventmessages.h
523         $(DEL) afsd_eventmessages.rc
524         $(DEL) MSG?????.bin
525         $(DEL) $(CONF_DLLFILE)
526         $(DEL) $(LOGON_DLLFILE)
527         $(DEL) $(LOG95_DLLFILE)
528
529 mkdir: