]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/bearssl/mk/mkrules.sh
MFV r349134:
[FreeBSD/FreeBSD.git] / contrib / 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