Home | History | Annotate | Line # | Download | only in gssapi
NTMakefile revision 1.1
      1 ########################################################################
      2 #
      3 # Copyright (c) 2009, 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/canonicalize_name.c \
     45 	krb5/creds.c \
     46 	krb5/ccache_name.c \
     47 	krb5/cfx.c \
     48 	krb5/cfx.h \
     49 	krb5/compare_name.c \
     50 	krb5/compat.c \
     51 	krb5/context_time.c \
     52 	krb5/copy_ccache.c \
     53 	krb5/decapsulate.c \
     54 	krb5/delete_sec_context.c \
     55 	krb5/display_name.c \
     56 	krb5/display_status.c \
     57 	krb5/duplicate_name.c \
     58 	krb5/encapsulate.c \
     59 	krb5/export_name.c \
     60 	krb5/export_sec_context.c \
     61 	krb5/external.c \
     62 	krb5/get_mic.c \
     63 	krb5/gsskrb5_locl.h \
     64 	krb5/import_name.c \
     65 	krb5/import_sec_context.c \
     66 	krb5/indicate_mechs.c \
     67 	krb5/init.c \
     68 	krb5/init_sec_context.c \
     69 	krb5/inquire_context.c \
     70 	krb5/inquire_cred.c \
     71 	krb5/inquire_cred_by_mech.c \
     72 	krb5/inquire_cred_by_oid.c \
     73 	krb5/inquire_mechs_for_name.c \
     74 	krb5/inquire_names_for_mech.c \
     75 	krb5/inquire_sec_context_by_oid.c \
     76 	krb5/process_context_token.c \
     77 	krb5/prf.c \
     78 	krb5/release_buffer.c \
     79 	krb5/release_cred.c \
     80 	krb5/release_name.c \
     81 	krb5/sequence.c \
     82 	krb5/store_cred.c \
     83 	krb5/set_cred_option.c \
     84 	krb5/set_sec_context_option.c \
     85 	krb5/ticket_flags.c \
     86 	krb5/unwrap.c \
     87 	krb5/verify_mic.c \
     88 	krb5/wrap.c
     89 
     90 mechsrc = \
     91 	mech/context.h \
     92 	mech/context.c \
     93 	mech/cred.h \
     94 	mech/gss_accept_sec_context.c \
     95 	mech/gss_acquire_cred.c \
     96 	mech/gss_add_cred.c \
     97 	mech/gss_add_oid_set_member.c \
     98 	mech/gss_aeap.c \
     99 	mech/gss_buffer_set.c \
    100 	mech/gss_canonicalize_name.c \
    101 	mech/gss_compare_name.c \
    102 	mech/gss_context_time.c \
    103 	mech/gss_create_empty_oid_set.c \
    104 	mech/gss_cred.c \
    105 	mech/gss_decapsulate_token.c \
    106 	mech/gss_delete_sec_context.c \
    107 	mech/gss_display_name.c \
    108 	mech/gss_display_status.c \
    109 	mech/gss_duplicate_name.c \
    110 	mech/gss_duplicate_oid.c \
    111 	mech/gss_encapsulate_token.c \
    112 	mech/gss_export_name.c \
    113 	mech/gss_export_sec_context.c \
    114 	mech/gss_get_mic.c \
    115 	mech/gss_import_name.c \
    116 	mech/gss_import_sec_context.c \
    117 	mech/gss_indicate_mechs.c \
    118 	mech/gss_init_sec_context.c \
    119 	mech/gss_inquire_context.c \
    120 	mech/gss_inquire_cred.c \
    121 	mech/gss_inquire_cred_by_mech.c \
    122 	mech/gss_inquire_cred_by_oid.c \
    123 	mech/gss_inquire_mechs_for_name.c \
    124 	mech/gss_inquire_names_for_mech.c \
    125 	mech/gss_krb5.c \
    126 	mech/gss_mech_switch.c \
    127 	mech/gss_mo.c \
    128 	mech/gss_names.c \
    129 	mech/gss_oid.c \
    130 	mech/gss_oid_equal.c \
    131 	mech/gss_oid_to_str.c \
    132 	mech/gss_process_context_token.c \
    133 	mech/gss_pseudo_random.c \
    134 	mech/gss_release_buffer.c \
    135 	mech/gss_release_cred.c \
    136 	mech/gss_release_name.c \
    137 	mech/gss_release_oid.c \
    138 	mech/gss_release_oid_set.c \
    139 	mech/gss_seal.c \
    140 	mech/gss_set_cred_option.c \
    141 	mech/gss_set_sec_context_option.c \
    142 	mech/gss_sign.c \
    143 	mech/gss_store_cred.c \
    144 	mech/gss_test_oid_set_member.c \
    145 	mech/gss_unseal.c \
    146 	mech/gss_unwrap.c \
    147 	mech/gss_utils.c \
    148 	mech/gss_verify.c \
    149 	mech/gss_verify_mic.c \
    150 	mech/gss_wrap.c \
    151 	mech/gss_wrap_size_limit.c \
    152 	mech/gss_inquire_sec_context_by_oid.c \
    153 	mech/mech_switch.h \
    154 	mech/mechqueue.h \
    155 	mech/mech_locl.h \
    156 	mech/name.h \
    157 	mech/utils.h
    158 
    159 spnegosrc = \
    160 	spnego/accept_sec_context.c \
    161 	spnego/compat.c \
    162 	spnego/context_stubs.c \
    163 	spnego/cred_stubs.c \
    164 	spnego/external.c \
    165 	spnego/init_sec_context.c \
    166 	spnego/spnego_locl.h
    167 
    168 ntlmsrc = \
    169 	ntlm/accept_sec_context.c \
    170 	ntlm/acquire_cred.c \
    171 	ntlm/add_cred.c \
    172 	ntlm/canonicalize_name.c \
    173 	ntlm/compare_name.c \
    174 	ntlm/context_time.c \
    175 	ntlm/crypto.c \
    176 	ntlm/delete_sec_context.c \
    177 	ntlm/display_name.c \
    178 	ntlm/display_status.c \
    179 	ntlm/duplicate_name.c \
    180 	ntlm/export_name.c \
    181 	ntlm/export_sec_context.c \
    182 	ntlm/external.c \
    183 	ntlm/ntlm.h \
    184 	ntlm/import_name.c \
    185 	ntlm/import_sec_context.c \
    186 	ntlm/indicate_mechs.c \
    187 	ntlm/init_sec_context.c \
    188 	ntlm/inquire_context.c \
    189 	ntlm/inquire_cred.c \
    190 	ntlm/inquire_cred_by_mech.c \
    191 	ntlm/inquire_mechs_for_name.c \
    192 	ntlm/inquire_names_for_mech.c \
    193 	ntlm/process_context_token.c \
    194 	ntlm/release_cred.c \
    195 	ntlm/release_name.c \
    196 	ntlm/kdc.c
    197 
    198 $(OBJ)\ntlm\ntlm-private.h: $(ntlmsrc)
    199 	$(PERL) ../../cf/make-proto.pl -q -P remove -p $@ $(ntlmsrc)
    200 
    201 $(OBJ)\krb5\gsskrb5-private.h: $(krb5src)
    202 	$(PERL) ../../cf/make-proto.pl -q -P remove -p $@ $(krb5src)
    203 
    204 $(OBJ)\spnego\spnego-private.h: $(spnegosrc)
    205 	$(PERL) ../../cf/make-proto.pl -q -P remove -p $@ $(spnegosrc)
    206 
    207 gssapi_files = $(OBJ)\gssapi\asn1_gssapi_asn1.x
    208 
    209 spnego_files = $(OBJ)\spnego\asn1_spnego_asn1.x
    210 
    211 $(gssapi_files:.x=.c): $$(@R).x
    212 
    213 $(spnego_files:.x=.c): $$(@R).x
    214 
    215 $(gssapi_files) $(OBJ)\gssapi\gssapi_asn1.hx $(OBJ)\gssapi\gssapi_asn1-priv.hx: \
    216 $(BINDIR)\asn1_compile.exe mech\gssapi.asn1
    217 	cd $(OBJ)\gssapi
    218 	$(BINDIR)\asn1_compile.exe --one-code-file $(SRCDIR)\mech\gssapi.asn1 gssapi_asn1 \
    219 	|| ( $(RM) $(OBJ)\gssapi\gssapi_asn1.h ; exit /b 1 )
    220 	cd $(SRCDIR)
    221 
    222 $(spnego_files) $(OBJ)\spnego\spnego_asn1.hx $(OBJ)\spnego\spnego_asn1-priv.hx: \
    223 $(BINDIR)\asn1_compile.exe spnego\spnego.asn1
    224 	cd $(OBJ)\spnego
    225 	$(BINDIR)\asn1_compile --one-code-file --sequence=MechTypeList \
    226 		$(SRCDIR)\spnego\spnego.asn1 spnego_asn1 \
    227 	|| ( $(RM) $(OBJ)\spnego\spnego_asn1.h ; exit /b 1 )
    228 	cd $(SRCDIR)
    229 
    230 $(OBJ)\gkrb5_err.c $(OBJ)\gkrb5_err.h: krb5\gkrb5_err.et
    231 	cd $(OBJ)
    232 	$(BINDIR)\compile_et.exe $(SRCDIR)\krb5\gkrb5_err.et
    233 	cd $(SRCDIR)
    234 
    235 INCFILES=				\
    236     $(INCDIR)\gssapi.h			\
    237     $(INCDIR)\gssapi\gssapi.h		\
    238     $(INCDIR)\gssapi\gssapi_krb5.h	\
    239     $(INCDIR)\gssapi\gssapi_oid.h	\
    240     $(INCDIR)\gssapi\gssapi_ntlm.h	\
    241     $(INCDIR)\gssapi\gssapi_spnego.h	\
    242     $(INCDIR)\gssapi\gkrb5_err.h	\
    243     $(OBJ)\ntlm\ntlm-private.h		\
    244     $(OBJ)\spnego\spnego-private.h	\
    245     $(OBJ)\krb5\gsskrb5-private.h	\
    246     $(OBJ)\gkrb5_err.h			\
    247     $(OBJ)\gssapi\gssapi_asn1.h		\
    248     $(OBJ)\gssapi\gssapi_asn1-priv.h	\
    249     $(OBJ)\spnego\spnego_asn1.h		\
    250     $(OBJ)\spnego\spnego_asn1-priv.h
    251 
    252 all:: $(INCFILES)
    253 
    254 libgssapi_OBJs = \
    255 	$(OBJ)\krb5/8003.obj \
    256 	$(OBJ)\krb5/accept_sec_context.obj \
    257 	$(OBJ)\krb5/acquire_cred.obj \
    258 	$(OBJ)\krb5/add_cred.obj \
    259 	$(OBJ)\krb5/address_to_krb5addr.obj \
    260 	$(OBJ)\krb5/aeap.obj \
    261 	$(OBJ)\krb5/arcfour.obj \
    262 	$(OBJ)\krb5/canonicalize_name.obj \
    263 	$(OBJ)\krb5/creds.obj \
    264 	$(OBJ)\krb5/ccache_name.obj \
    265 	$(OBJ)\krb5/cfx.obj \
    266 	$(OBJ)\krb5/compare_name.obj \
    267 	$(OBJ)\krb5/compat.obj \
    268 	$(OBJ)\krb5/context_time.obj \
    269 	$(OBJ)\krb5/copy_ccache.obj \
    270 	$(OBJ)\krb5/decapsulate.obj \
    271 	$(OBJ)\krb5/delete_sec_context.obj \
    272 	$(OBJ)\krb5/display_name.obj \
    273 	$(OBJ)\krb5/display_status.obj \
    274 	$(OBJ)\krb5/duplicate_name.obj \
    275 	$(OBJ)\krb5/encapsulate.obj \
    276 	$(OBJ)\krb5/export_name.obj \
    277 	$(OBJ)\krb5/export_sec_context.obj \
    278 	$(OBJ)\krb5/external.obj \
    279 	$(OBJ)\krb5/get_mic.obj \
    280 	$(OBJ)\krb5/import_name.obj \
    281 	$(OBJ)\krb5/import_sec_context.obj \
    282 	$(OBJ)\krb5/indicate_mechs.obj \
    283 	$(OBJ)\krb5/init.obj \
    284 	$(OBJ)\krb5/init_sec_context.obj \
    285 	$(OBJ)\krb5/inquire_context.obj \
    286 	$(OBJ)\krb5/inquire_cred.obj \
    287 	$(OBJ)\krb5/inquire_cred_by_mech.obj \
    288 	$(OBJ)\krb5/inquire_cred_by_oid.obj \
    289 	$(OBJ)\krb5/inquire_mechs_for_name.obj \
    290 	$(OBJ)\krb5/inquire_names_for_mech.obj \
    291 	$(OBJ)\krb5/inquire_sec_context_by_oid.obj \
    292 	$(OBJ)\krb5/process_context_token.obj \
    293 	$(OBJ)\krb5/prf.obj \
    294 	$(OBJ)\krb5/release_buffer.obj \
    295 	$(OBJ)\krb5/release_cred.obj \
    296 	$(OBJ)\krb5/release_name.obj \
    297 	$(OBJ)\krb5/sequence.obj \
    298 	$(OBJ)\krb5/store_cred.obj \
    299 	$(OBJ)\krb5/set_cred_option.obj \
    300 	$(OBJ)\krb5/set_sec_context_option.obj \
    301 	$(OBJ)\krb5/ticket_flags.obj \
    302 	$(OBJ)\krb5/unwrap.obj \
    303 	$(OBJ)\krb5/verify_mic.obj \
    304 	$(OBJ)\krb5/wrap.obj \
    305 	$(OBJ)\mech/context.obj \
    306 	$(OBJ)\mech/gss_accept_sec_context.obj \
    307 	$(OBJ)\mech/gss_acquire_cred.obj \
    308 	$(OBJ)\mech/gss_add_cred.obj \
    309 	$(OBJ)\mech/gss_add_oid_set_member.obj \
    310 	$(OBJ)\mech/gss_aeap.obj \
    311 	$(OBJ)\mech/gss_buffer_set.obj \
    312 	$(OBJ)\mech/gss_canonicalize_name.obj \
    313 	$(OBJ)\mech/gss_compare_name.obj \
    314 	$(OBJ)\mech/gss_context_time.obj \
    315 	$(OBJ)\mech/gss_create_empty_oid_set.obj \
    316 	$(OBJ)\mech/gss_cred.obj \
    317 	$(OBJ)\mech/gss_decapsulate_token.obj \
    318 	$(OBJ)\mech/gss_delete_sec_context.obj \
    319 	$(OBJ)\mech/gss_display_name.obj \
    320 	$(OBJ)\mech/gss_display_status.obj \
    321 	$(OBJ)\mech/gss_duplicate_name.obj \
    322 	$(OBJ)\mech/gss_duplicate_oid.obj \
    323 	$(OBJ)\mech/gss_encapsulate_token.obj \
    324 	$(OBJ)\mech/gss_export_name.obj \
    325 	$(OBJ)\mech/gss_export_sec_context.obj \
    326 	$(OBJ)\mech/gss_get_mic.obj \
    327 	$(OBJ)\mech/gss_import_name.obj \
    328 	$(OBJ)\mech/gss_import_sec_context.obj \
    329 	$(OBJ)\mech/gss_indicate_mechs.obj \
    330 	$(OBJ)\mech/gss_init_sec_context.obj \
    331 	$(OBJ)\mech/gss_inquire_context.obj \
    332 	$(OBJ)\mech/gss_inquire_cred.obj \
    333 	$(OBJ)\mech/gss_inquire_cred_by_mech.obj \
    334 	$(OBJ)\mech/gss_inquire_cred_by_oid.obj \
    335 	$(OBJ)\mech/gss_inquire_mechs_for_name.obj \
    336 	$(OBJ)\mech/gss_inquire_names_for_mech.obj \
    337 	$(OBJ)\mech/gss_krb5.obj \
    338 	$(OBJ)\mech/gss_mech_switch.obj \
    339 	$(OBJ)\mech/gss_mo.obj \
    340 	$(OBJ)\mech/gss_names.obj \
    341 	$(OBJ)\mech/gss_oid.obj \
    342 	$(OBJ)\mech/gss_oid_equal.obj \
    343 	$(OBJ)\mech/gss_oid_to_str.obj \
    344 	$(OBJ)\mech/gss_process_context_token.obj \
    345 	$(OBJ)\mech/gss_pseudo_random.obj \
    346 	$(OBJ)\mech/gss_release_buffer.obj \
    347 	$(OBJ)\mech/gss_release_cred.obj \
    348 	$(OBJ)\mech/gss_release_name.obj \
    349 	$(OBJ)\mech/gss_release_oid.obj \
    350 	$(OBJ)\mech/gss_release_oid_set.obj \
    351 	$(OBJ)\mech/gss_seal.obj \
    352 	$(OBJ)\mech/gss_set_cred_option.obj \
    353 	$(OBJ)\mech/gss_set_sec_context_option.obj \
    354 	$(OBJ)\mech/gss_sign.obj \
    355 	$(OBJ)\mech/gss_store_cred.obj \
    356 	$(OBJ)\mech/gss_test_oid_set_member.obj \
    357 	$(OBJ)\mech/gss_unseal.obj \
    358 	$(OBJ)\mech/gss_unwrap.obj \
    359 	$(OBJ)\mech/gss_utils.obj \
    360 	$(OBJ)\mech/gss_verify.obj \
    361 	$(OBJ)\mech/gss_verify_mic.obj \
    362 	$(OBJ)\mech/gss_wrap.obj \
    363 	$(OBJ)\mech/gss_wrap_size_limit.obj \
    364 	$(OBJ)\mech/gss_inquire_sec_context_by_oid.obj \
    365 	$(OBJ)\spnego/accept_sec_context.obj \
    366 	$(OBJ)\spnego/compat.obj \
    367 	$(OBJ)\spnego/context_stubs.obj \
    368 	$(OBJ)\spnego/cred_stubs.obj \
    369 	$(OBJ)\spnego/external.obj \
    370 	$(OBJ)\spnego/init_sec_context.obj \
    371 	$(OBJ)\ntlm/accept_sec_context.obj \
    372 	$(OBJ)\ntlm/acquire_cred.obj \
    373 	$(OBJ)\ntlm/add_cred.obj \
    374 	$(OBJ)\ntlm/canonicalize_name.obj \
    375 	$(OBJ)\ntlm/compare_name.obj \
    376 	$(OBJ)\ntlm/context_time.obj \
    377 	$(OBJ)\ntlm/crypto.obj \
    378 	$(OBJ)\ntlm/delete_sec_context.obj \
    379 	$(OBJ)\ntlm/display_name.obj \
    380 	$(OBJ)\ntlm/display_status.obj \
    381 	$(OBJ)\ntlm/duplicate_name.obj \
    382 	$(OBJ)\ntlm/export_name.obj \
    383 	$(OBJ)\ntlm/export_sec_context.obj \
    384 	$(OBJ)\ntlm/external.obj \
    385 	$(OBJ)\ntlm/import_name.obj \
    386 	$(OBJ)\ntlm/import_sec_context.obj \
    387 	$(OBJ)\ntlm/indicate_mechs.obj \
    388 	$(OBJ)\ntlm/init_sec_context.obj \
    389 	$(OBJ)\ntlm/inquire_context.obj \
    390 	$(OBJ)\ntlm/inquire_cred.obj \
    391 	$(OBJ)\ntlm/inquire_cred_by_mech.obj \
    392 	$(OBJ)\ntlm/inquire_mechs_for_name.obj \
    393 	$(OBJ)\ntlm/inquire_names_for_mech.obj \
    394 	$(OBJ)\ntlm/process_context_token.obj \
    395 	$(OBJ)\ntlm/release_cred.obj \
    396 	$(OBJ)\ntlm/release_name.obj \
    397 	$(OBJ)\ntlm/kdc.obj \
    398 	$(OBJ)\gkrb5_err.obj \
    399 	$(spnego_files:.x=.obj) \
    400 	$(gssapi_files:.x=.obj)
    401 
    402 GCOPTS=-I$(SRCDIR) -I$(OBJ) -Igssapi -DBUILD_GSSAPI_LIB
    403 
    404 {$(OBJ)\krb5}.c{$(OBJ)\krb5}.obj::
    405 	$(C2OBJ_NP) -Fo$(OBJ)\krb5\ -Fd$(OBJ)\krb5\ -I$(OBJ)\krb5 $(GCOPTS)
    406 
    407 {krb5}.c{$(OBJ)\krb5}.obj::
    408 	$(C2OBJ_NP) -Fo$(OBJ)\krb5\ -Fd$(OBJ)\krb5\ -I$(OBJ)\krb5 $(GCOPTS) -DASN1_LIB
    409 
    410 {$(OBJ)\mech}.c{$(OBJ)\mech}.obj::
    411 	$(C2OBJ_NP) -Fo$(OBJ)\mech\ -Fd$(OBJ)\mech\ -I$(OBJ)\mech $(GCOPTS)
    412 
    413 {mech}.c{$(OBJ)\mech}.obj::
    414 	$(C2OBJ_NP) -Fo$(OBJ)\mech\ -Fd$(OBJ)\mech\ -I$(OBJ)\mech -I$(OBJ)\gssapi $(GCOPTS) -DASN1_LIB
    415 
    416 {$(OBJ)\ntlm}.c{$(OBJ)\ntlm}.obj::
    417 	$(C2OBJ_NP) -Fo$(OBJ)\ntlm\ -Fd$(OBJ)\ntlm\ -I$(OBJ)\ntlm $(GCOPTS)
    418 
    419 {ntlm}.c{$(OBJ)\ntlm}.obj::
    420 	$(C2OBJ_NP) -Fo$(OBJ)\ntlm\ -Fd$(OBJ)\ntlm\ -I$(OBJ)\ntlm $(GCOPTS) -DASN1_LIB
    421 
    422 {$(OBJ)\spnego}.c{$(OBJ)\spnego}.obj::
    423 	$(C2OBJ_NP) -Fo$(OBJ)\spnego\ -Fd$(OBJ)\spnego\ -I$(OBJ)\spnego $(GCOPTS)
    424 
    425 {spnego}.c{$(OBJ)\spnego}.obj::
    426 	$(C2OBJ_NP) -Fo$(OBJ)\spnego\ -Fd$(OBJ)\spnego\ -I$(OBJ)\spnego -Imech $(GCOPTS) -DASN1_LIB
    427 
    428 {$(OBJ)\gssapi}.c{$(OBJ)\gssapi}.obj::
    429 	$(C2OBJ_NP) -Fo$(OBJ)\gssapi\ -Fd$(OBJ)\gssapi\ -I$(OBJ)\gssapi $(GCOPTS)
    430 
    431 {$(OBJ)}.c{$(OBJ)}.obj::
    432 	$(C2OBJ_P) $(GCOPTS)
    433 
    434 {$(OBJ)\spnego}.x{$(OBJ)\spnego}.c:
    435 	$(CP) $** $@
    436 
    437 {$(OBJ)\gssapi}.x{$(OBJ)\gssapi}.c:
    438 	$(CP) $** $@
    439 
    440 {gssapi}.h{$(INCDIR)\gssapi}.h:
    441 	$(CP) $** $@
    442 
    443 {$(OBJ)}.h{$(INCDIR)\gssapi}.h:
    444 	$(CP) $** $@
    445 
    446 {$(OBJ)\gssapi}.hx{$(OBJ)\gssapi}.h:
    447 	$(CP) $** $@
    448 
    449 {$(OBJ)\spnego}.hx{$(OBJ)\spnego}.h:
    450 	$(CP) $** $@
    451 
    452 LIBGSSAPI_LIBS=\
    453 	$(LIBROKEN)	\
    454 	$(LIBHEIMDAL)	\
    455 	$(LIBHEIMNTLM)	\
    456 	$(LIBCOMERR)
    457 
    458 LIBGSSAPI_SDKLIBS=\
    459 	$(PTHREAD_LIB)
    460 
    461 !ifndef STATICLIBS
    462 
    463 RES=$(OBJ)\libgssapi-version.res
    464 
    465 $(BINDIR)\gssapi.dll: $(libgssapi_OBJs) $(RES)
    466 	$(DLLGUILINK_C) -implib:$(LIBGSSAPI)	\
    467 		-out:$(BINDIR)\gssapi.dll	\
    468 		-def:libgssapi-exports.def	\
    469 		$(LIBGSSAPI_LIBS) $(RES) $(LIBGSSAPI_SDKLIBS) @<<
    470 $(libgssapi_OBJs: =
    471 )
    472 <<
    473 	$(DLLPREP_NODIST)
    474 
    475 $(LIBGSSAPI): $(BINDIR)\gssapi.dll
    476 
    477 clean::
    478 	-$(RM) $(BINDIR)\gssapi.*
    479 
    480 !else
    481 
    482 $(LIBGSSAPI): $(libgssapi_OBJs)
    483 	$(LIBCON_C) -OUT:$@ $(LIBGSSAPI_LIBS) $(LIBGSSAPI_SDKLIBS) @<<
    484 $(libgssapi_OBJs: =
    485 )
    486 <<
    487 
    488 !endif
    489 
    490 all:: $(LIBGSSAPI)
    491 
    492 clean::
    493 	-$(RM) $(LIBGSSAPI)
    494 
    495 prep:: mkdirs-gss
    496 
    497 mkdirs-gss:
    498 !if !exist($(OBJ)\ntlm)
    499 	$(MKDIR) $(OBJ)\ntlm
    500 !endif
    501 !if !exist($(OBJ)\krb5)
    502 	$(MKDIR) $(OBJ)\krb5
    503 !endif
    504 !if !exist($(OBJ)\spnego)
    505 	$(MKDIR) $(OBJ)\spnego
    506 !endif
    507 !if !exist($(OBJ)\mech)
    508 	$(MKDIR) $(OBJ)\mech
    509 !endif
    510 !if !exist($(OBJ)\gssapi)
    511 	$(MKDIR) $(OBJ)\gssapi
    512 !endif
    513 
    514 clean::
    515 	-$(RM) $(OBJ)\ntlm\*.*
    516 	-$(RM) $(OBJ)\krb5\*.*
    517 	-$(RM) $(OBJ)\spnego\*.*
    518 	-$(RM) $(OBJ)\mech\*.*
    519 	-$(RM) $(OBJ)\gssapi\*.*
    520 
    521 all-tools:: $(BINDIR)\gsstool.exe
    522 
    523 $(BINDIR)\gsstool.exe: $(OBJ)\gsstool.obj $(OBJ)\gss-commands.obj $(LIBGSSAPI) $(LIBROKEN) $(LIBSL) $(LIBVERS)
    524 	$(EXECONLINK)
    525 
    526 $(OBJ)\gss-commands.c $(OBJ)\gss-commands.h: gss-commands.in
    527 	cd $(OBJ)
    528 	$(CP) $(SRCDIR)\gss-commands.in gss-commands.in
    529 	$(BINDIR)\slc.exe gss-commands.in
    530 	cd $(SRCDIR)
    531 
    532 !ifdef ELISP
    533 # This macro invocation is used to update the libgssapi_OBJs
    534 # definition below (generate-obj-macro is defined in maint.el):
    535 
    536 (generate-obj-macro "libgssapi_OBJs"
    537 	            (concat "\t$(OBJ)\\gkrb5_err.obj \\\n"
    538                             "\t$(spnego_files:.x=.obj) \\\n"
    539                             "\t$(gssapi_files:.x=.obj)")
    540                     "krb5src" "mechsrc" "spnegosrc" "ntlmsrc")
    541 !endif
    542 
    543 test-exports:
    544 	$(PERL) ..\..\cf\w32-check-exported-symbols.pl --vs version-script.map --def libgssapi-exports.def
    545 
    546 test:: test-exports
    547 
    548 
    549 TEST_BINARIES=\
    550 	$(OBJ)\test_oid.exe	\
    551 	$(OBJ)\test_names.exe	\
    552 	$(OBJ)\test_cfx.exe	\
    553 	$(OBJ)\test_acquire_cred.exe	\
    554 	$(OBJ)\test_cred.exe	\
    555 	$(OBJ)\test_kcred.exe	\
    556 	$(OBJ)\test_context.exe	\
    557 	$(OBJ)\test_ntlm.exe
    558 
    559 $(OBJ)\test_oid.exe: $(OBJ)\test_oid.obj $(LIBGSSAPI) $(LIBROKEN)
    560 	$(EXECONLINK)
    561 	$(EXEPREP_NODIST)
    562 
    563 $(OBJ)\test_names.exe: $(OBJ)\test_names.obj $(LIBGSSAPI) $(LIBROKEN) $(LIBVERS)
    564 	$(EXECONLINK)
    565 	$(EXEPREP_NODIST)
    566 
    567 $(OBJ)\test_cfx.exe: $(OBJ)\krb5\test_cfx.obj $(LIBHEIMDAL) $(LIBGSSAPI) $(LIBROKEN)
    568 	$(EXECONLINK)
    569 	$(EXEPREP_NODIST)
    570 
    571 $(OBJ)\test_acquire_cred.exe: $(OBJ)\test_acquire_cred.obj $(OBJ)\test_common.obj \
    572 		$(LIBGSSAPI) $(LIBROKEN) $(LIBVERS)
    573 	$(EXECONLINK)
    574 	$(EXEPREP_NODIST)
    575 
    576 $(OBJ)\test_cred.exe: $(OBJ)\test_cred.obj $(LIBGSSAPI) $(LIBROKEN) $(LIBVERS)
    577 	$(EXECONLINK)
    578 	$(EXEPREP_NODIST)
    579 
    580 $(OBJ)\test_kcred.exe: $(OBJ)\test_kcred.obj $(LIBGSSAPI) $(LIBHEIMDAL)	\
    581 		$(LIBROKEN) $(LIBVERS)
    582 	$(EXECONLINK)
    583 	$(EXEPREP_NODIST)
    584 
    585 $(OBJ)\test_context.exe: $(OBJ)\test_context.obj $(OBJ)\test_common.obj	\
    586 		$(LIBGSSAPI) $(LIBHEIMDAL) $(LIBROKEN) $(LIBVERS)
    587 	$(EXECONLINK)
    588 	$(EXEPREP_NODIST)
    589 
    590 $(OBJ)\test_ntlm.exe: $(OBJ)\test_ntlm.obj $(OBJ)\test_common.obj	\
    591 		$(LIBGSSAPI) $(LIBHEIMNTLM) $(LIBROKEN) $(LIBVERS)
    592 	$(EXECONLINK)
    593 	$(EXEPREP_NODIST)
    594 
    595 {}.c{$(OBJ)}.obj::
    596 	$(C2OBJ_P) -I$(OBJ)\krb5 -I$(OBJ) -I$(SRCDIR) -I$(SRCDIR)\gssapi
    597 
    598 test-binaries: $(LIBGSSAPI) $(TEST_BINARIES)
    599 
    600 run-test:
    601 	cd $(OBJ)
    602 	test_oid
    603 	test_names
    604 	test_cfx
    605 	test_kcred
    606 	cd $(SRCDIR)
    607 
    608 test:: test-binaries run-test
    609