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