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