Fix: make static ECDH selectable with the br_ssl_client_set_single_ec() helper function.
[BearSSL] / mk / mkrules.sh
1 #! /bin/sh
2
3 # ========================================================================
4 #
5 # Copyright (c) 2017 Thomas Pornin <pornin@bolet.org>
6 #
7 # Permission is hereby granted, free of charge, to any person obtaining
8 # a copy of this software and associated documentation files (the
9 # "Software"), to deal in the Software without restriction, including
10 # without limitation the rights to use, copy, modify, merge, publish,
11 # distribute, sublicense, and/or sell copies of the Software, and to
12 # permit persons to whom the Software is furnished to do so, subject to
13 # the following conditions:
14 #
15 # The above copyright notice and this permission notice shall be
16 # included in all copies or substantial portions of the Software.
17 #
18 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
22 # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
23 # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25 # SOFTWARE.
26 #
27 # ========================================================================
28 #
29 # This script is used to generate the 'Rules.mk' file from the list
30 # of source file included below. If the list changes (e.g. to add a
31 # new source file), then add it here and rerun this script.
32 #
33 # ========================================================================
34
35 # Solaris compatibility: switch to a more POSIX-compliant /bin/sh.
36 if [ -z "$BR_SCRIPT_LOOP" ] ; then
37 BR_SCRIPT_LOOP=yes
38 export BR_SCRIPT_LOOP
39 if [ -x /usr/xpg6/bin/sh ] ; then
40 exec /usr/xpg6/bin/sh "$0" "$@"
41 fi
42 if [ -x /usr/xpg4/bin/sh ] ; then
43 exec /usr/xpg4/bin/sh "$0" "$@"
44 fi
45 fi
46
47 # Exit on first error.
48 set -e
49
50 # Source files. Please keep in alphabetical order.
51 coresrc=" \
52 src/settings.c \
53 src/aead/ccm.c \
54 src/aead/eax.c \
55 src/aead/gcm.c \
56 src/codec/ccopy.c \
57 src/codec/dec16be.c \
58 src/codec/dec16le.c \
59 src/codec/dec32be.c \
60 src/codec/dec32le.c \
61 src/codec/dec64be.c \
62 src/codec/dec64le.c \
63 src/codec/enc16be.c \
64 src/codec/enc16le.c \
65 src/codec/enc32be.c \
66 src/codec/enc32le.c \
67 src/codec/enc64be.c \
68 src/codec/enc64le.c \
69 src/codec/pemdec.c \
70 src/codec/pemenc.c \
71 src/ec/ec_all_m15.c \
72 src/ec/ec_all_m31.c \
73 src/ec/ec_c25519_i15.c \
74 src/ec/ec_c25519_i31.c \
75 src/ec/ec_c25519_m15.c \
76 src/ec/ec_c25519_m31.c \
77 src/ec/ec_c25519_m62.c \
78 src/ec/ec_c25519_m64.c \
79 src/ec/ec_curve25519.c \
80 src/ec/ec_default.c \
81 src/ec/ec_keygen.c \
82 src/ec/ec_p256_m15.c \
83 src/ec/ec_p256_m31.c \
84 src/ec/ec_p256_m62.c \
85 src/ec/ec_p256_m64.c \
86 src/ec/ec_prime_i15.c \
87 src/ec/ec_prime_i31.c \
88 src/ec/ec_pubkey.c \
89 src/ec/ec_secp256r1.c \
90 src/ec/ec_secp384r1.c \
91 src/ec/ec_secp521r1.c \
92 src/ec/ecdsa_atr.c \
93 src/ec/ecdsa_default_sign_asn1.c \
94 src/ec/ecdsa_default_sign_raw.c \
95 src/ec/ecdsa_default_vrfy_asn1.c \
96 src/ec/ecdsa_default_vrfy_raw.c \
97 src/ec/ecdsa_i15_bits.c \
98 src/ec/ecdsa_i15_sign_asn1.c \
99 src/ec/ecdsa_i15_sign_raw.c \
100 src/ec/ecdsa_i15_vrfy_asn1.c \
101 src/ec/ecdsa_i15_vrfy_raw.c \
102 src/ec/ecdsa_i31_bits.c \
103 src/ec/ecdsa_i31_sign_asn1.c \
104 src/ec/ecdsa_i31_sign_raw.c \
105 src/ec/ecdsa_i31_vrfy_asn1.c \
106 src/ec/ecdsa_i31_vrfy_raw.c \
107 src/ec/ecdsa_rta.c \
108 src/hash/dig_oid.c \
109 src/hash/dig_size.c \
110 src/hash/ghash_ctmul.c \
111 src/hash/ghash_ctmul32.c \
112 src/hash/ghash_ctmul64.c \
113 src/hash/ghash_pclmul.c \
114 src/hash/ghash_pwr8.c \
115 src/hash/md5.c \
116 src/hash/md5sha1.c \
117 src/hash/mgf1.c \
118 src/hash/multihash.c \
119 src/hash/sha1.c \
120 src/hash/sha2big.c \
121 src/hash/sha2small.c \
122 src/int/i15_add.c \
123 src/int/i15_bitlen.c \
124 src/int/i15_decmod.c \
125 src/int/i15_decode.c \
126 src/int/i15_decred.c \
127 src/int/i15_encode.c \
128 src/int/i15_fmont.c \
129 src/int/i15_iszero.c \
130 src/int/i15_moddiv.c \
131 src/int/i15_modpow.c \
132 src/int/i15_modpow2.c \
133 src/int/i15_montmul.c \
134 src/int/i15_mulacc.c \
135 src/int/i15_muladd.c \
136 src/int/i15_ninv15.c \
137 src/int/i15_reduce.c \
138 src/int/i15_rshift.c \
139 src/int/i15_sub.c \
140 src/int/i15_tmont.c \
141 src/int/i31_add.c \
142 src/int/i31_bitlen.c \
143 src/int/i31_decmod.c \
144 src/int/i31_decode.c \
145 src/int/i31_decred.c \
146 src/int/i31_encode.c \
147 src/int/i31_fmont.c \
148 src/int/i31_iszero.c \
149 src/int/i31_moddiv.c \
150 src/int/i31_modpow.c \
151 src/int/i31_modpow2.c \
152 src/int/i31_montmul.c \
153 src/int/i31_mulacc.c \
154 src/int/i31_muladd.c \
155 src/int/i31_ninv31.c \
156 src/int/i31_reduce.c \
157 src/int/i31_rshift.c \
158 src/int/i31_sub.c \
159 src/int/i31_tmont.c \
160 src/int/i32_add.c \
161 src/int/i32_bitlen.c \
162 src/int/i32_decmod.c \
163 src/int/i32_decode.c \
164 src/int/i32_decred.c \
165 src/int/i32_div32.c \
166 src/int/i32_encode.c \
167 src/int/i32_fmont.c \
168 src/int/i32_iszero.c \
169 src/int/i32_modpow.c \
170 src/int/i32_montmul.c \
171 src/int/i32_mulacc.c \
172 src/int/i32_muladd.c \
173 src/int/i32_ninv32.c \
174 src/int/i32_reduce.c \
175 src/int/i32_sub.c \
176 src/int/i32_tmont.c \
177 src/int/i62_modpow2.c \
178 src/kdf/hkdf.c \
179 src/kdf/shake.c \
180 src/mac/hmac.c \
181 src/mac/hmac_ct.c \
182 src/rand/aesctr_drbg.c \
183 src/rand/hmac_drbg.c \
184 src/rand/sysrng.c \
185 src/rsa/rsa_default_keygen.c \
186 src/rsa/rsa_default_modulus.c \
187 src/rsa/rsa_default_oaep_decrypt.c \
188 src/rsa/rsa_default_oaep_encrypt.c \
189 src/rsa/rsa_default_pkcs1_sign.c \
190 src/rsa/rsa_default_pkcs1_vrfy.c \
191 src/rsa/rsa_default_priv.c \
192 src/rsa/rsa_default_privexp.c \
193 src/rsa/rsa_default_pss_sign.c \
194 src/rsa/rsa_default_pss_vrfy.c \
195 src/rsa/rsa_default_pub.c \
196 src/rsa/rsa_default_pubexp.c \
197 src/rsa/rsa_i15_keygen.c \
198 src/rsa/rsa_i15_modulus.c \
199 src/rsa/rsa_i15_oaep_decrypt.c \
200 src/rsa/rsa_i15_oaep_encrypt.c \
201 src/rsa/rsa_i15_pkcs1_sign.c \
202 src/rsa/rsa_i15_pkcs1_vrfy.c \
203 src/rsa/rsa_i15_priv.c \
204 src/rsa/rsa_i15_privexp.c \
205 src/rsa/rsa_i15_pss_sign.c \
206 src/rsa/rsa_i15_pss_vrfy.c \
207 src/rsa/rsa_i15_pub.c \
208 src/rsa/rsa_i15_pubexp.c \
209 src/rsa/rsa_i31_keygen.c \
210 src/rsa/rsa_i31_keygen_inner.c \
211 src/rsa/rsa_i31_modulus.c \
212 src/rsa/rsa_i31_oaep_decrypt.c \
213 src/rsa/rsa_i31_oaep_encrypt.c \
214 src/rsa/rsa_i31_pkcs1_sign.c \
215 src/rsa/rsa_i31_pkcs1_vrfy.c \
216 src/rsa/rsa_i31_priv.c \
217 src/rsa/rsa_i31_privexp.c \
218 src/rsa/rsa_i31_pss_sign.c \
219 src/rsa/rsa_i31_pss_vrfy.c \
220 src/rsa/rsa_i31_pub.c \
221 src/rsa/rsa_i31_pubexp.c \
222 src/rsa/rsa_i32_oaep_decrypt.c \
223 src/rsa/rsa_i32_oaep_encrypt.c \
224 src/rsa/rsa_i32_pkcs1_sign.c \
225 src/rsa/rsa_i32_pkcs1_vrfy.c \
226 src/rsa/rsa_i32_priv.c \
227 src/rsa/rsa_i32_pss_sign.c \
228 src/rsa/rsa_i32_pss_vrfy.c \
229 src/rsa/rsa_i32_pub.c \
230 src/rsa/rsa_i62_keygen.c \
231 src/rsa/rsa_i62_oaep_decrypt.c \
232 src/rsa/rsa_i62_oaep_encrypt.c \
233 src/rsa/rsa_i62_pkcs1_sign.c \
234 src/rsa/rsa_i62_pkcs1_vrfy.c \
235 src/rsa/rsa_i62_priv.c \
236 src/rsa/rsa_i62_pss_sign.c \
237 src/rsa/rsa_i62_pss_vrfy.c \
238 src/rsa/rsa_i62_pub.c \
239 src/rsa/rsa_oaep_pad.c \
240 src/rsa/rsa_oaep_unpad.c \
241 src/rsa/rsa_pkcs1_sig_pad.c \
242 src/rsa/rsa_pkcs1_sig_unpad.c \
243 src/rsa/rsa_pss_sig_pad.c \
244 src/rsa/rsa_pss_sig_unpad.c \
245 src/rsa/rsa_ssl_decrypt.c \
246 src/ssl/prf.c \
247 src/ssl/prf_md5sha1.c \
248 src/ssl/prf_sha256.c \
249 src/ssl/prf_sha384.c \
250 src/ssl/ssl_ccert_single_ec.c \
251 src/ssl/ssl_ccert_single_rsa.c \
252 src/ssl/ssl_client.c \
253 src/ssl/ssl_client_default_rsapub.c \
254 src/ssl/ssl_client_full.c \
255 src/ssl/ssl_engine.c \
256 src/ssl/ssl_engine_default_aescbc.c \
257 src/ssl/ssl_engine_default_aesccm.c \
258 src/ssl/ssl_engine_default_aesgcm.c \
259 src/ssl/ssl_engine_default_chapol.c \
260 src/ssl/ssl_engine_default_descbc.c \
261 src/ssl/ssl_engine_default_ec.c \
262 src/ssl/ssl_engine_default_ecdsa.c \
263 src/ssl/ssl_engine_default_rsavrfy.c \
264 src/ssl/ssl_hashes.c \
265 src/ssl/ssl_hs_client.c \
266 src/ssl/ssl_hs_server.c \
267 src/ssl/ssl_io.c \
268 src/ssl/ssl_keyexport.c \
269 src/ssl/ssl_lru.c \
270 src/ssl/ssl_rec_cbc.c \
271 src/ssl/ssl_rec_ccm.c \
272 src/ssl/ssl_rec_chapol.c \
273 src/ssl/ssl_rec_gcm.c \
274 src/ssl/ssl_scert_single_ec.c \
275 src/ssl/ssl_scert_single_rsa.c \
276 src/ssl/ssl_server.c \
277 src/ssl/ssl_server_full_ec.c \
278 src/ssl/ssl_server_full_rsa.c \
279 src/ssl/ssl_server_mine2c.c \
280 src/ssl/ssl_server_mine2g.c \
281 src/ssl/ssl_server_minf2c.c \
282 src/ssl/ssl_server_minf2g.c \
283 src/ssl/ssl_server_minr2g.c \
284 src/ssl/ssl_server_minu2g.c \
285 src/ssl/ssl_server_minv2g.c \
286 src/symcipher/aes_big_cbcdec.c \
287 src/symcipher/aes_big_cbcenc.c \
288 src/symcipher/aes_big_ctr.c \
289 src/symcipher/aes_big_ctrcbc.c \
290 src/symcipher/aes_big_dec.c \
291 src/symcipher/aes_big_enc.c \
292 src/symcipher/aes_common.c \
293 src/symcipher/aes_ct.c \
294 src/symcipher/aes_ct64.c \
295 src/symcipher/aes_ct64_cbcdec.c \
296 src/symcipher/aes_ct64_cbcenc.c \
297 src/symcipher/aes_ct64_ctr.c \
298 src/symcipher/aes_ct64_ctrcbc.c \
299 src/symcipher/aes_ct64_dec.c \
300 src/symcipher/aes_ct64_enc.c \
301 src/symcipher/aes_ct_cbcdec.c \
302 src/symcipher/aes_ct_cbcenc.c \
303 src/symcipher/aes_ct_ctr.c \
304 src/symcipher/aes_ct_ctrcbc.c \
305 src/symcipher/aes_ct_dec.c \
306 src/symcipher/aes_ct_enc.c \
307 src/symcipher/aes_pwr8.c \
308 src/symcipher/aes_pwr8_cbcdec.c \
309 src/symcipher/aes_pwr8_cbcenc.c \
310 src/symcipher/aes_pwr8_ctr.c \
311 src/symcipher/aes_pwr8_ctrcbc.c \
312 src/symcipher/aes_small_cbcdec.c \
313 src/symcipher/aes_small_cbcenc.c \
314 src/symcipher/aes_small_ctr.c \
315 src/symcipher/aes_small_ctrcbc.c \
316 src/symcipher/aes_small_dec.c \
317 src/symcipher/aes_small_enc.c \
318 src/symcipher/aes_x86ni.c \
319 src/symcipher/aes_x86ni_cbcdec.c \
320 src/symcipher/aes_x86ni_cbcenc.c \
321 src/symcipher/aes_x86ni_ctr.c \
322 src/symcipher/aes_x86ni_ctrcbc.c \
323 src/symcipher/chacha20_ct.c \
324 src/symcipher/chacha20_sse2.c \
325 src/symcipher/des_ct.c \
326 src/symcipher/des_ct_cbcdec.c \
327 src/symcipher/des_ct_cbcenc.c \
328 src/symcipher/des_support.c \
329 src/symcipher/des_tab.c \
330 src/symcipher/des_tab_cbcdec.c \
331 src/symcipher/des_tab_cbcenc.c \
332 src/symcipher/poly1305_ctmul.c \
333 src/symcipher/poly1305_ctmul32.c \
334 src/symcipher/poly1305_ctmulq.c \
335 src/symcipher/poly1305_i15.c \
336 src/x509/asn1enc.c \
337 src/x509/encode_ec_pk8der.c \
338 src/x509/encode_ec_rawder.c \
339 src/x509/encode_rsa_pk8der.c \
340 src/x509/encode_rsa_rawder.c \
341 src/x509/skey_decoder.c \
342 src/x509/x509_decoder.c \
343 src/x509/x509_knownkey.c \
344 src/x509/x509_minimal.c \
345 src/x509/x509_minimal_full.c"
346
347 # Source files for the 'brssl' command-line tool.
348 toolssrc=" \
349 tools/brssl.c \
350 tools/certs.c \
351 tools/chain.c \
352 tools/client.c \
353 tools/errors.c \
354 tools/files.c \
355 tools/impl.c \
356 tools/keys.c \
357 tools/names.c \
358 tools/server.c \
359 tools/skey.c \
360 tools/sslio.c \
361 tools/ta.c \
362 tools/twrch.c \
363 tools/vector.c \
364 tools/verify.c \
365 tools/xmem.c"
366
367 # Source files the the 'testcrypto' command-line tool.
368 testcryptosrc=" \
369 test/test_crypto.c"
370
371 # Source files the the 'testspeed' command-line tool.
372 testspeedsrc=" \
373 test/test_speed.c"
374
375 # Source files the the 'testx509' command-line tool.
376 testx509src=" \
377 test/test_x509.c"
378
379 # Public header files.
380 headerspub=" \
381 inc/bearssl.h \
382 inc/bearssl_aead.h \
383 inc/bearssl_block.h \
384 inc/bearssl_ec.h \
385 inc/bearssl_hash.h \
386 inc/bearssl_hmac.h \
387 inc/bearssl_kdf.h \
388 inc/bearssl_pem.h \
389 inc/bearssl_prf.h \
390 inc/bearssl_rand.h \
391 inc/bearssl_rsa.h \
392 inc/bearssl_ssl.h \
393 inc/bearssl_x509.h"
394
395 # Private header files.
396 headerspriv=" \
397 src/config.h \
398 src/inner.h"
399
400 # Header files for the 'brssl' command-line tool.
401 headerstools=" \
402 tools/brssl.h"
403
404 # T0 compiler source code.
405 t0compsrc=" \
406 T0/BlobWriter.cs \
407 T0/CPU.cs \
408 T0/CodeElement.cs \
409 T0/CodeElementJump.cs \
410 T0/CodeElementUInt.cs \
411 T0/CodeElementUIntExpr.cs \
412 T0/CodeElementUIntInt.cs \
413 T0/CodeElementUIntUInt.cs \
414 T0/ConstData.cs \
415 T0/Opcode.cs \
416 T0/OpcodeCall.cs \
417 T0/OpcodeConst.cs \
418 T0/OpcodeGetLocal.cs \
419 T0/OpcodeJump.cs \
420 T0/OpcodeJumpIf.cs \
421 T0/OpcodeJumpIfNot.cs \
422 T0/OpcodeJumpUncond.cs \
423 T0/OpcodePutLocal.cs \
424 T0/OpcodeRet.cs \
425 T0/SType.cs \
426 T0/T0Comp.cs \
427 T0/TPointerBase.cs \
428 T0/TPointerBlob.cs \
429 T0/TPointerExpr.cs \
430 T0/TPointerNull.cs \
431 T0/TPointerXT.cs \
432 T0/TValue.cs \
433 T0/Word.cs \
434 T0/WordBuilder.cs \
435 T0/WordData.cs \
436 T0/WordInterpreted.cs \
437 T0/WordNative.cs"
438
439 t0compkern=" \
440 T0/kern.t0"
441
442 # Function to turn slashes into $P (macro for path separator).
443 escsep() {
444 printf '%s' "$1" | sed 's/\//$P/g'
445 }
446
447 # Create rules file.
448 rm -f Rules.mk
449 cat > Rules.mk <<EOF
450 # Automatically generated rules. Use 'mkrules.sh' to modify/regenerate.
451 EOF
452
453 (printf "\nOBJ ="
454 for f in $coresrc ; do
455 printf ' \\\n $(OBJDIR)$P%s' "$(basename "$f" .c)\$O"
456 done
457 printf "\nOBJBRSSL ="
458 for f in $toolssrc ; do
459 printf ' \\\n $(OBJDIR)$P%s' "$(basename "$f" .c)\$O"
460 done
461 printf "\nOBJTESTCRYPTO ="
462 for f in $testcryptosrc ; do
463 printf ' \\\n $(OBJDIR)$P%s' "$(basename "$f" .c)\$O"
464 done
465 printf "\nOBJTESTSPEED ="
466 for f in $testspeedsrc ; do
467 printf ' \\\n $(OBJDIR)$P%s' "$(basename "$f" .c)\$O"
468 done
469 printf "\nOBJTESTX509 ="
470 for f in $testx509src ; do
471 printf ' \\\n $(OBJDIR)$P%s' "$(basename "$f" .c)\$O"
472 done
473 printf "\nHEADERSPUB ="
474 for f in $headerspub ; do
475 printf " %s" "$(escsep "$f")"
476 done
477 printf "\nHEADERSPRIV = %s" '$(HEADERSPUB)'
478 for f in $headerspriv ; do
479 printf " %s" "$(escsep "$f")"
480 done
481 printf "\nHEADERSTOOLS = %s" '$(HEADERSPUB)'
482 for f in $headerstools ; do
483 printf " %s" "$(escsep "$f")"
484 done
485 printf "\nT0SRC ="
486 for f in $t0compsrc ; do
487 printf " %s" "$(escsep "$f")"
488 done
489 printf "\nT0KERN ="
490 for f in $t0kernsrc ; do
491 printf " %s" "$(escsep "$f")"
492 done
493 printf "\n") >> Rules.mk
494
495 cat >> Rules.mk <<EOF
496
497 all: \$(STATICLIB) \$(DLL) \$(TOOLS) \$(TESTS)
498
499 no:
500
501 lib: \$(BEARSSLLIB)
502
503 dll: \$(BEARSSLDLL)
504
505 tools: \$(BRSSL)
506
507 tests: \$(TESTCRYPTO) \$(TESTSPEED) \$(TESTX509)
508
509 T0: kT0
510
511 kT0: \$(T0COMP) src\$Pssl\$Pssl_hs_common.t0 src\$Pssl\$Pssl_hs_client.t0 src\$Pssl\$Pssl_hs_server.t0 src\$Px509\$Pasn1.t0 src\$Px509\$Pskey_decoder.t0 src\$Px509\$Px509_decoder.t0 src\$Px509\$Px509_minimal.t0
512 \$(RUNT0COMP) -o src\$Pcodec\$Ppemdec -r br_pem_decoder src\$Pcodec\$Ppemdec.t0
513 \$(RUNT0COMP) -o src\$Pssl\$Pssl_hs_client -r br_ssl_hs_client src\$Pssl\$Pssl_hs_common.t0 src\$Pssl\$Pssl_hs_client.t0
514 \$(RUNT0COMP) -o src\$Pssl\$Pssl_hs_server -r br_ssl_hs_server src\$Pssl\$Pssl_hs_common.t0 src\$Pssl\$Pssl_hs_server.t0
515 \$(RUNT0COMP) -o src\$Px509\$Pskey_decoder -r br_skey_decoder src\$Px509\$Pasn1.t0 src\$Px509\$Pskey_decoder.t0
516 \$(RUNT0COMP) -o src\$Px509\$Px509_decoder -r br_x509_decoder src\$Px509\$Pasn1.t0 src\$Px509\$Px509_decoder.t0
517 \$(RUNT0COMP) -o src\$Px509\$Px509_minimal -r br_x509_minimal src\$Px509\$Pasn1.t0 src\$Px509\$Px509_minimal.t0
518
519 \$(T0COMP): \$(T0SRC) \$(T0KERN)
520 \$(MKT0COMP)
521
522 clean:
523 -\$(RM) \$(OBJDIR)\$P*\$O
524 -\$(RM) \$(BEARSSLLIB) \$(BEARSSLDLL) \$(BRSSL) \$(TESTCRYPTO) \$(TESTSPEED) \$(TESTX509)
525
526 \$(OBJDIR):
527 -\$(MKDIR) \$(OBJDIR)
528
529 \$(BEARSSLLIB): \$(OBJDIR) \$(OBJ)
530 \$(AR) \$(ARFLAGS) \$(AROUT)\$(BEARSSLLIB) \$(OBJ)
531
532 \$(BEARSSLDLL): \$(OBJDIR) \$(OBJ)
533 \$(LDDLL) \$(LDDLLFLAGS) \$(LDDLLOUT)\$(BEARSSLDLL) \$(OBJ)
534
535 \$(BRSSL): \$(BEARSSLLIB) \$(OBJBRSSL)
536 \$(LD) \$(LDFLAGS) \$(LDOUT)\$(BRSSL) \$(OBJBRSSL) \$(BEARSSLLIB)
537
538 \$(TESTCRYPTO): \$(BEARSSLLIB) \$(OBJTESTCRYPTO)
539 \$(LD) \$(LDFLAGS) \$(LDOUT)\$(TESTCRYPTO) \$(OBJTESTCRYPTO) \$(BEARSSLLIB)
540
541 \$(TESTSPEED): \$(BEARSSLLIB) \$(OBJTESTSPEED)
542 \$(LD) \$(LDFLAGS) \$(LDOUT)\$(TESTSPEED) \$(OBJTESTSPEED) \$(BEARSSLLIB)
543
544 \$(TESTX509): \$(BEARSSLLIB) \$(OBJTESTX509)
545 \$(LD) \$(LDFLAGS) \$(LDOUT)\$(TESTX509) \$(OBJTESTX509) \$(BEARSSLLIB)
546 EOF
547
548 (for f in $coresrc ; do
549 b="$(basename "$f" .c)\$O"
550 g="$(escsep "$f")"
551 printf '\n$(OBJDIR)$P%s: %s $(HEADERSPRIV)\n\t$(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$P%s %s\n' "$b" "$g" "$b" "$g"
552 done
553
554 for f in $toolssrc ; do
555 b="$(basename "$f" .c)\$O"
556 g="$(escsep "$f")"
557 printf '\n$(OBJDIR)$P%s: %s $(HEADERSTOOLS)\n\t$(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$P%s %s\n' "$b" "$g" "$b" "$g"
558 done
559
560 for f in $testcryptosrc $testspeedsrc ; do
561 b="$(basename "$f" .c)\$O"
562 g="$(escsep "$f")"
563 printf '\n$(OBJDIR)$P%s: %s $(HEADERSPRIV)\n\t$(CC) $(CFLAGS) $(INCFLAGS) $(CCOUT)$(OBJDIR)$P%s %s\n' "$b" "$g" "$b" "$g"
564 done
565
566 for f in $testx509src ; do
567 b="$(basename "$f" .c)\$O"
568 g="$(escsep "$f")"
569 printf '\n$(OBJDIR)$P%s: %s $(HEADERSPRIV)\n\t$(CC) $(CFLAGS) $(INCFLAGS) -DSRCDIRNAME=".." $(CCOUT)$(OBJDIR)$P%s %s\n' "$b" "$g" "$b" "$g"
570 done) >> Rules.mk