1########################################################################
2#
3# Copyright (c) 2009-2011, Secure Endpoints Inc.
4# All rights reserved.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:
9#
10# - Redistributions of source code must retain the above copyright
11#   notice, this list of conditions and the following disclaimer.
12#
13# - Redistributions in binary form must reproduce the above copyright
14#   notice, this list of conditions and the following disclaimer in
15#   the documentation and/or other materials provided with the
16#   distribution.
17#
18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29# POSSIBILITY OF SUCH DAMAGE.
30#
31
32RELDIR=lib\gssapi
33
34!include ../../windows/NTMakefile.w32
35
36krb5src = \
37          krb5/8003.c \
38          krb5/accept_sec_context.c \
39          krb5/acquire_cred.c \
40          krb5/add_cred.c \
41          krb5/address_to_krb5addr.c \
42          krb5/aeap.c \
43          krb5/arcfour.c \
44        krb5/authorize_localname.c \
45          krb5/canonicalize_name.c \
46          krb5/creds.c \
47          krb5/ccache_name.c \
48          krb5/cfx.c \
49          krb5/cfx.h \
50          krb5/compare_name.c \
51          krb5/compat.c \
52          krb5/context_time.c \
53          krb5/copy_ccache.c \
54          krb5/decapsulate.c \
55          krb5/delete_sec_context.c \
56          krb5/display_name.c \
57          krb5/display_status.c \
58          krb5/duplicate_name.c \
59          krb5/encapsulate.c \
60          krb5/export_name.c \
61          krb5/export_sec_context.c \
62          krb5/external.c \
63          krb5/get_mic.c \
64          krb5/gsskrb5_locl.h \
65          krb5/import_name.c \
66          krb5/import_sec_context.c \
67          krb5/indicate_mechs.c \
68          krb5/init.c \
69          krb5/init_sec_context.c \
70          krb5/inquire_context.c \
71          krb5/inquire_cred.c \
72          krb5/inquire_cred_by_mech.c \
73          krb5/inquire_cred_by_oid.c \
74          krb5/inquire_mechs_for_name.c \
75          krb5/inquire_names_for_mech.c \
76          krb5/inquire_sec_context_by_oid.c \
77        krb5/pname_to_uid.c \
78          krb5/process_context_token.c \
79          krb5/prf.c \
80          krb5/release_buffer.c \
81          krb5/release_cred.c \
82          krb5/release_name.c \
83          krb5/sequence.c \
84          krb5/store_cred.c \
85          krb5/set_cred_option.c \
86          krb5/set_sec_context_option.c \
87          krb5/ticket_flags.c \
88          krb5/unwrap.c \
89          krb5/verify_mic.c \
90          krb5/wrap.c
91
92mechsrc = \
93          mech/context.h \
94          mech/context.c \
95          mech/cred.h \
96          mech/gss_accept_sec_context.c \
97          mech/gss_acquire_cred.c \
98          mech/gss_acquire_cred_ext.c \
99          mech/gss_acquire_cred_with_password.c \
100          mech/gss_add_cred.c \
101          mech/gss_add_cred_with_password.c \
102          mech/gss_add_oid_set_member.c \
103          mech/gss_aeap.c \
104        mech/gss_authorize_localname.c \
105          mech/gss_buffer_set.c \
106          mech/gss_canonicalize_name.c \
107          mech/gss_compare_name.c \
108          mech/gss_context_time.c \
109          mech/gss_create_empty_oid_set.c \
110          mech/gss_cred.c \
111          mech/gss_decapsulate_token.c \
112          mech/gss_delete_name_attribute.c \
113          mech/gss_delete_sec_context.c \
114          mech/gss_display_name.c \
115          mech/gss_display_name_ext.c \
116          mech/gss_display_status.c \
117          mech/gss_duplicate_name.c \
118          mech/gss_duplicate_oid.c \
119          mech/gss_encapsulate_token.c \
120          mech/gss_export_name.c \
121          mech/gss_export_name_composite.c \
122          mech/gss_export_sec_context.c \
123          mech/gss_get_mic.c \
124          mech/gss_get_name_attribute.c \
125          mech/gss_import_name.c \
126          mech/gss_import_sec_context.c \
127          mech/gss_indicate_mechs.c \
128          mech/gss_init_sec_context.c \
129          mech/gss_inquire_context.c \
130          mech/gss_inquire_cred.c \
131          mech/gss_inquire_cred_by_mech.c \
132          mech/gss_inquire_cred_by_oid.c \
133          mech/gss_inquire_mechs_for_name.c \
134          mech/gss_inquire_name.c \
135          mech/gss_inquire_names_for_mech.c \
136          mech/gss_krb5.c \
137          mech/gss_mech_switch.c \
138          mech/gss_mo.c \
139          mech/gss_names.c \
140          mech/gss_oid.c \
141          mech/gss_oid_equal.c \
142          mech/gss_oid_to_str.c \
143          mech/gss_pname_to_uid.c \
144          mech/gss_process_context_token.c \
145          mech/gss_pseudo_random.c \
146          mech/gss_release_buffer.c \
147          mech/gss_release_cred.c \
148          mech/gss_release_name.c \
149          mech/gss_release_oid.c \
150          mech/gss_release_oid_set.c \
151          mech/gss_seal.c \
152          mech/gss_set_cred_option.c \
153          mech/gss_set_name_attribute.c \
154          mech/gss_set_sec_context_option.c \
155          mech/gss_sign.c \
156          mech/gss_store_cred.c \
157          mech/gss_test_oid_set_member.c \
158          mech/gss_unseal.c \
159          mech/gss_unwrap.c \
160          mech/gss_utils.c \
161          mech/gss_verify.c \
162          mech/gss_verify_mic.c \
163          mech/gss_wrap.c \
164          mech/gss_wrap_size_limit.c \
165          mech/gss_inquire_sec_context_by_oid.c \
166          mech/mech_switch.h \
167          mech/mechqueue.h \
168          mech/mech_locl.h \
169          mech/name.h \
170          mech/utils.h
171
172spnegosrc = \
173          spnego/accept_sec_context.c \
174          spnego/compat.c \
175          spnego/context_stubs.c \
176          spnego/cred_stubs.c \
177          spnego/external.c \
178          spnego/init_sec_context.c \
179          spnego/spnego_locl.h
180
181ntlmsrc = \
182          ntlm/accept_sec_context.c \
183          ntlm/acquire_cred.c \
184          ntlm/add_cred.c \
185          ntlm/canonicalize_name.c \
186          ntlm/compare_name.c \
187          ntlm/context_time.c \
188        ntlm/creds.c \
189          ntlm/crypto.c \
190          ntlm/delete_sec_context.c \
191          ntlm/display_name.c \
192          ntlm/display_status.c \
193          ntlm/duplicate_name.c \
194          ntlm/export_name.c \
195          ntlm/export_sec_context.c \
196          ntlm/external.c \
197          ntlm/ntlm.h \
198          ntlm/import_name.c \
199          ntlm/import_sec_context.c \
200          ntlm/indicate_mechs.c \
201          ntlm/init_sec_context.c \
202          ntlm/inquire_context.c \
203          ntlm/inquire_cred_by_mech.c \
204          ntlm/inquire_mechs_for_name.c \
205          ntlm/inquire_names_for_mech.c \
206        ntlm/inquire_sec_context_by_oid.c \
207        ntlm/iter_cred.c \
208          ntlm/process_context_token.c \
209          ntlm/release_cred.c \
210          ntlm/release_name.c \
211          ntlm/kdc.c
212
213$(OBJ)\ntlm\ntlm-private.h: $(ntlmsrc)
214          $(PERL) ../../cf/make-proto.pl -q -P remove -p $@ $(ntlmsrc)
215
216$(OBJ)\krb5\gsskrb5-private.h: $(krb5src)
217          $(PERL) ../../cf/make-proto.pl -q -P remove -p $@ $(krb5src)
218
219$(OBJ)\spnego\spnego-private.h: $(spnegosrc)
220          $(PERL) ../../cf/make-proto.pl -q -P remove -p $@ $(spnegosrc)
221
222gssapi_files = $(OBJ)\gssapi\asn1_gssapi_asn1.x
223
224spnego_files = $(OBJ)\spnego\asn1_spnego_asn1.x
225
226$(gssapi_files:.x=.c): $$(@R).x
227
228$(spnego_files:.x=.c): $$(@R).x
229
230$(gssapi_files) $(OBJ)\gssapi\gssapi_asn1.hx $(OBJ)\gssapi\gssapi_asn1-priv.hx: \
231$(BINDIR)\asn1_compile.exe mech\gssapi.asn1
232          cd $(OBJ)\gssapi
233          $(BINDIR)\asn1_compile.exe --one-code-file $(SRCDIR)\mech\gssapi.asn1 gssapi_asn1 \
234          || ( $(RM) $(OBJ)\gssapi\gssapi_asn1.h ; exit /b 1 )
235          cd $(SRCDIR)
236
237$(spnego_files) $(OBJ)\spnego\spnego_asn1.hx $(OBJ)\spnego\spnego_asn1-priv.hx: \
238$(BINDIR)\asn1_compile.exe spnego\spnego.asn1
239          cd $(OBJ)\spnego
240          $(BINDIR)\asn1_compile --one-code-file --sequence=MechTypeList \
241                    $(SRCDIR)\spnego\spnego.asn1 spnego_asn1 \
242          || ( $(RM) $(OBJ)\spnego\spnego_asn1.h ; exit /b 1 )
243          cd $(SRCDIR)
244
245$(OBJ)\gkrb5_err.c $(OBJ)\gkrb5_err.h: krb5\gkrb5_err.et
246          cd $(OBJ)
247          $(BINDIR)\compile_et.exe $(SRCDIR)\krb5\gkrb5_err.et
248          cd $(SRCDIR)
249
250INCFILES=                               \
251    $(INCDIR)\gssapi.h                            \
252    $(INCDIR)\gssapi\gssapi.h           \
253    $(INCDIR)\gssapi\gssapi_krb5.h      \
254    $(INCDIR)\gssapi\gssapi_oid.h       \
255    $(INCDIR)\gssapi\gssapi_ntlm.h      \
256    $(INCDIR)\gssapi\gssapi_spnego.h    \
257    $(INCDIR)\gssapi\gkrb5_err.h        \
258    $(OBJ)\ntlm\ntlm-private.h                    \
259    $(OBJ)\spnego\spnego-private.h      \
260    $(OBJ)\krb5\gsskrb5-private.h       \
261    $(OBJ)\gkrb5_err.h                            \
262    $(OBJ)\gssapi\gssapi_asn1.h                   \
263    $(OBJ)\gssapi\gssapi_asn1-priv.h    \
264    $(OBJ)\spnego\spnego_asn1.h                   \
265    $(OBJ)\spnego\spnego_asn1-priv.h
266
267all:: $(INCFILES)
268
269libgssapi_OBJs = \
270          $(OBJ)\krb5/8003.obj \
271          $(OBJ)\krb5/accept_sec_context.obj \
272          $(OBJ)\krb5/acquire_cred.obj \
273          $(OBJ)\krb5/add_cred.obj \
274          $(OBJ)\krb5/address_to_krb5addr.obj \
275        $(OBJ)\krb5/authorize_localname.obj \
276          $(OBJ)\krb5/aeap.obj \
277          $(OBJ)\krb5/arcfour.obj \
278          $(OBJ)\krb5/canonicalize_name.obj \
279          $(OBJ)\krb5/creds.obj \
280          $(OBJ)\krb5/ccache_name.obj \
281          $(OBJ)\krb5/cfx.obj \
282          $(OBJ)\krb5/compare_name.obj \
283          $(OBJ)\krb5/compat.obj \
284          $(OBJ)\krb5/context_time.obj \
285          $(OBJ)\krb5/copy_ccache.obj \
286          $(OBJ)\krb5/decapsulate.obj \
287          $(OBJ)\krb5/delete_sec_context.obj \
288          $(OBJ)\krb5/display_name.obj \
289          $(OBJ)\krb5/display_status.obj \
290          $(OBJ)\krb5/duplicate_name.obj \
291          $(OBJ)\krb5/encapsulate.obj \
292          $(OBJ)\krb5/export_name.obj \
293          $(OBJ)\krb5/export_sec_context.obj \
294          $(OBJ)\krb5/external.obj \
295          $(OBJ)\krb5/get_mic.obj \
296          $(OBJ)\krb5/import_name.obj \
297          $(OBJ)\krb5/import_sec_context.obj \
298          $(OBJ)\krb5/indicate_mechs.obj \
299          $(OBJ)\krb5/init.obj \
300          $(OBJ)\krb5/init_sec_context.obj \
301          $(OBJ)\krb5/inquire_context.obj \
302          $(OBJ)\krb5/inquire_cred.obj \
303          $(OBJ)\krb5/inquire_cred_by_mech.obj \
304          $(OBJ)\krb5/inquire_cred_by_oid.obj \
305          $(OBJ)\krb5/inquire_mechs_for_name.obj \
306          $(OBJ)\krb5/inquire_names_for_mech.obj \
307          $(OBJ)\krb5/inquire_sec_context_by_oid.obj \
308        $(OBJ)\krb5/pname_to_uid.obj \
309          $(OBJ)\krb5/process_context_token.obj \
310          $(OBJ)\krb5/prf.obj \
311          $(OBJ)\krb5/release_buffer.obj \
312          $(OBJ)\krb5/release_cred.obj \
313          $(OBJ)\krb5/release_name.obj \
314          $(OBJ)\krb5/sequence.obj \
315          $(OBJ)\krb5/store_cred.obj \
316          $(OBJ)\krb5/set_cred_option.obj \
317          $(OBJ)\krb5/set_sec_context_option.obj \
318          $(OBJ)\krb5/ticket_flags.obj \
319          $(OBJ)\krb5/unwrap.obj \
320          $(OBJ)\krb5/verify_mic.obj \
321          $(OBJ)\krb5/wrap.obj \
322          $(OBJ)\mech/context.obj \
323          $(OBJ)\mech/gss_accept_sec_context.obj \
324          $(OBJ)\mech/gss_acquire_cred.obj \
325          $(OBJ)\mech/gss_acquire_cred_ext.obj \
326          $(OBJ)\mech/gss_acquire_cred_with_password.obj \
327          $(OBJ)\mech/gss_add_cred.obj \
328          $(OBJ)\mech/gss_add_cred_with_password.obj \
329          $(OBJ)\mech/gss_add_oid_set_member.obj \
330          $(OBJ)\mech/gss_aeap.obj \
331          $(OBJ)\mech/gss_authorize_localname.obj \
332          $(OBJ)\mech/gss_buffer_set.obj \
333          $(OBJ)\mech/gss_canonicalize_name.obj \
334          $(OBJ)\mech/gss_compare_name.obj \
335          $(OBJ)\mech/gss_context_time.obj \
336          $(OBJ)\mech/gss_create_empty_oid_set.obj \
337          $(OBJ)\mech/gss_cred.obj \
338          $(OBJ)\mech/gss_decapsulate_token.obj \
339          $(OBJ)\mech/gss_delete_name_attribute.obj \
340          $(OBJ)\mech/gss_delete_sec_context.obj \
341          $(OBJ)\mech/gss_display_name.obj \
342          $(OBJ)\mech/gss_display_name_ext.obj \
343          $(OBJ)\mech/gss_display_status.obj \
344          $(OBJ)\mech/gss_duplicate_name.obj \
345          $(OBJ)\mech/gss_duplicate_oid.obj \
346          $(OBJ)\mech/gss_encapsulate_token.obj \
347          $(OBJ)\mech/gss_export_name.obj \
348          $(OBJ)\mech/gss_export_name_composite.obj \
349          $(OBJ)\mech/gss_export_sec_context.obj \
350          $(OBJ)\mech/gss_get_mic.obj \
351          $(OBJ)\mech/gss_get_name_attribute.obj \
352          $(OBJ)\mech/gss_import_name.obj \
353          $(OBJ)\mech/gss_import_sec_context.obj \
354          $(OBJ)\mech/gss_indicate_mechs.obj \
355          $(OBJ)\mech/gss_init_sec_context.obj \
356          $(OBJ)\mech/gss_inquire_context.obj \
357          $(OBJ)\mech/gss_inquire_cred.obj \
358          $(OBJ)\mech/gss_inquire_cred_by_mech.obj \
359          $(OBJ)\mech/gss_inquire_cred_by_oid.obj \
360          $(OBJ)\mech/gss_inquire_mechs_for_name.obj \
361          $(OBJ)\mech/gss_inquire_name.obj \
362          $(OBJ)\mech/gss_inquire_names_for_mech.obj \
363          $(OBJ)\mech/gss_krb5.obj \
364          $(OBJ)\mech/gss_mech_switch.obj \
365          $(OBJ)\mech/gss_mo.obj \
366          $(OBJ)\mech/gss_names.obj \
367          $(OBJ)\mech/gss_oid.obj \
368          $(OBJ)\mech/gss_oid_equal.obj \
369          $(OBJ)\mech/gss_oid_to_str.obj \
370          $(OBJ)\mech/gss_pname_to_uid.obj \
371          $(OBJ)\mech/gss_process_context_token.obj \
372          $(OBJ)\mech/gss_pseudo_random.obj \
373          $(OBJ)\mech/gss_release_buffer.obj \
374          $(OBJ)\mech/gss_release_cred.obj \
375          $(OBJ)\mech/gss_release_name.obj \
376          $(OBJ)\mech/gss_release_oid.obj \
377          $(OBJ)\mech/gss_release_oid_set.obj \
378          $(OBJ)\mech/gss_seal.obj \
379          $(OBJ)\mech/gss_set_cred_option.obj \
380          $(OBJ)\mech/gss_set_name_attribute.obj \
381          $(OBJ)\mech/gss_set_sec_context_option.obj \
382          $(OBJ)\mech/gss_sign.obj \
383          $(OBJ)\mech/gss_store_cred.obj \
384          $(OBJ)\mech/gss_test_oid_set_member.obj \
385          $(OBJ)\mech/gss_unseal.obj \
386          $(OBJ)\mech/gss_unwrap.obj \
387          $(OBJ)\mech/gss_utils.obj \
388          $(OBJ)\mech/gss_verify.obj \
389          $(OBJ)\mech/gss_verify_mic.obj \
390          $(OBJ)\mech/gss_wrap.obj \
391          $(OBJ)\mech/gss_wrap_size_limit.obj \
392          $(OBJ)\mech/gss_inquire_sec_context_by_oid.obj \
393          $(OBJ)\spnego/accept_sec_context.obj \
394          $(OBJ)\spnego/compat.obj \
395          $(OBJ)\spnego/context_stubs.obj \
396          $(OBJ)\spnego/cred_stubs.obj \
397          $(OBJ)\spnego/external.obj \
398          $(OBJ)\spnego/init_sec_context.obj \
399          $(OBJ)\ntlm/accept_sec_context.obj \
400          $(OBJ)\ntlm/acquire_cred.obj \
401          $(OBJ)\ntlm/add_cred.obj \
402          $(OBJ)\ntlm/canonicalize_name.obj \
403          $(OBJ)\ntlm/compare_name.obj \
404          $(OBJ)\ntlm/context_time.obj \
405        $(OBJ)\ntlm/creds.obj \
406          $(OBJ)\ntlm/crypto.obj \
407          $(OBJ)\ntlm/delete_sec_context.obj \
408          $(OBJ)\ntlm/display_name.obj \
409          $(OBJ)\ntlm/display_status.obj \
410          $(OBJ)\ntlm/duplicate_name.obj \
411          $(OBJ)\ntlm/export_name.obj \
412          $(OBJ)\ntlm/export_sec_context.obj \
413          $(OBJ)\ntlm/external.obj \
414          $(OBJ)\ntlm/import_name.obj \
415          $(OBJ)\ntlm/import_sec_context.obj \
416          $(OBJ)\ntlm/indicate_mechs.obj \
417          $(OBJ)\ntlm/init_sec_context.obj \
418          $(OBJ)\ntlm/inquire_context.obj \
419          $(OBJ)\ntlm/inquire_cred_by_mech.obj \
420          $(OBJ)\ntlm/inquire_mechs_for_name.obj \
421          $(OBJ)\ntlm/inquire_names_for_mech.obj \
422        $(OBJ)\ntlm/inquire_sec_context_by_oid.obj \
423        $(OBJ)\ntlm/iter_cred.obj \
424          $(OBJ)\ntlm/process_context_token.obj \
425          $(OBJ)\ntlm/release_cred.obj \
426          $(OBJ)\ntlm/release_name.obj \
427          $(OBJ)\ntlm/kdc.obj \
428          $(OBJ)\gkrb5_err.obj \
429          $(spnego_files:.x=.obj) \
430          $(gssapi_files:.x=.obj)
431
432GCOPTS=-I$(SRCDIR) -I$(OBJ) -Igssapi -DBUILD_GSSAPI_LIB
433
434{$(OBJ)\krb5}.c{$(OBJ)\krb5}.obj::
435          $(C2OBJ_NP) -Fo$(OBJ)\krb5\ -Fd$(OBJ)\krb5\ -I$(OBJ)\krb5 $(GCOPTS)
436
437{krb5}.c{$(OBJ)\krb5}.obj::
438          $(C2OBJ_NP) -Fo$(OBJ)\krb5\ -Fd$(OBJ)\krb5\ -I$(OBJ)\krb5 $(GCOPTS) -DASN1_LIB
439
440{$(OBJ)\mech}.c{$(OBJ)\mech}.obj::
441          $(C2OBJ_NP) -Fo$(OBJ)\mech\ -Fd$(OBJ)\mech\ -I$(OBJ)\mech $(GCOPTS)
442
443{mech}.c{$(OBJ)\mech}.obj::
444          $(C2OBJ_NP) -Fo$(OBJ)\mech\ -Fd$(OBJ)\mech\ -I$(OBJ)\mech -I$(OBJ)\gssapi $(GCOPTS) -DASN1_LIB
445
446{$(OBJ)\ntlm}.c{$(OBJ)\ntlm}.obj::
447          $(C2OBJ_NP) -Fo$(OBJ)\ntlm\ -Fd$(OBJ)\ntlm\ -I$(OBJ)\ntlm $(GCOPTS)
448
449{ntlm}.c{$(OBJ)\ntlm}.obj::
450          $(C2OBJ_NP) -Fo$(OBJ)\ntlm\ -Fd$(OBJ)\ntlm\ -I$(OBJ)\ntlm $(GCOPTS) -DASN1_LIB
451
452{$(OBJ)\spnego}.c{$(OBJ)\spnego}.obj::
453          $(C2OBJ_NP) -Fo$(OBJ)\spnego\ -Fd$(OBJ)\spnego\ -I$(OBJ)\spnego $(GCOPTS)
454
455{spnego}.c{$(OBJ)\spnego}.obj::
456          $(C2OBJ_NP) -Fo$(OBJ)\spnego\ -Fd$(OBJ)\spnego\ -I$(OBJ)\spnego -Imech $(GCOPTS) -DASN1_LIB
457
458{$(OBJ)\gssapi}.c{$(OBJ)\gssapi}.obj::
459          $(C2OBJ_NP) -Fo$(OBJ)\gssapi\ -Fd$(OBJ)\gssapi\ -I$(OBJ)\gssapi $(GCOPTS)
460
461{$(OBJ)}.c{$(OBJ)}.obj::
462          $(C2OBJ_P) $(GCOPTS)
463
464{$(OBJ)\spnego}.x{$(OBJ)\spnego}.c:
465          $(CP) $** $@
466
467{$(OBJ)\gssapi}.x{$(OBJ)\gssapi}.c:
468          $(CP) $** $@
469
470{gssapi}.h{$(INCDIR)\gssapi}.h:
471          $(CP) $** $@
472
473{$(OBJ)}.h{$(INCDIR)\gssapi}.h:
474          $(CP) $** $@
475
476{$(OBJ)\gssapi}.hx{$(OBJ)\gssapi}.h:
477          $(CP) $** $@
478
479{$(OBJ)\spnego}.hx{$(OBJ)\spnego}.h:
480          $(CP) $** $@
481
482LIBGSSAPI_LIBS=\
483        $(LIBHEIMBASE)  \
484          $(LIBROKEN)         \
485          $(LIBHEIMDAL)       \
486          $(LIBHEIMNTLM)      \
487          $(LIBCOMERR)
488
489LIBGSSAPI_SDKLIBS=\
490          $(PTHREAD_LIB)
491
492!ifndef STATICLIBS
493
494RES=$(OBJ)\libgssapi-version.res
495
496$(BINDIR)\gssapi.dll: $(libgssapi_OBJs) $(RES)
497          $(DLLGUILINK_C) -implib:$(LIBGSSAPI)    \
498                    -out:$(BINDIR)\gssapi.dll     \
499                    -def:libgssapi-exports.def    \
500                    $(LIBGSSAPI_LIBS) $(RES) $(LIBGSSAPI_SDKLIBS) @<<
501$(libgssapi_OBJs: =
502)
503<<
504          $(DLLPREP_NODIST)
505
506$(LIBGSSAPI): $(BINDIR)\gssapi.dll
507
508clean::
509          -$(RM) $(BINDIR)\gssapi.*
510
511!else
512
513$(LIBGSSAPI): $(libgssapi_OBJs)
514          $(LIBCON_C) -OUT:$@ $(LIBGSSAPI_LIBS) $(LIBGSSAPI_SDKLIBS) @<<
515$(libgssapi_OBJs: =
516)
517<<
518
519!endif
520
521all:: $(LIBGSSAPI)
522
523clean::
524          -$(RM) $(LIBGSSAPI)
525
526prep:: mkdirs-gss
527
528mkdirs-gss:
529!if !exist($(OBJ)\ntlm)
530          $(MKDIR) $(OBJ)\ntlm
531!endif
532!if !exist($(OBJ)\krb5)
533          $(MKDIR) $(OBJ)\krb5
534!endif
535!if !exist($(OBJ)\spnego)
536          $(MKDIR) $(OBJ)\spnego
537!endif
538!if !exist($(OBJ)\mech)
539          $(MKDIR) $(OBJ)\mech
540!endif
541!if !exist($(OBJ)\gssapi)
542          $(MKDIR) $(OBJ)\gssapi
543!endif
544
545clean::
546          -$(RM) $(OBJ)\ntlm\*.*
547          -$(RM) $(OBJ)\krb5\*.*
548          -$(RM) $(OBJ)\spnego\*.*
549          -$(RM) $(OBJ)\mech\*.*
550          -$(RM) $(OBJ)\gssapi\*.*
551
552all-tools:: $(BINDIR)\gsstool.exe
553
554$(BINDIR)\gsstool.exe: $(OBJ)\gsstool.obj $(OBJ)\gss-commands.obj $(LIBGSSAPI) $(LIBROKEN) $(LIBSL) $(LIBVERS)
555          $(EXECONLINK)
556          $(EXEPREP)
557
558$(OBJ)\gss-commands.c $(OBJ)\gss-commands.h: gss-commands.in
559          cd $(OBJ)
560          $(CP) $(SRCDIR)\gss-commands.in gss-commands.in
561          $(BINDIR)\slc.exe gss-commands.in
562          cd $(SRCDIR)
563
564!ifdef ELISP
565# This macro invocation is used to update the libgssapi_OBJs
566# definition below (generate-obj-macro is defined in maint.el):
567
568(generate-obj-macro "libgssapi_OBJs"
569                      (concat "\t$(OBJ)\\gkrb5_err.obj \\\n"
570                            "\t$(spnego_files:.x=.obj) \\\n"
571                            "\t$(gssapi_files:.x=.obj)")
572                    "krb5src" "mechsrc" "spnegosrc" "ntlmsrc")
573!endif
574
575test-exports:
576          $(PERL) ..\..\cf\w32-check-exported-symbols.pl --vs version-script.map --def libgssapi-exports.def
577
578test:: test-exports
579
580
581TEST_BINARIES=\
582          $(OBJ)\test_oid.exe \
583          $(OBJ)\test_names.exe         \
584          $(OBJ)\test_cfx.exe \
585          $(OBJ)\test_acquire_cred.exe  \
586          $(OBJ)\test_cred.exe          \
587          $(OBJ)\test_kcred.exe         \
588          $(OBJ)\test_context.exe       \
589          $(OBJ)\test_ntlm.exe
590
591$(OBJ)\test_oid.exe: $(OBJ)\test_oid.obj $(LIBGSSAPI) $(LIBROKEN)
592          $(EXECONLINK)
593          $(EXEPREP_NODIST)
594
595$(OBJ)\test_names.exe: $(OBJ)\test_names.obj $(LIBGSSAPI) $(LIBROKEN) $(LIBVERS)
596          $(EXECONLINK)
597          $(EXEPREP_NODIST)
598
599$(OBJ)\test_cfx.exe: $(OBJ)\krb5\test_cfx.obj $(LIBHEIMDAL) $(LIBGSSAPI) $(LIBROKEN)
600          $(EXECONLINK)
601          $(EXEPREP_NODIST)
602
603$(OBJ)\test_acquire_cred.exe: $(OBJ)\test_acquire_cred.obj $(OBJ)\test_common.obj \
604                    $(LIBGSSAPI) $(LIBROKEN) $(LIBVERS)
605          $(EXECONLINK)
606          $(EXEPREP_NODIST)
607
608$(OBJ)\test_cred.exe: $(OBJ)\test_cred.obj $(LIBGSSAPI) $(LIBROKEN) $(LIBVERS)
609          $(EXECONLINK)
610          $(EXEPREP_NODIST)
611
612$(OBJ)\test_kcred.exe: $(OBJ)\test_kcred.obj $(LIBGSSAPI) $(LIBHEIMDAL)         \
613                    $(LIBROKEN) $(LIBVERS)
614          $(EXECONLINK)
615          $(EXEPREP_NODIST)
616
617$(OBJ)\test_context.exe: $(OBJ)\test_context.obj $(OBJ)\test_common.obj         \
618                    $(LIBGSSAPI) $(LIBHEIMDAL) $(LIBROKEN) $(LIBVERS)
619          $(EXECONLINK)
620          $(EXEPREP_NODIST)
621
622$(OBJ)\test_ntlm.exe: $(OBJ)\test_ntlm.obj $(OBJ)\test_common.obj     \
623                    $(LIBGSSAPI) $(LIBHEIMNTLM) $(LIBROKEN) $(LIBVERS)
624          $(EXECONLINK)
625          $(EXEPREP_NODIST)
626
627{}.c{$(OBJ)}.obj::
628          $(C2OBJ_P) -I$(OBJ)\krb5 -I$(OBJ) -I$(SRCDIR) -I$(SRCDIR)\gssapi
629
630test-binaries: $(LIBGSSAPI) $(TEST_BINARIES)
631
632run-test:
633          cd $(OBJ)
634          -test_oid
635          -test_names
636          -test_cfx
637          -test_kcred
638          cd $(SRCDIR)
639
640test:: test-binaries run-test
641