1VER=`head -n 1 ../VERSION`
2LIBDIR=/usr/local/lib
3INSTDIR=/usr/local/lib/libadacrypt-dev-$(VER)
4
5GNATCLEAN=gnatclean
6DEL=rm -f
7DELDIR= rm -rf
8
9CC=gnatmake
10CFLAGS=-c  -shared -gnato -s -O3 -gnatn -gnat12 -W -Wall -Werror
11
12all: types asymmetric symmetric
13gcov: CFLAGS=-f -c -shared -gnat12 -s -O0 -gnatE -gnatf -gnato -W -Wall -Werror -fprofile-arcs -ftest-coverage -fprofile-arcs -fno-inline
14gcov: all
15symmetric: hashfunction onewaybc mode mac blockcipher ae tweakable-blockcipher crypto-symmetric-utils
16asymmetric: crypto-asymmetric-dsa crypto-asymmetric-rsa ec
17certificate: crypto-certificate
18ec:  crypto-asymmetric-ecdsa crypto-asymmetric-ecdh crypto-asymmetric-ecies
19hashfunction: crypto-symmetric-hashfunction_sha256 crypto-symmetric-hashfunction_sha512 crypto-symmetric-hashfunction_whirlpool
20onewaybc: crypto-symmetric-oneway_blockcipher_whirlpool crypto-symmetric-oneway_blockcipher_twofish256 crypto-symmetric-oneway_blockcipher_twofish192  crypto-symmetric-oneway_blockcipher_twofish128 crypto-symmetric-oneway_blockcipher_tripledes crypto-symmetric-oneway_blockcipher_sha512 crypto-symmetric-oneway_blockcipher_sha384 crypto-symmetric-oneway_blockcipher_sha256 crypto-symmetric-oneway_blockcipher_sha1 crypto-symmetric-oneway_blockcipher_serpent256 crypto-symmetric-oneway_blockcipher_blowfish128 crypto-symmetric-oneway_blockcipher_aes256 crypto-symmetric-oneway_blockcipher_aes192 crypto-symmetric-oneway_blockcipher_aes128
21mode: crypto-symmetric-mode-oneway_ofb crypto-symmetric-mode-oneway_ctr crypto-symmetric-mode-oneway_cfb crypto-symmetric-mode-ofb crypto-symmetric-mode-ctr crypto-symmetric-mode-cfb crypto-symmetric-mode-cbc crypto-symmetric-mode-bps
22mac: crypto-symmetric-mac-rmac crypto-symmetric-mac-hmac_whirlpool crypto-symmetric-mac-hmac_sha512 crypto-symmetric-mac-hmac_sha256 crypto-symmetric-mac-hmac_sha1
23blockcipher:  crypto-symmetric-blockcipher_twofish256 crypto-symmetric-blockcipher_twofish192 crypto-symmetric-blockcipher_twofish128 crypto-symmetric-blockcipher_tripledes crypto-symmetric-blockcipher_serpent256 crypto-symmetric-blockcipher_blowfish128 crypto-symmetric-blockcipher_aes256 crypto-symmetric-blockcipher_aes192 crypto-symmetric-blockcipher_aes128
24tweakable-blockcipher: crypto-symmetric-tweakable_blockcipher_cmt crypto-symmetric-tweakable_blockcipher_tx
25types: crypto-types-big_numbers crypto-types-elliptic_curves-ss_bf crypto-types-elliptic_curves-nss_bf crypto-types-mutexes crypto-types-nonces-nonces_ctr crypto-types-nonces-nonces_mixed_1 crypto-types-nonces-nonces_mixed_2  crypto-types-nonces-nonces_random crypto-types-nonces-nonces_randomized_counter
26ae: crypto-symmetric-aead_mcoe crypto-symmetric-aead_siv.adb crypto-symmetric-ae_ocb.adb
27kdf: crypto-symmetric-kdf_pbkdf2  crypto-symmetric-kdf_scrypt
28
29
30crypto-symmetric-kdf_pbkdf2:
31	$(CC) $(CFLAGS) $@
32
33crypto-symmetric-kdf_scrypt:
34	$(CC) $(CFLAGS) $@
35
36crypto-asymmetric-ecies:
37	$(CC) $(CFLAGS) $@
38
39crypto-asymmetric-ecdh:
40	$(CC) $(CFLAGS) $@
41
42crypto-symmetric-blockcipher_twofish256:
43	$(CC) $(CFLAGS) $@
44
45crypto-symmetric-blockcipher_twofish192:
46	$(CC) $(CFLAGS) $@
47
48crypto-symmetric-blockcipher_twofish128:
49	$(CC) $(CFLAGS) $@
50
51crypto-symmetric-blockcipher_tripledes:
52	$(CC) $(CFLAGS) $@
53
54crypto-symmetric-blockcipher_serpent256:
55	$(CC) $(CFLAGS) $@
56
57crypto-symmetric-blockcipher_blowfish128:
58	$(CC) $(CFLAGS) $@
59
60crypto-symmetric-blockcipher_aes256:
61	$(CC) $(CFLAGS) $@
62
63crypto-symmetric-blockcipher_aes192:
64	$(CC) $(CFLAGS) $@
65
66crypto-symmetric-blockcipher_aes128:
67	$(CC) $(CFLAGS) $@
68
69crypto-symmetric-mac-hmac_sha512:
70	$(CC) $(CFLAGS) $@
71
72crypto-symmetric-mac-hmac_sha256:
73	$(CC) $(CFLAGS) $@
74
75crypto-symmetric-mac-hmac_sha1:
76	$(CC) $(CFLAGS) $@
77
78crypto-symmetric-mac-hmac_whirlpool:
79	$(CC) $(CFLAGS) $@
80
81crypto-symmetric-mac-rmac:
82	$(CC) $(CFLAGS) $@
83
84crypto-symmetric-mode-bps:
85	$(CC) $(CFLAGS) $@
86
87crypto-symmetric-mode-cbc:
88	$(CC) $(CFLAGS) $@
89
90crypto-symmetric-mode-cfb:
91	$(CC) $(CFLAGS) $@
92
93crypto-symmetric-mode-ctr:
94	$(CC) $(CFLAGS) $@
95
96crypto-symmetric-mode-ofb:
97	$(CC) $(CFLAGS) $@
98
99crypto-symmetric-mode-oneway_cfb:
100	$(CC) $(CFLAGS) $@
101
102crypto-symmetric-mode-oneway_ctr:
103	$(CC) $(CFLAGS) $@
104
105crypto-symmetric-mode-oneway_ofb:
106	$(CC) $(CFLAGS) $@
107
108crypto-symmetric-oneway_blockcipher_aes128:
109	$(CC) $(CFLAGS) $@
110
111crypto-symmetric-oneway_blockcipher_aes192:
112	$(CC) $(CFLAGS) $@
113
114crypto-symmetric-oneway_blockcipher_aes256:
115	$(CC) $(CFLAGS) $@
116
117crypto-symmetric-oneway_blockcipher_blowfish128:
118	$(CC) $(CFLAGS) $@
119
120crypto-symmetric-oneway_blockcipher_serpent256:
121	$(CC) $(CFLAGS) $@
122
123crypto-symmetric-oneway_blockcipher_sha1:
124	$(CC) $(CFLAGS) $@
125
126crypto-symmetric-oneway_blockcipher_sha256:
127	$(CC) $(CFLAGS) $@
128
129crypto-symmetric-oneway_blockcipher_sha384:
130	$(CC) $(CFLAGS) $@
131
132crypto-symmetric-oneway_blockcipher_sha512:
133	$(CC) $(CFLAGS) $@
134
135crypto-symmetric-oneway_blockcipher_tripledes:
136	$(CC) $(CFLAGS) $@
137
138crypto-symmetric-oneway_blockcipher_twofish128:
139	$(CC) $(CFLAGS) $@
140
141crypto-symmetric-oneway_blockcipher_twofish192:
142	$(CC) $(CFLAGS) $@
143
144crypto-symmetric-oneway_blockcipher_twofish256:
145	$(CC) $(CFLAGS) $@
146
147crypto-symmetric-oneway_blockcipher_whirlpool:
148	$(CC) $(CFLAGS) $@
149
150crypto-types-big_numbers:
151	$(CC) $(CFLAGS) $@
152
153crypto-types-elliptic_curves-nss_bf:
154	$(CC) $(CFLAGS) $@
155
156crypto-types-elliptic_curves-ss_bf:
157	$(CC) $(CFLAGS) $@
158
159crypto-types-mutexes:
160	$(CC) $(CFLAGS) $@
161
162crypto-types-nonces-nonces_ctr:
163	$(CC) $(CFLAGS) $@
164
165crypto-types-nonces-nonces_mixed_1:
166	$(CC) $(CFLAGS) $@
167
168crypto-types-nonces-nonces_mixed_2:
169	$(CC) $(CFLAGS) $@
170
171crypto-types-nonces-nonces_random:
172	$(CC) $(CFLAGS) $@
173
174crypto-types-nonces-nonces_randomized_counter:
175	$(CC) $(CFLAGS) $@
176
177crypto-symmetric-hashfunction_whirlpool:
178	$(CC) $(CFLAGS) $@
179
180crypto-symmetric-hashfunction_sha512:
181	$(CC) $(CFLAGS) $@
182
183crypto-symmetric-hashfunction_sha256:
184	$(CC) $(CFLAGS) $@
185
186crypto-certificate:
187	$(CC) $(CFLAGS) $@
188
189crypto-asymmetric-rsa:
190	$(CC) $(CFLAGS) $@
191
192crypto-asymmetric-dsa:
193	$(CC) $(CFLAGS) $@
194
195crypto-asymmetric-ecdsa:
196	$(CC) $(CFLAGS) $@
197
198crypto-symmetric-aead_mcoe:
199	$(CC) $(CFLAGS) $@
200
201crypto-symmetric-aead_siv:
202	$(CC) $(CFLAGS) $@
203
204crypto-symmetric-ae_ocb:
205	$(CC) $(CFLAGS) $@
206
207crypto-symmetric-tweakable_blockcipher_cmt:
208	$(CC) $(CFLAGS) $@
209
210crypto-symmetric-tweakable_blockcipher_tx:
211	$(CC) $(CFLAGS) $@
212
213crypto-symmetric-utils:
214	$(CC) $(CFLAGS) $@
215
216.PHONY : clean
217.SILENT : clean
218
219install:
220	mkdir -p $(INSTDIR)
221	mkdir -p $(LIBDIR)
222	cp *.ads *.adb *.o $(INSTDIR)/
223
224uninstall:
225	$(DELDIR) $(INSTDIR)
226
227clean:
228	$(GNATCLEAN) *.o *.ali
229	$(DEL) *.gcno *.gcov *.gcda
230	$(DEL) *~ *.lst *.sli
231
232#SHARED LIB
233
234shared :
235	gcc -shared -O3 -Wl,-soname,libadacrypt.so.1 -o libadacrypt.so.$(VER) \
236	     crypto*.o
237
238clean-shared:
239	$(DEL) libadacrypt.so.$(VER)
240
241install-shared :
242	mkdir -p $(INSTDIR)
243	mkdir -p $(LIBDIR)
244	cp crypto*.ads crypto*.ali $(INSTDIR)/
245	cp libadacrypt.so.$(VER) $(LIBDIR)/
246	$(DEL) $(LIBDIR)/libadacrypt.so
247	ln -s  $(LIBDIR)/libadacrypt.so.$(VER) $(LIBDIR)/libadacrypt.so
248	ldconfig
249
250uninstall-shared:
251	$(DEL) $(LIBDIR)/libadacrypt.so
252	$(DEL) $(LIBDIR)/libadacrypt.so.$(VER)
253	$(DEL) $(INSTDIR)/crypto*.ali
254