_getch() can return '\r' on Windows
[heimdal.git] / lib / krb5 / NTMakefile
blob613029421300e5823e8e72b87d7fb6b2c4ff0122
1 ########################################################################
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
32 RELDIR=lib\krb5
34 !include ../../windows/NTMakefile.w32
36 libkrb5_OBJS =                  \
37         $(OBJ)\acache.obj                   \
38         $(OBJ)\acl.obj                      \
39         $(OBJ)\add_et_list.obj              \
40         $(OBJ)\addr_families.obj            \
41         $(OBJ)\aname_to_localname.obj       \
42         $(OBJ)\appdefault.obj               \
43         $(OBJ)\asn1_glue.obj                \
44         $(OBJ)\auth_context.obj             \
45         $(OBJ)\build_ap_req.obj             \
46         $(OBJ)\build_auth.obj               \
47         $(OBJ)\cache.obj                    \
48         $(OBJ)\changepw.obj                 \
49         $(OBJ)\codec.obj                    \
50         $(OBJ)\config_file.obj              \
51         $(OBJ)\convert_creds.obj            \
52         $(OBJ)\constants.obj                \
53         $(OBJ)\context.obj                  \
54         $(OBJ)\copy_host_realm.obj          \
55         $(OBJ)\crc.obj                      \
56         $(OBJ)\creds.obj                    \
57         $(OBJ)\crypto.obj                   \
58         $(OBJ)\data.obj                     \
59         $(OBJ)\deprecated.obj               \
60         $(OBJ)\digest.obj                   \
61         $(OBJ)\dll.obj                      \
62         $(OBJ)\eai_to_heim_errno.obj        \
63         $(OBJ)\error_string.obj             \
64         $(OBJ)\expand_hostname.obj          \
65         $(OBJ)\expand_path_w32.obj          \
66         $(OBJ)\fcache.obj                   \
67         $(OBJ)\free.obj                     \
68         $(OBJ)\free_host_realm.obj          \
69         $(OBJ)\generate_seq_number.obj      \
70         $(OBJ)\generate_subkey.obj          \
71         $(OBJ)\get_addrs.obj                \
72         $(OBJ)\get_cred.obj                 \
73         $(OBJ)\get_default_principal.obj    \
74         $(OBJ)\get_default_realm.obj        \
75         $(OBJ)\get_for_creds.obj            \
76         $(OBJ)\get_host_realm.obj           \
77         $(OBJ)\get_in_tkt.obj               \
78         $(OBJ)\get_port.obj                 \
79         $(OBJ)\init_creds.obj               \
80         $(OBJ)\init_creds_pw.obj            \
81         $(OBJ)\kcm.obj                      \
82         $(OBJ)\keyblock.obj                 \
83         $(OBJ)\keytab.obj                   \
84         $(OBJ)\keytab_any.obj               \
85         $(OBJ)\keytab_file.obj              \
86         $(OBJ)\keytab_keyfile.obj           \
87         $(OBJ)\keytab_memory.obj            \
88         $(OBJ)\krbhst.obj                   \
89         $(OBJ)\kuserok.obj                  \
90         $(OBJ)\log.obj                      \
91         $(OBJ)\mcache.obj                   \
92         $(OBJ)\misc.obj                     \
93         $(OBJ)\mk_error.obj                 \
94         $(OBJ)\mk_priv.obj                  \
95         $(OBJ)\mk_rep.obj                   \
96         $(OBJ)\mk_req.obj                   \
97         $(OBJ)\mk_req_ext.obj               \
98         $(OBJ)\mk_safe.obj                  \
99         $(OBJ)\mit_glue.obj                 \
100         $(OBJ)\net_read.obj                 \
101         $(OBJ)\net_write.obj                \
102         $(OBJ)\n-fold.obj                   \
103         $(OBJ)\pac.obj                      \
104         $(OBJ)\padata.obj                   \
105         $(OBJ)\pkinit.obj                   \
106         $(OBJ)\principal.obj                \
107         $(OBJ)\prog_setup.obj               \
108         $(OBJ)\prompter_posix.obj           \
109         $(OBJ)\rd_cred.obj                  \
110         $(OBJ)\rd_error.obj                 \
111         $(OBJ)\rd_priv.obj                  \
112         $(OBJ)\rd_rep.obj                   \
113         $(OBJ)\rd_req.obj                   \
114         $(OBJ)\rd_safe.obj                  \
115         $(OBJ)\read_message.obj             \
116         $(OBJ)\recvauth.obj                 \
117         $(OBJ)\replay.obj                   \
118         $(OBJ)\scache.obj                   \
119         $(OBJ)\send_to_kdc.obj              \
120         $(OBJ)\sendauth.obj                 \
121         $(OBJ)\set_default_realm.obj        \
122         $(OBJ)\sock_principal.obj           \
123         $(OBJ)\store.obj                    \
124         $(OBJ)\store_emem.obj               \
125         $(OBJ)\store_fd.obj                 \
126         $(OBJ)\store_mem.obj                \
127         $(OBJ)\plugin.obj                   \
128         $(OBJ)\ticket.obj                   \
129         $(OBJ)\time.obj                     \
130         $(OBJ)\transited.obj                \
131         $(OBJ)\v4_glue.obj                  \
132         $(OBJ)\verify_init.obj              \
133         $(OBJ)\verify_user.obj              \
134         $(OBJ)\version.obj                  \
135         $(OBJ)\warn.obj                     \
136         $(OBJ)\write_message.obj
138 libkrb5_gen_OBJS=           \
139         $(OBJ)\krb5_err.obj \
140         $(OBJ)\krb_err.obj  \
141         $(OBJ)\heim_err.obj \
142         $(OBJ)\k524_err.obj
144 INCFILES=                       \
145         $(INCDIR)\heim_err.h    \
146         $(INCDIR)\k524_err.h    \
147         $(INCDIR)\krb_err.h     \
148         $(INCDIR)\krb5.h        \
149         $(INCDIR)\krb5_ccapi.h  \
150         $(INCDIR)\krb5_err.h    \
151         $(INCDIR)\krb5_locl.h   \
152         $(INCDIR)\krb5-protos.h \
153         $(INCDIR)\krb5-private.h        \
154         $(INCDIR)\krb5-v4compat.h
156 all:: $(INCFILES)
158 clean::
159         -$(RM) $(INCFILES)
161 dist_libkrb5_la_SOURCES =                       \
162         acache.c                                \
163         acl.c                                   \
164         add_et_list.c                           \
165         addr_families.c                         \
166         aname_to_localname.c                    \
167         appdefault.c                            \
168         asn1_glue.c                             \
169         auth_context.c                          \
170         build_ap_req.c                          \
171         build_auth.c                            \
172         cache.c                                 \
173         changepw.c                              \
174         codec.c                                 \
175         config_file.c                           \
176         convert_creds.c                         \
177         constants.c                             \
178         context.c                               \
179         copy_host_realm.c                       \
180         crc.c                                   \
181         creds.c                                 \
182         crypto.c                                \
183         doxygen.c                               \
184         data.c                                  \
185         deprecated.c                            \
186         digest.c                                \
187         eai_to_heim_errno.c                     \
188         error_string.c                          \
189         expand_hostname.c                       \
190         expand_path_w32.c                       \
191         fcache.c                                \
192         free.c                                  \
193         free_host_realm.c                       \
194         generate_seq_number.c                   \
195         generate_subkey.c                       \
196         get_addrs.c                             \
197         get_cred.c                              \
198         get_default_principal.c                 \
199         get_default_realm.c                     \
200         get_for_creds.c                         \
201         get_host_realm.c                        \
202         get_in_tkt.c                            \
203         get_port.c                              \
204         init_creds.c                            \
205         init_creds_pw.c                         \
206         kcm.c                                   \
207         kcm.h                                   \
208         keyblock.c                              \
209         keytab.c                                \
210         keytab_any.c                            \
211         keytab_file.c                           \
212         keytab_keyfile.c                        \
213         keytab_memory.c                         \
214         krb5_locl.h                             \
215         krb5-v4compat.h                         \
216         krbhst.c                                \
217         kuserok.c                               \
218         log.c                                   \
219         mcache.c                                \
220         misc.c                                  \
221         mk_error.c                              \
222         mk_priv.c                               \
223         mk_rep.c                                \
224         mk_req.c                                \
225         mk_req_ext.c                            \
226         mk_safe.c                               \
227         mit_glue.c                              \
228         net_read.c                              \
229         net_write.c                             \
230         n-fold.c                                \
231         pac.c                                   \
232         padata.c                                \
233         pkinit.c                                \
234         principal.c                             \
235         prog_setup.c                            \
236         prompter_posix.c                        \
237         rd_cred.c                               \
238         rd_error.c                              \
239         rd_priv.c                               \
240         rd_rep.c                                \
241         rd_req.c                                \
242         rd_safe.c                               \
243         read_message.c                          \
244         recvauth.c                              \
245         replay.c                                \
246         scache.c                                \
247         send_to_kdc.c                           \
248         sendauth.c                              \
249         set_default_realm.c                     \
250         sock_principal.c                        \
251         store.c                                 \
252         store-int.h                             \
253         store_emem.c                            \
254         store_fd.c                              \
255         store_mem.c                             \
256         plugin.c                                \
257         ticket.c                                \
258         time.c                                  \
259         transited.c                             \
260         v4_glue.c                               \
261         verify_init.c                           \
262         verify_user.c                           \
263         version.c                               \
264         warn.c                                  \
265         write_message.c
267 $(OBJ)\krb5-protos.h: $(dist_libkrb5_la_SOURCES)
268         $(PERL) ..\..\cf\make-proto.pl -E KRB5_LIB -q -P remove -o $(OBJ)\krb5-protos.h $(dist_libkrb5_la_SOURCES) || $(RM) -f krb5-protos.h
270 $(OBJ)\krb5-private.h: $(dist_libkrb5_la_SOURCES)
271         $(PERL) ..\..\cf\make-proto.pl -q -P remove -p $(OBJ)\krb5-private.h $(dist_libkrb5_la_SOURCES) || $(RM) -f krb5-private.h
273 $(OBJ)\krb5_err.c $(OBJ)\krb5_err.h: krb5_err.et
274         cd $(OBJ)
275         $(BINDIR)\compile_et.exe $(SRCDIR)\krb5_err.et
276         cd $(SRCDIR)
278 $(OBJ)\krb_err.c $(OBJ)\krb_err.h: krb_err.et
279         cd $(OBJ)
280         $(BINDIR)\compile_et.exe $(SRCDIR)\krb_err.et
281         cd $(SRCDIR)
283 $(OBJ)\heim_err.c $(OBJ)\heim_err.h: heim_err.et
284         cd $(OBJ)
285         $(BINDIR)\compile_et.exe $(SRCDIR)\heim_err.et
286         cd $(SRCDIR)
288 $(OBJ)\k524_err.c $(OBJ)\k524_err.h: k524_err.et
289         cd $(OBJ)
290         $(BINDIR)\compile_et.exe $(SRCDIR)\k524_err.et
291         cd $(SRCDIR)
293 #----------------------------------------------------------------------
294 # libkrb5
296 !ifdef STATICLIBS
298 $(LIBKRB5): $(libkrb5_OBJS) $(libkrb5_gen_OBJS)
299         $(LIBCON)
301 all:: $(LIBKRB5)
303 clean::
304         -$(RM) $(LIBKRB5)
306 !else
308 DLLDEPS= \
309         $(LIBROKEN)     \
310         $(LIBASN1)      \
311         $(LIBSQLITE)    \
312         $(LIBCOMERR)    \
313         $(LIBHCRYPTO)   \
314         $(LIBHX509)     \
315         $(LIBWIND)
317 DLLSDKDEPS= \
318         $(PTHREAD_LIB)  \
319         secur32.lib     \
320         shell32.lib
322 $(LIBKRB5): $(BINDIR)\libkrb5.dll
324 $(OBJ)\libkrb5-exports.def: libkrb5-exports.def.in $(INCDIR)\config.h
325         $(CPREPROCESSOUT) libkrb5-exports.def.in > $@ || $(RM) $@
327 $(BINDIR)\libkrb5.dll: $(libkrb5_OBJS) $(libkrb5_gen_OBJS) $(DLLDEPS) $(OBJ)\libkrb5-exports.def
328         $(DLLGUILINK_C) -out:$(BINDIR)\libkrb5.dll -implib:$(LIBKRB5) \
329                 $(DLLDEPS) $(DLLSDKDEPS) -def:$(OBJ)\libkrb5-exports.def @<<
330 $(libkrb5_OBJS: =
332 $(libkrb5_gen_OBJS: =
335         $(_VC_MANIFEST_EMBED_DLL)
336         $(_VC_MANIFEST_CLEAN)
337         $(_CODESIGN)
339 all:: $(BINDIR)\libkrb5.dll
341 clean::
342         -$(RM) $(BINDIR)\libkrb5.dll
343         -$(RM) $(LIBKRB5)
345 !endif
347 all:: $(BINDIR)\verify_krb5_conf.exe
349 clean::
350         -$(RM) $(BINDIR)\verify_krb5_conf.exe
352 $(BINDIR)\verify_krb5_conf.exe: $(OBJ)\verify_krb5_conf.obj $(LIBKRB5) $(LIBROKEN) $(LIBVERS)
353         $(EXECONLINK)
354         $(_VC_MANIFEST_EMBED_EXE)
355         $(_VC_MANIFEST_CLEAN)
356         $(_CODESIGN)
358 {}.c{$(OBJ)}.obj:
359         $(C2OBJ) -DBUILD_KRB5_LIB
361 {$(OBJ)}.c{$(OBJ)}.obj:
362         $(C2OBJ) -DBUILD_KRB5_LIB
364 #----------------------------------------------------------------------
365 # Tests
367 test:: test-binaries test-run
369 test_binaries =                         \
370         $(OBJ)\krbhst-test.exe          \
371         $(OBJ)\test_alname.exe          \
372         $(OBJ)\test_crypto.exe          \
373         $(OBJ)\test_get_addrs.exe       \
374         $(OBJ)\test_kuserok.exe         \
375         $(OBJ)\test_renew.exe           \
376         $(OBJ)\test_forward.exe         \
377         $(OBJ)\aes-test.exe             \
378         $(OBJ)\derived-key-test.exe     \
379         $(OBJ)\n-fold-test.exe          \
380 !ifdef KRB4
381         $(OBJ)\name-45-test.exe         \
382 !endif
383         $(OBJ)\parse-name-test.exe      \
384         $(OBJ)\store-test.exe           \
385         $(OBJ)\string-to-key-test.exe   \
386         $(OBJ)\test_acl.exe             \
387         $(OBJ)\test_addr.exe            \
388         $(OBJ)\test_cc.exe              \
389         $(OBJ)\test_config.exe          \
390         $(OBJ)\test_hostname.exe        \
391         $(OBJ)\test_prf.exe             \
392         $(OBJ)\test_store.exe           \
393         $(OBJ)\test_crypto_wrapping.exe \
394         $(OBJ)\test_keytab.exe          \
395         $(OBJ)\test_mem.exe             \
396         $(OBJ)\test_pac.exe             \
397         $(OBJ)\test_plugin.exe          \
398         $(OBJ)\test_princ.exe           \
399         $(OBJ)\test_pkinit_dh2key.exe   \
400         $(OBJ)\test_pknistkdf.exe       \
401         $(OBJ)\test_time.exe
403 test-binaries: $(test_binaries)
405 test-run:
406         cd $(OBJ)
407         aes-test.exe
408         derived-key-test.exe
409         n-fold-test.exe
410 !ifdef KRB4
411         name-45-test.exe
412 !endif
413         parse-name-test.exe
414         store-test.exe
415         string-to-key-test.exe
416         test_acl.exe
417         -test_addr.exe
418         test_cc.exe
419         test_config.exe
420         test_prf.exe
421         test_store.exe
422         test_crypto_wrapping.exe
423         test_keytab.exe
424         test_mem.exe
425         test_pac.exe
426         test_plugin.exe
427         test_princ.exe
428         test_pkinit_dh2key.exe
429         test_pknistkdf.exe
430         test_time.exe
431         cd $(SRCDIR)
433 $(test_binaries): $$(@R).obj
434         $(EXECONLINK) $(LIBKRB5) $(LIBVERS) $(LIBROKEN) $(LIBHCRYPTO) $(LIBASN1)
435         $(_VC_MANIFEST_EMBED_EXE)
436         $(_VC_MANIFEST_CLEAN)
438 $(test_binaries:.exe=.obj): $$(@B).c
439         $(C2OBJ_C) -Fo$@ -Fd$(@D)\ $** -DBlah