Home | History | Annotate | Line # | Download | only in gssapi
      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 
     32 RELDIR=lib\gssapi 
     33 
     34 !include ../../windows/NTMakefile.w32 
     35 
     36 krb5src = \
     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 
     92 mechsrc = \
     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 
    172 spnegosrc = \
    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 
    181 ntlmsrc = \
    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 
    222 gssapi_files = $(OBJ)\gssapi\asn1_gssapi_asn1.x
    223 
    224 spnego_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 
    250 INCFILES=				\
    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 
    267 all:: $(INCFILES)
    268 
    269 libgssapi_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 
    432 GCOPTS=-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 
    482 LIBGSSAPI_LIBS=\
    483         $(LIBHEIMBASE)  \
    484 	$(LIBROKEN)	\
    485 	$(LIBHEIMDAL)	\
    486 	$(LIBHEIMNTLM)	\
    487 	$(LIBCOMERR)
    488 
    489 LIBGSSAPI_SDKLIBS=\
    490 	$(PTHREAD_LIB)
    491 
    492 !ifndef STATICLIBS
    493 
    494 RES=$(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 
    508 clean::
    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 
    521 all:: $(LIBGSSAPI)
    522 
    523 clean::
    524 	-$(RM) $(LIBGSSAPI)
    525 
    526 prep:: mkdirs-gss
    527 
    528 mkdirs-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 
    545 clean::
    546 	-$(RM) $(OBJ)\ntlm\*.*
    547 	-$(RM) $(OBJ)\krb5\*.*
    548 	-$(RM) $(OBJ)\spnego\*.*
    549 	-$(RM) $(OBJ)\mech\*.*
    550 	-$(RM) $(OBJ)\gssapi\*.*
    551 
    552 all-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 
    575 test-exports:
    576 	$(PERL) ..\..\cf\w32-check-exported-symbols.pl --vs version-script.map --def libgssapi-exports.def
    577 
    578 test:: test-exports
    579 
    580 
    581 TEST_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 
    630 test-binaries: $(LIBGSSAPI) $(TEST_BINARIES)
    631 
    632 run-test:
    633 	cd $(OBJ)
    634 	-test_oid
    635 	-test_names
    636 	-test_cfx
    637 	-test_kcred
    638 	cd $(SRCDIR)
    639 
    640 test:: test-binaries run-test
    641