1
2# To compile on SunOS: add "-lsocket -lnsl" to LDFLAGS
3# To compile with PKCS11: add "-lpkcs11-helper" to LDFLAGS
4
5CFLAGS	?= -O2
6WARNING_CFLAGS ?= -Wall -W -Wdeclaration-after-statement
7WARNING_CXXFLAGS ?= -Wall -W
8LDFLAGS ?=
9
10LOCAL_CFLAGS = $(WARNING_CFLAGS) -I../include -D_FILE_OFFSET_BITS=64
11LOCAL_CXXFLAGS = $(WARNING_CXXFLAGS) -I../include -D_FILE_OFFSET_BITS=64
12LOCAL_LDFLAGS = -L../library 			\
13		-lmbedtls$(SHARED_SUFFIX)	\
14		-lmbedx509$(SHARED_SUFFIX)	\
15		-lmbedcrypto$(SHARED_SUFFIX)
16
17ifndef SHARED
18DEP=../library/libmbedcrypto.a ../library/libmbedx509.a ../library/libmbedtls.a
19else
20DEP=../library/libmbedcrypto.$(DLEXT) ../library/libmbedx509.$(DLEXT) ../library/libmbedtls.$(DLEXT)
21endif
22
23ifdef DEBUG
24LOCAL_CFLAGS += -g3
25endif
26
27# if we're running on Windows, build for Windows
28ifdef WINDOWS
29WINDOWS_BUILD=1
30endif
31
32ifdef WINDOWS_BUILD
33DLEXT=dll
34EXEXT=.exe
35LOCAL_LDFLAGS += -lws2_32
36ifdef SHARED
37SHARED_SUFFIX=.$(DLEXT)
38endif
39else
40DLEXT ?= so
41EXEXT=
42SHARED_SUFFIX=
43endif
44
45# Zlib shared library extensions:
46ifdef ZLIB
47LOCAL_LDFLAGS += -lz
48endif
49
50APPS =	aes/aescrypt2$(EXEXT)		aes/crypt_and_hash$(EXEXT)	\
51	hash/hello$(EXEXT)		hash/generic_sum$(EXEXT)	\
52					pkey/dh_client$(EXEXT)		\
53	pkey/dh_genprime$(EXEXT)	pkey/dh_server$(EXEXT)		\
54	pkey/ecdh_curve25519$(EXEXT)					\
55	pkey/ecdsa$(EXEXT)		pkey/gen_key$(EXEXT)		\
56	pkey/key_app$(EXEXT)		pkey/key_app_writer$(EXEXT)	\
57	pkey/mpi_demo$(EXEXT)		pkey/pk_decrypt$(EXEXT)		\
58	pkey/pk_encrypt$(EXEXT)		pkey/pk_sign$(EXEXT)		\
59	pkey/pk_verify$(EXEXT)		pkey/rsa_genkey$(EXEXT)		\
60	pkey/rsa_decrypt$(EXEXT)	pkey/rsa_encrypt$(EXEXT)	\
61	pkey/rsa_sign$(EXEXT)		pkey/rsa_verify$(EXEXT)		\
62	pkey/rsa_sign_pss$(EXEXT)	pkey/rsa_verify_pss$(EXEXT)	\
63	ssl/dtls_client$(EXEXT)		ssl/dtls_server$(EXEXT)		\
64	ssl/ssl_client1$(EXEXT)		ssl/ssl_client2$(EXEXT)		\
65	ssl/ssl_server$(EXEXT)		ssl/ssl_server2$(EXEXT)		\
66	ssl/ssl_fork_server$(EXEXT)	ssl/mini_client$(EXEXT)		\
67	ssl/ssl_mail_client$(EXEXT)	random/gen_entropy$(EXEXT)	\
68	random/gen_random_havege$(EXEXT)				\
69	random/gen_random_ctr_drbg$(EXEXT)				\
70	test/ssl_cert_test$(EXEXT)	test/benchmark$(EXEXT)		\
71	test/selftest$(EXEXT)		test/udp_proxy$(EXEXT)		\
72	test/zeroize$(EXEXT)						\
73	util/pem2der$(EXEXT)		util/strerror$(EXEXT)		\
74	x509/cert_app$(EXEXT)		x509/crl_app$(EXEXT)		\
75	x509/cert_req$(EXEXT)		x509/cert_write$(EXEXT)		\
76	x509/req_app$(EXEXT)
77
78ifdef PTHREAD
79APPS +=	ssl/ssl_pthread_server$(EXEXT)
80endif
81
82ifdef TEST_CPP
83APPS += test/cpp_dummy_build$(EXEXT)
84endif
85
86.SILENT:
87
88.PHONY: all clean list
89
90all: $(APPS)
91
92$(DEP):
93	$(MAKE) -C ../library
94
95aes/aescrypt2$(EXEXT): aes/aescrypt2.c $(DEP)
96	echo "  CC    aes/aescrypt2.c"
97	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) aes/aescrypt2.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
98
99aes/crypt_and_hash$(EXEXT): aes/crypt_and_hash.c $(DEP)
100	echo "  CC    aes/crypt_and_hash.c"
101	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) aes/crypt_and_hash.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
102
103hash/hello$(EXEXT): hash/hello.c $(DEP)
104	echo "  CC    hash/hello.c"
105	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) hash/hello.c       $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
106
107hash/generic_sum$(EXEXT): hash/generic_sum.c $(DEP)
108	echo "  CC    hash/generic_sum.c"
109	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) hash/generic_sum.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
110
111pkey/dh_client$(EXEXT): pkey/dh_client.c $(DEP)
112	echo "  CC    pkey/dh_client.c"
113	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/dh_client.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
114
115pkey/dh_genprime$(EXEXT): pkey/dh_genprime.c $(DEP)
116	echo "  CC    pkey/dh_genprime.c"
117	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/dh_genprime.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
118
119pkey/dh_server$(EXEXT): pkey/dh_server.c $(DEP)
120	echo "  CC    pkey/dh_server.c"
121	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/dh_server.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
122
123pkey/ecdh_curve25519$(EXEXT): pkey/ecdh_curve25519.c $(DEP)
124	echo "  CC    pkey/ecdh_curve25519.c"
125	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/ecdh_curve25519.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
126
127pkey/ecdsa$(EXEXT): pkey/ecdsa.c $(DEP)
128	echo "  CC    pkey/ecdsa.c"
129	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/ecdsa.c       $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
130
131pkey/gen_key$(EXEXT): pkey/gen_key.c $(DEP)
132	echo "  CC    pkey/gen_key.c"
133	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/gen_key.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
134
135pkey/key_app$(EXEXT): pkey/key_app.c $(DEP)
136	echo "  CC    pkey/key_app.c"
137	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/key_app.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
138
139pkey/key_app_writer$(EXEXT): pkey/key_app_writer.c $(DEP)
140	echo "  CC    pkey/key_app_writer.c"
141	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/key_app_writer.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
142
143pkey/mpi_demo$(EXEXT): pkey/mpi_demo.c $(DEP)
144	echo "  CC    pkey/mpi_demo.c"
145	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/mpi_demo.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
146
147pkey/pk_decrypt$(EXEXT): pkey/pk_decrypt.c $(DEP)
148	echo "  CC    pkey/pk_decrypt.c"
149	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/pk_decrypt.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
150
151pkey/pk_encrypt$(EXEXT): pkey/pk_encrypt.c $(DEP)
152	echo "  CC    pkey/pk_encrypt.c"
153	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/pk_encrypt.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
154
155pkey/pk_sign$(EXEXT): pkey/pk_sign.c $(DEP)
156	echo "  CC    pkey/pk_sign.c"
157	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/pk_sign.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
158
159pkey/pk_verify$(EXEXT): pkey/pk_verify.c $(DEP)
160	echo "  CC    pkey/pk_verify.c"
161	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/pk_verify.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
162
163pkey/rsa_genkey$(EXEXT): pkey/rsa_genkey.c $(DEP)
164	echo "  CC    pkey/rsa_genkey.c"
165	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_genkey.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
166
167pkey/rsa_sign$(EXEXT): pkey/rsa_sign.c $(DEP)
168	echo "  CC    pkey/rsa_sign.c"
169	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_sign.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
170
171pkey/rsa_verify$(EXEXT): pkey/rsa_verify.c $(DEP)
172	echo "  CC    pkey/rsa_verify.c"
173	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_verify.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
174
175pkey/rsa_sign_pss$(EXEXT): pkey/rsa_sign_pss.c $(DEP)
176	echo "  CC    pkey/rsa_sign_pss.c"
177	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_sign_pss.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
178
179pkey/rsa_verify_pss$(EXEXT): pkey/rsa_verify_pss.c $(DEP)
180	echo "  CC    pkey/rsa_verify_pss.c"
181	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_verify_pss.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
182
183pkey/rsa_decrypt$(EXEXT): pkey/rsa_decrypt.c $(DEP)
184	echo "  CC    pkey/rsa_decrypt.c"
185	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_decrypt.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
186
187pkey/rsa_encrypt$(EXEXT): pkey/rsa_encrypt.c $(DEP)
188	echo "  CC    pkey/rsa_encrypt.c"
189	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_encrypt.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
190
191random/gen_entropy$(EXEXT): random/gen_entropy.c $(DEP)
192	echo "  CC    random/gen_entropy.c"
193	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) random/gen_entropy.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
194
195random/gen_random_havege$(EXEXT): random/gen_random_havege.c $(DEP)
196	echo "  CC    random/gen_random_havege.c"
197	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) random/gen_random_havege.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
198
199random/gen_random_ctr_drbg$(EXEXT): random/gen_random_ctr_drbg.c $(DEP)
200	echo "  CC    random/gen_random_ctr_drbg.c"
201	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) random/gen_random_ctr_drbg.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
202
203ssl/dtls_client$(EXEXT): ssl/dtls_client.c $(DEP)
204	echo "  CC    ssl/dtls_client.c"
205	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/dtls_client.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
206
207ssl/dtls_server$(EXEXT): ssl/dtls_server.c $(DEP)
208	echo "  CC    ssl/dtls_server.c"
209	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/dtls_server.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
210
211ssl/ssl_client1$(EXEXT): ssl/ssl_client1.c $(DEP)
212	echo "  CC    ssl/ssl_client1.c"
213	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_client1.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
214
215ssl/ssl_client2$(EXEXT): ssl/ssl_client2.c $(DEP)
216	echo "  CC    ssl/ssl_client2.c"
217	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_client2.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
218
219ssl/ssl_server$(EXEXT): ssl/ssl_server.c $(DEP)
220	echo "  CC    ssl/ssl_server.c"
221	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_server.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
222
223ssl/ssl_server2$(EXEXT): ssl/ssl_server2.c $(DEP)
224	echo "  CC    ssl/ssl_server2.c"
225	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_server2.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
226
227ssl/ssl_fork_server$(EXEXT): ssl/ssl_fork_server.c $(DEP)
228	echo "  CC    ssl/ssl_fork_server.c"
229	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_fork_server.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
230
231ssl/ssl_pthread_server$(EXEXT): ssl/ssl_pthread_server.c $(DEP)
232	echo "  CC    ssl/ssl_pthread_server.c"
233	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_pthread_server.c   $(LOCAL_LDFLAGS) -lpthread  $(LDFLAGS) -o $@
234
235ssl/ssl_mail_client$(EXEXT): ssl/ssl_mail_client.c $(DEP)
236	echo "  CC    ssl/ssl_mail_client.c"
237	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_mail_client.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
238
239ssl/mini_client$(EXEXT): ssl/mini_client.c $(DEP)
240	echo "  CC    ssl/mini_client.c"
241	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/mini_client.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
242
243test/ssl_cert_test$(EXEXT): test/ssl_cert_test.c $(DEP)
244	echo "  CC    test/ssl_cert_test.c"
245	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/ssl_cert_test.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
246
247test/benchmark$(EXEXT): test/benchmark.c $(DEP)
248	echo "  CC    test/benchmark.c"
249	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/benchmark.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
250
251test/cpp_dummy_build$(EXEXT): test/cpp_dummy_build.cpp $(DEP)
252	echo "  CXX   test/cpp_dummy_build.cpp"
253	$(CXX) $(LOCAL_CXXFLAGS) $(CXXFLAGS) test/cpp_dummy_build.cpp   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
254
255test/selftest$(EXEXT): test/selftest.c $(DEP)
256	echo "  CC    test/selftest.c"
257	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/selftest.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
258
259test/udp_proxy$(EXEXT): test/udp_proxy.c $(DEP)
260	echo "  CC    test/udp_proxy.c"
261	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/udp_proxy.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
262
263test/zeroize$(EXEXT): test/zeroize.c $(DEP)
264	echo "  CC    test/zeroize.c"
265	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/zeroize.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
266
267util/pem2der$(EXEXT): util/pem2der.c $(DEP)
268	echo "  CC    util/pem2der.c"
269	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) util/pem2der.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
270
271util/strerror$(EXEXT): util/strerror.c $(DEP)
272	echo "  CC    util/strerror.c"
273	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) util/strerror.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
274
275x509/cert_app$(EXEXT): x509/cert_app.c $(DEP)
276	echo "  CC    x509/cert_app.c"
277	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/cert_app.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
278
279x509/cert_write$(EXEXT): x509/cert_write.c $(DEP)
280	echo "  CC    x509/cert_write.c"
281	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/cert_write.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
282
283x509/crl_app$(EXEXT): x509/crl_app.c $(DEP)
284	echo "  CC    x509/crl_app.c"
285	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/crl_app.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
286
287x509/cert_req$(EXEXT): x509/cert_req.c $(DEP)
288	echo "  CC    x509/cert_req.c"
289	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/cert_req.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
290
291x509/req_app$(EXEXT): x509/req_app.c $(DEP)
292	echo "  CC    x509/req_app.c"
293	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/req_app.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
294
295clean:
296ifndef WINDOWS
297	rm -f $(APPS)
298else
299	del /S /Q /F *.o *.exe
300endif
301
302list:
303	echo $(APPS)
304