xref: /netbsd-src/crypto/external/bsd/heimdal/dist/lib/hcrypto/NTMakefile (revision dd75ac5b443e967e26b4d18cc8cd5eb98512bfbf)
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
32SUBDIRS=libtommath
33
34RELDIR=lib\hcrypto
35
36!include ../../windows/NTMakefile.w32
37
38HCRYPTOINCLUDEDIR = $(INCDIR)\hcrypto
39
40HEIMBASEDIR = $(SRC)\lib\base
41
42HX509DIR = $(SRC)\lib\hx509
43
44!ifdef INCLUDE_openssl_crypto
45openssl_inc=-I$(INCLUDE_openssl_crypto)
46!endif
47
48intcflags=-DKRB5 -DASN1_LIB -I$(HCRYPTOINCLUDEDIR) -DUSE_HCRYPTO_LTM=1 \
49	-I$(HX509DIR) $(openssl_inc)
50
51# Do dependencies first
52
53all:: subdirs
54
55clean:: clean-subdirs
56
57test:: test-subdirs
58
59# Include files
60
61INCFILES=	\
62	$(HCRYPTOINCLUDEDIR)\aes.h	\
63	$(HCRYPTOINCLUDEDIR)\bn.h	\
64	$(HCRYPTOINCLUDEDIR)\des.h	\
65	$(HCRYPTOINCLUDEDIR)\dh.h	\
66	$(HCRYPTOINCLUDEDIR)\dsa.h	\
67	$(HCRYPTOINCLUDEDIR)\ec.h	\
68	$(HCRYPTOINCLUDEDIR)\ecdh.h	\
69	$(HCRYPTOINCLUDEDIR)\ecdsa.h	\
70	$(HCRYPTOINCLUDEDIR)\engine.h	\
71	$(HCRYPTOINCLUDEDIR)\evp.h	\
72	$(HCRYPTOINCLUDEDIR)\evp-hcrypto.h	\
73	$(HCRYPTOINCLUDEDIR)\evp-cc.h	\
74	$(HCRYPTOINCLUDEDIR)\evp-openssl.h	\
75	$(HCRYPTOINCLUDEDIR)\evp-pkcs11.h	\
76	$(HCRYPTOINCLUDEDIR)\evp-wincng.h	\
77	$(HCRYPTOINCLUDEDIR)\evp-w32.h	\
78	$(HCRYPTOINCLUDEDIR)\hmac.h	\
79	$(HCRYPTOINCLUDEDIR)\md4.h	\
80	$(HCRYPTOINCLUDEDIR)\md5.h	\
81	$(HCRYPTOINCLUDEDIR)\pkcs12.h	\
82	$(HCRYPTOINCLUDEDIR)\rand.h	\
83	$(HCRYPTOINCLUDEDIR)\randi.h	\
84	$(HCRYPTOINCLUDEDIR)\rc2.h	\
85	$(HCRYPTOINCLUDEDIR)\rc4.h	\
86	$(HCRYPTOINCLUDEDIR)\rsa.h	\
87	$(HCRYPTOINCLUDEDIR)\sha.h	\
88	$(HCRYPTOINCLUDEDIR)\ui.h	\
89	$(HCRYPTOINCLUDEDIR)\undef.h
90
91mkincdir:
92!if !exist($(HCRYPTOINCLUDEDIR))
93	$(MKDIR) $(HCRYPTOINCLUDEDIR)
94!endif
95
96{}.h{$(HCRYPTOINCLUDEDIR)}.h:
97	$(CP) $** $@
98
99all:: mkincdir
100
101all:: $(INCFILES)
102
103# libhcrypto
104
105libhcrypto_OBJs = 			\
106	$(OBJ)\aes.obj			\
107	$(OBJ)\bn.obj			\
108	$(OBJ)\camellia.obj		\
109	$(OBJ)\camellia-ntt.obj		\
110	$(OBJ)\common.obj		\
111	$(OBJ)\des.obj			\
112	$(OBJ)\dh.obj			\
113	$(OBJ)\dh-ltm.obj		\
114	$(OBJ)\dh-tfm.obj		\
115	$(OBJ)\dsa.obj			\
116	$(OBJ)\evp.obj			\
117	$(OBJ)\evp-hcrypto.obj		\
118	$(OBJ)\evp-cc.obj		\
119	$(OBJ)\evp-openssl.obj		\
120	$(OBJ)\evp-pkcs11.obj		\
121	$(OBJ)\evp-wincng.obj		\
122	$(OBJ)\evp-w32.obj		\
123	$(OBJ)\engine.obj		\
124	$(OBJ)\hmac.obj			\
125	$(OBJ)\md4.obj			\
126	$(OBJ)\md5.obj			\
127	$(OBJ)\pkcs5.obj		\
128	$(OBJ)\pkcs12.obj		\
129	$(OBJ)\rand-w32.obj		\
130	$(OBJ)\rand.obj			\
131	$(OBJ)\rc2.obj			\
132	$(OBJ)\rc4.obj			\
133	$(OBJ)\rijndael-alg-fst.obj	\
134	$(OBJ)\rnd_keys.obj		\
135	$(OBJ)\rsa.obj			\
136	$(OBJ)\rsa-gmp.obj		\
137	$(OBJ)\rsa-ltm.obj		\
138	$(OBJ)\rsa-tfm.obj		\
139	$(OBJ)\sha.obj			\
140	$(OBJ)\sha256.obj		\
141	$(OBJ)\sha512.obj		\
142	$(OBJ)\ui.obj			\
143	$(OBJ)\validate.obj
144
145$(LIBHCRYPTO): $(libhcrypto_OBJs)
146	$(LIBCON)
147
148all:: $(LIBHCRYPTO)
149
150clean::
151	-$(RM) $(LIBHCRYPTO)
152
153# Tests
154
155TESTLIB=$(OBJ)\libhctest.lib
156
157$(TESTLIB):		    \
158	$(OBJ)\des.obj	    \
159	$(OBJ)\ui.obj
160	$(LIBCON)
161
162test-binaries:				\
163	$(OBJ)\destest.exe		\
164	$(OBJ)\example_evp_cipher.exe	\
165	$(OBJ)\mdtest.exe		\
166	$(OBJ)\rc2test.exe		\
167	$(OBJ)\rctest.exe		\
168	$(OBJ)\test_bn.exe		\
169	$(OBJ)\test_bulk.exe		\
170	$(OBJ)\test_cipher.exe		\
171	$(OBJ)\test_engine_dso.exe	\
172	$(OBJ)\test_hmac.exe		\
173	$(OBJ)\test_pkcs5.exe		\
174	$(OBJ)\test_pkcs12.exe		\
175	$(OBJ)\test_rsa.exe		\
176	$(OBJ)\test_dh.exe		\
177	$(OBJ)\test_rand.exe		\
178	$(OBJ)\test_crypto.sh
179
180$(OBJ)\destest.exe: $(OBJ)\destest.obj $(TESTLIB) $(LIBROKEN) $(LIBHEIMBASE)
181	$(EXECONLINK)
182	$(EXEPREP_NODIST)
183
184$(OBJ)\example_evp_cipher.exe: $(OBJ)\example_evp_cipher.obj $(TESTLIB) $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE)
185	$(EXECONLINK)
186	$(EXEPREP_NODIST)
187
188$(OBJ)\mdtest.exe: $(OBJ)\mdtest.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(OBJ)\sha512.obj
189	$(EXECONLINK)
190	$(EXEPREP_NODIST)
191
192$(OBJ)\rc2test.exe: $(OBJ)\rc2test.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE)
193	$(EXECONLINK)
194	$(EXEPREP_NODIST)
195
196$(OBJ)\rctest.exe: $(OBJ)\rctest.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE)
197	$(EXECONLINK)
198	$(EXEPREP_NODIST)
199
200$(OBJ)\test_bn.exe: $(OBJ)\test_bn.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE)
201	$(EXECONLINK)
202	$(EXEPREP_NODIST)
203
204$(OBJ)\test_bulk.exe: $(OBJ)\test_bulk.obj $(TESTLIB) $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS)
205	$(EXECONLINK)
206	$(EXEPREP_NODIST)
207
208$(OBJ)\test_cipher.exe: $(OBJ)\test_cipher.obj $(TESTLIB) $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS)
209	$(EXECONLINK)
210	$(EXEPREP_NODIST)
211
212$(OBJ)\test_engine_dso.exe: $(OBJ)\test_engine_dso.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS)
213	$(EXECONLINK)
214	$(EXEPREP_NODIST)
215
216$(OBJ)\test_hmac.exe: $(OBJ)\test_hmac.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE)
217	$(EXECONLINK)
218	$(EXEPREP_NODIST)
219
220$(OBJ)\test_pkcs5.exe: $(OBJ)\test_pkcs5.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE)
221	$(EXECONLINK)
222	$(EXEPREP_NODIST)
223
224$(OBJ)\test_pkcs12.exe: $(OBJ)\test_pkcs12.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE)
225	$(EXECONLINK)
226	$(EXEPREP_NODIST)
227
228$(OBJ)\test_rsa.exe: $(OBJ)\test_rsa.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS)
229	$(EXECONLINK)
230	$(EXEPREP_NODIST)
231
232$(OBJ)\test_dh.exe: $(OBJ)\test_dh.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS)
233	$(EXECONLINK)
234	$(EXEPREP_NODIST)
235
236$(OBJ)\test_rand.exe: $(OBJ)\test_rand.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS)
237	$(EXECONLINK)
238	$(EXEPREP_NODIST)
239
240SRCDIR2=$(SRCDIR:\=\\\\)
241
242$(OBJ)\test_crypto.sh: test_crypto.in NTMakefile
243	$(SED) -e "s,[@]srcdir[@],$(SRCDIR2),g" -e "s,[@]exeext[@],.exe,g" -e "s,\r,," < test_crypto.in > $@ || $(RM) $@
244
245test-run:
246	cd $(OBJ)
247!ifdef SH
248	-$(SH) test_crypto.sh
249!endif
250	-destest.exe
251	-mdtest.exe
252	-rc2test.exe
253	-rctest.exe
254	-test_bn.exe
255	-test_bulk.exe --provider=hcrypto
256	-test_bulk.exe --provider=w32crypto
257	-test_cipher.exe
258	-test_engine_dso.exe
259	-test_hmac.exe
260	-test_pkcs5.exe
261	-test_pkcs12.exe
262	-test_rsa.exe
263	-test_dh.exe
264	cd $(SRCDIR)
265
266test:: $(TESTLIB) test-binaries test-run
267
268test-exports:
269	$(PERL) ..\..\cf\w32-check-exported-symbols.pl --vs version-script.map --def libhcrypto-exports.def
270
271test:: test-exports
272