xref: /netbsd-src/crypto/external/bsd/heimdal/dist/lib/krb5/NTMakefile (revision b9d004c6cc8d38329417ae29768c81e5f2a296cf)
1########################################################################
2#
3# Copyright (c) 2009 - 2016, 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\krb5
33
34!include ../../windows/NTMakefile.w32
35
36libkrb5_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)\config_reg.obj		    \
52	$(OBJ)\constants.obj		    \
53	$(OBJ)\context.obj		    \
54        $(OBJ)\convert_creds.obj            \
55	$(OBJ)\copy_host_realm.obj	    \
56	$(OBJ)\crc.obj			    \
57	$(OBJ)\creds.obj		    \
58	$(OBJ)\crypto.obj		    \
59	$(OBJ)\crypto-aes-sha1.obj	    \
60	$(OBJ)\crypto-aes-sha2.obj	    \
61	$(OBJ)\crypto-algs.obj		    \
62	$(OBJ)\crypto-arcfour.obj	    \
63	$(OBJ)\crypto-des-common.obj	    \
64	$(OBJ)\crypto-des.obj		    \
65	$(OBJ)\crypto-des3.obj		    \
66	$(OBJ)\crypto-evp.obj		    \
67	$(OBJ)\crypto-null.obj		    \
68	$(OBJ)\crypto-pk.obj		    \
69	$(OBJ)\crypto-rand.obj		    \
70	$(OBJ)\data.obj			    \
71	$(OBJ)\dcache.obj                   \
72	$(OBJ)\db_plugin.obj		    \
73	$(OBJ)\deprecated.obj		    \
74	$(OBJ)\digest.obj		    \
75	$(OBJ)\dll.obj			    \
76	$(OBJ)\eai_to_heim_errno.obj	    \
77        $(OBJ)\enomem.obj                   \
78	$(OBJ)\error_string.obj		    \
79	$(OBJ)\expand_hostname.obj	    \
80	$(OBJ)\expand_path.obj	    	    \
81	$(OBJ)\fast.obj			    \
82	$(OBJ)\fcache.obj		    \
83	$(OBJ)\free.obj			    \
84	$(OBJ)\free_host_realm.obj	    \
85	$(OBJ)\generate_seq_number.obj	    \
86	$(OBJ)\generate_subkey.obj	    \
87	$(OBJ)\get_addrs.obj		    \
88	$(OBJ)\get_cred.obj		    \
89	$(OBJ)\get_default_principal.obj    \
90	$(OBJ)\get_default_realm.obj	    \
91	$(OBJ)\get_for_creds.obj	    \
92	$(OBJ)\get_host_realm.obj	    \
93	$(OBJ)\get_in_tkt.obj		    \
94	$(OBJ)\get_port.obj		    \
95	$(OBJ)\init_creds.obj		    \
96	$(OBJ)\init_creds_pw.obj	    \
97	$(OBJ)\kcm.obj			    \
98	$(OBJ)\keyblock.obj		    \
99	$(OBJ)\keytab.obj		    \
100	$(OBJ)\keytab_any.obj		    \
101	$(OBJ)\keytab_file.obj		    \
102	$(OBJ)\keytab_keyfile.obj	    \
103	$(OBJ)\keytab_memory.obj	    \
104	$(OBJ)\krbhst.obj		    \
105	$(OBJ)\kuserok.obj		    \
106	$(OBJ)\log.obj			    \
107	$(OBJ)\mcache.obj		    \
108	$(OBJ)\misc.obj			    \
109	$(OBJ)\mit_glue.obj		    \
110	$(OBJ)\mk_error.obj		    \
111	$(OBJ)\mk_priv.obj		    \
112	$(OBJ)\mk_rep.obj		    \
113	$(OBJ)\mk_req.obj		    \
114	$(OBJ)\mk_req_ext.obj		    \
115	$(OBJ)\mk_safe.obj		    \
116	$(OBJ)\net_read.obj		    \
117	$(OBJ)\net_write.obj		    \
118	$(OBJ)\n-fold.obj		    \
119	$(OBJ)\pac.obj			    \
120	$(OBJ)\padata.obj		    \
121	$(OBJ)\pcache.obj		    \
122	$(OBJ)\pkinit.obj		    \
123	$(OBJ)\pkinit-ec.obj		    \
124	$(OBJ)\plugin.obj                   \
125	$(OBJ)\principal.obj		    \
126	$(OBJ)\prog_setup.obj		    \
127	$(OBJ)\prompter_posix.obj	    \
128	$(OBJ)\rd_cred.obj		    \
129	$(OBJ)\rd_error.obj		    \
130	$(OBJ)\rd_priv.obj		    \
131	$(OBJ)\rd_rep.obj		    \
132	$(OBJ)\rd_req.obj		    \
133	$(OBJ)\rd_safe.obj		    \
134	$(OBJ)\read_message.obj		    \
135	$(OBJ)\recvauth.obj		    \
136	$(OBJ)\replay.obj		    \
137	$(OBJ)\salt-aes-sha1.obj	    \
138	$(OBJ)\salt-aes-sha2.obj	    \
139	$(OBJ)\salt-arcfour.obj		    \
140	$(OBJ)\salt-des.obj		    \
141	$(OBJ)\salt-des3.obj		    \
142	$(OBJ)\salt.obj			    \
143	$(OBJ)\scache.obj		    \
144	$(OBJ)\send_to_kdc.obj		    \
145	$(OBJ)\sendauth.obj		    \
146	$(OBJ)\set_default_realm.obj	    \
147	$(OBJ)\sock_principal.obj	    \
148	$(OBJ)\sp800-108-kdf.obj	    \
149	$(OBJ)\store.obj		    \
150	$(OBJ)\store-int.obj		    \
151	$(OBJ)\store_emem.obj		    \
152	$(OBJ)\store_fd.obj		    \
153	$(OBJ)\store_mem.obj		    \
154	$(OBJ)\store_sock.obj		    \
155	$(OBJ)\ticket.obj		    \
156	$(OBJ)\time.obj			    \
157	$(OBJ)\transited.obj		    \
158	$(OBJ)\verify_init.obj		    \
159	$(OBJ)\verify_user.obj		    \
160	$(OBJ)\version.obj		    \
161	$(OBJ)\warn.obj			    \
162	$(OBJ)\write_message.obj
163
164libkrb5_gen_OBJS=	    \
165	$(OBJ)\krb5_err.obj \
166	$(OBJ)\krb_err.obj  \
167	$(OBJ)\heim_err.obj \
168	$(OBJ)\k524_err.obj
169
170INCFILES=			\
171	$(INCDIR)\heim_err.h	\
172	$(INCDIR)\k524_err.h	\
173        $(INCDIR)\kcm.h         \
174	$(INCDIR)\krb_err.h	\
175	$(INCDIR)\krb5.h	\
176	$(INCDIR)\krb5_ccapi.h	\
177	$(INCDIR)\krb5_err.h	\
178	$(INCDIR)\krb5_locl.h	\
179	$(INCDIR)\krb5-protos.h	\
180	$(INCDIR)\krb5-private.h	\
181	$(INCDIR)\krb5-v4compat.h	\
182	$(INCDIR)\crypto.h
183
184all:: $(INCFILES)
185
186clean::
187	-$(RM) $(INCFILES)
188
189dist_libkrb5_la_SOURCES =			\
190	acache.c				\
191	acl.c					\
192	add_et_list.c				\
193	addr_families.c				\
194	aname_to_localname.c			\
195	appdefault.c				\
196	asn1_glue.c				\
197	auth_context.c				\
198	build_ap_req.c				\
199	build_auth.c				\
200	cache.c					\
201	changepw.c				\
202	codec.c					\
203	config_file.c				\
204	config_reg.c				\
205	constants.c				\
206	context.c				\
207	copy_host_realm.c			\
208	crc.c					\
209	creds.c					\
210	crypto.c				\
211	crypto.h				\
212	crypto-aes-sha1.c			\
213	crypto-aes-sha2.c			\
214	crypto-algs.c				\
215	crypto-arcfour.c			\
216	crypto-des.c				\
217	crypto-des-common.c			\
218	crypto-des3.c				\
219	crypto-evp.c				\
220	crypto-pk.c				\
221	crypto-rand.c				\
222	db_plugin.c                             \
223	doxygen.c				\
224	data.c					\
225	dcache.c                                \
226	deprecated.c				\
227	digest.c				\
228	eai_to_heim_errno.c			\
229        enomem.c                                \
230	error_string.c				\
231	expand_hostname.c			\
232	expand_path.c				\
233	fast.c					\
234	fcache.c				\
235	free.c					\
236	free_host_realm.c			\
237	generate_seq_number.c			\
238	generate_subkey.c			\
239	get_addrs.c				\
240	get_cred.c				\
241	get_default_principal.c			\
242	get_default_realm.c			\
243	get_for_creds.c				\
244	get_host_realm.c			\
245	get_in_tkt.c				\
246	get_port.c				\
247	init_creds.c				\
248	init_creds_pw.c				\
249	kcm.c					\
250	kcm.h					\
251	keyblock.c				\
252	keytab.c				\
253	keytab_any.c				\
254	keytab_file.c				\
255	keytab_keyfile.c			\
256	keytab_memory.c				\
257	krb5_locl.h				\
258	krb5-v4compat.h				\
259	krbhst.c				\
260	kuserok.c				\
261	log.c					\
262	mcache.c				\
263	misc.c					\
264	mk_error.c				\
265	mk_priv.c				\
266	mk_rep.c				\
267	mk_req.c				\
268	mk_req_ext.c				\
269	mk_safe.c				\
270	mit_glue.c				\
271	net_read.c				\
272	net_write.c				\
273	n-fold.c				\
274	pac.c					\
275	padata.c				\
276	pkinit.c				\
277	pkinit-ec.c				\
278	plugin.c                                \
279	principal.c				\
280	prog_setup.c				\
281	prompter_posix.c			\
282	rd_cred.c				\
283	rd_error.c				\
284	rd_priv.c				\
285	rd_rep.c				\
286	rd_req.c				\
287	rd_safe.c				\
288	read_message.c				\
289	recvauth.c				\
290	replay.c				\
291	salt.c					\
292	salt-aes-sha1.c				\
293	salt-aes-sha2.c				\
294	salt-arcfour.c				\
295	salt-des.c				\
296	salt-des3.c				\
297	scache.c				\
298	send_to_kdc.c				\
299	sendauth.c				\
300	set_default_realm.c			\
301	sock_principal.c			\
302	sp800-108-kdf.c				\
303	store.c					\
304	store-int.c				\
305	store-int.h				\
306	store_emem.c				\
307	store_fd.c				\
308	store_mem.c				\
309	store_sock.c				\
310	pcache.c				\
311	plugin.c				\
312	ticket.c				\
313	time.c					\
314	transited.c				\
315	verify_init.c				\
316	verify_user.c				\
317	version.c				\
318	warn.c					\
319	write_message.c
320
321$(OBJ)\krb5-protos.h: $(dist_libkrb5_la_SOURCES)
322	$(PERL) ..\..\cf\make-proto.pl -E KRB5_LIB -q -P remove -o $(OBJ)\krb5-protos.h $(dist_libkrb5_la_SOURCES) || $(RM) -f $(OBJ)\krb5-protos.h
323
324$(OBJ)\krb5-private.h: $(dist_libkrb5_la_SOURCES)
325	$(PERL) ..\..\cf\make-proto.pl -q -P remove -p $(OBJ)\krb5-private.h $(dist_libkrb5_la_SOURCES) || $(RM) -f $(OBJ)\krb5-private.h
326
327$(OBJ)\krb5_err.c $(OBJ)\krb5_err.h: krb5_err.et
328	cd $(OBJ)
329	$(BINDIR)\compile_et.exe $(SRCDIR)\krb5_err.et
330	cd $(SRCDIR)
331
332$(OBJ)\krb_err.c $(OBJ)\krb_err.h: krb_err.et
333	cd $(OBJ)
334	$(BINDIR)\compile_et.exe $(SRCDIR)\krb_err.et
335	cd $(SRCDIR)
336
337$(OBJ)\heim_err.c $(OBJ)\heim_err.h: heim_err.et
338	cd $(OBJ)
339	$(BINDIR)\compile_et.exe $(SRCDIR)\heim_err.et
340	cd $(SRCDIR)
341
342$(OBJ)\k524_err.c $(OBJ)\k524_err.h: k524_err.et
343	cd $(OBJ)
344	$(BINDIR)\compile_et.exe $(SRCDIR)\k524_err.et
345	cd $(SRCDIR)
346
347#----------------------------------------------------------------------
348# libkrb5
349
350$(LIBKRB5): $(libkrb5_OBJS)  $(libkrb5_gen_OBJS)
351	$(LIBCON_C) -OUT:$@ $(LIBHEIMBASE) $(LIB_openssl_crypto) @<<
352$(libkrb5_OBJS: =
353)
354$(libkrb5_gen_OBJS: =
355)
356<<
357
358all:: $(LIBKRB5)
359
360clean::
361	-$(RM) $(LIBKRB5)
362
363$(OBJ)\libkrb5-exports.def: libkrb5-exports.def.in $(INCDIR)\config.h
364	$(CPREPROCESSOUT) libkrb5-exports.def.in > $@ || $(RM) $@
365
366all:: $(OBJ)\libkrb5-exports.def
367
368clean::
369	-$(RM) $(OBJ)\libkrb5-exports.def
370
371#----------------------------------------------------------------------
372# librfc3961
373
374librfc3961_OBJS=\
375	$(OBJ)\crc.obj			\
376	$(OBJ)\crypto.obj		\
377	$(OBJ)\crypto-aes-sha1.obj	\
378	$(OBJ)\crypto-aes-sha2.obj	\
379	$(OBJ)\crypto-algs.obj		\
380	$(OBJ)\crypto-arcfour.obj	\
381	$(OBJ)\crypto-des.obj		\
382	$(OBJ)\crypto-des-common.obj	\
383	$(OBJ)\crypto-des3.obj		\
384	$(OBJ)\crypto-evp.obj		\
385	$(OBJ)\crypto-null.obj		\
386	$(OBJ)\crypto-pk.obj		\
387	$(OBJ)\crypto-rand.obj		\
388	$(OBJ)\crypto-stubs.obj		\
389	$(OBJ)\data.obj			\
390	$(OBJ)\error_string.obj		\
391	$(OBJ)\keyblock.obj		\
392	$(OBJ)\n-fold.obj		\
393	$(OBJ)\salt.obj			\
394	$(OBJ)\salt-aes-sha1.obj	\
395	$(OBJ)\salt-aes-sha2.obj	\
396	$(OBJ)\salt-arcfour.obj		\
397	$(OBJ)\salt-des.obj		\
398	$(OBJ)\salt-des3.obj		\
399	$(OBJ)\sp800-108-kdf.obj	\
400	$(OBJ)\store-int.obj		\
401	$(OBJ)\warn.obj
402
403$(LIBRFC3961): $(librfc3961_OBJS)
404	$(LIBCON)
405
406all:: $(LIBRFC3961)
407
408clean::
409	-$(RM) $(LIBRFC3961)
410
411#----------------------------------------------------------------------
412# Tools
413
414all-tools:: $(BINDIR)\verify_krb5_conf.exe
415
416clean::
417	-$(RM) $(BINDIR)\verify_krb5_conf.*
418
419$(BINDIR)\verify_krb5_conf.exe: $(OBJ)\verify_krb5_conf.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBVERS) $(OBJ)\verify_krb5_conf-version.res
420	$(EXECONLINK)
421	$(EXEPREP)
422
423{}.c{$(OBJ)}.obj::
424	$(C2OBJ_P) -DBUILD_KRB5_LIB -DASN1_LIB
425
426{$(OBJ)}.c{$(OBJ)}.obj::
427	$(C2OBJ_P) -DBUILD_KRB5_LIB -DASN1_LIB
428
429#----------------------------------------------------------------------
430# Tests
431
432test:: test-binaries test-files test-run
433
434test_binaries =				\
435	$(OBJ)\aes-test.exe		\
436	$(OBJ)\derived-key-test.exe	\
437	$(OBJ)\krbhst-test.exe		\
438	$(OBJ)\n-fold-test.exe		\
439	$(OBJ)\parse-name-test.exe	\
440	$(OBJ)\pseudo-random-test.exe	\
441	$(OBJ)\store-test.exe		\
442	$(OBJ)\string-to-key-test.exe	\
443	$(OBJ)\test_acl.exe		\
444	$(OBJ)\test_addr.exe		\
445	$(OBJ)\test_alname.exe		\
446	$(OBJ)\test_cc.exe		\
447	$(OBJ)\test_config.exe		\
448	$(OBJ)\test_crypto.exe		\
449	$(OBJ)\test_crypto_wrapping.exe	\
450	$(OBJ)\test_forward.exe		\
451	$(OBJ)\test_get_addrs.exe	\
452	$(OBJ)\test_hostname.exe	\
453	$(OBJ)\test_keytab.exe		\
454	$(OBJ)\test_kuserok.exe		\
455	$(OBJ)\test_mem.exe		\
456	$(OBJ)\test_pac.exe		\
457	$(OBJ)\test_pkinit_dh2key.exe	\
458	$(OBJ)\test_pknistkdf.exe	\
459	$(OBJ)\test_plugin.exe		\
460	$(OBJ)\test_prf.exe		\
461	$(OBJ)\test_princ.exe		\
462	$(OBJ)\test_renew.exe		\
463	$(OBJ)\test_store.exe		\
464	$(OBJ)\test_time.exe		\
465
466test-binaries: $(test_binaries) $(OBJ)\test_rfc3961.exe
467
468test-files: $(OBJ)\test_config_strings.out
469
470$(OBJ)\test_config_strings.out: test_config_strings.cfg
471	$(CP) $** $@
472
473test-run:
474	cd $(OBJ)
475	-aes-test.exe
476	-derived-key-test.exe
477	-krbhst-test.exe
478	-n-fold-test.exe
479	-parse-name-test.exe
480	-pseudo-random-test.exe
481	-store-test.exe
482	-string-to-key-test.exe
483	-test_acl.exe
484	-test_addr.exe
485# Skip alname due to lack of .k5login and "root"
486#	-test_alname.exe
487	-test_cc.exe
488	-test_config.exe
489	-test_crypto.exe
490	-test_crypto_wrapping.exe
491# Skip forward due to need for existing hostname
492#	-test_forward.exe
493	-test_get_addrs.exe
494	-test_hostname.exe
495	-test_keytab.exe
496# Skip kuserok requires principal and localname
497#	-test_kuserok.exe
498	-test_mem.exe
499	-test_pac.exe
500	-test_pkinit_dh2key.exe
501	-test_pknistkdf.exe
502	-test_plugin.exe
503	-test_prf.exe
504	-test_renew.exe
505	-test_rfc3961.exe
506	-test_store.exe
507	-test_time.exe
508	cd $(SRCDIR)
509
510$(test_binaries): $$(@R).obj $(LIBHEIMDAL) $(LIBVERS) $(LIBROKEN) $(LIBHEIMBASE)
511	$(EXECONLINK)
512	$(EXEPREP_NODIST)
513
514$(OBJ)\test_rfc3961.exe: $(OBJ)\test_rfc3961.obj $(LIBRFC3961) $(LIBHEIMDAL) $(LIBVERS) $(LIBCOMERR) $(LIBROKEN) $(LIBHEIMBASE)
515	$(EXECONLINK)
516	$(EXEPREP_NODIST)
517
518$(test_binaries:.exe=.obj): $$(@B).c
519	$(C2OBJ_C) -Fo$@ -Fd$(@D)\ $** -DBlah
520
521test-exports:
522	$(PERL) ..\..\cf\w32-check-exported-symbols.pl --vs version-script.map --def libkrb5-exports.def.in
523
524test:: test-exports
525