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 -Wextra -Wformat=2 -Wno-format-nonliteral
7WARNING_CXXFLAGS ?= -Wall -Wextra -Wformat=2 -Wno-format-nonliteral
8LDFLAGS ?=
9
10MBEDTLS_TEST_PATH:=../tests/src
11MBEDTLS_TEST_OBJS:=$(patsubst %.c,%.o,$(wildcard ${MBEDTLS_TEST_PATH}/*.c ${MBEDTLS_TEST_PATH}/drivers/*.c))
12
13LOCAL_CFLAGS = $(WARNING_CFLAGS) -I../tests/include -I../include -D_FILE_OFFSET_BITS=64
14LOCAL_CXXFLAGS = $(WARNING_CXXFLAGS) -I../include -D_FILE_OFFSET_BITS=64
15LOCAL_LDFLAGS = ${MBEDTLS_TEST_OBJS} 		\
16		-L../library 			\
17		-lmbedtls$(SHARED_SUFFIX)	\
18		-lmbedx509$(SHARED_SUFFIX)	\
19		-lmbedcrypto$(SHARED_SUFFIX)
20
21ifeq ($(shell uname -s),Linux)
22DLOPEN_LDFLAGS ?= -ldl
23else
24DLOPEN_LDFLAGS ?=
25endif
26
27include ../3rdparty/Makefile.inc
28LOCAL_CFLAGS+=$(THIRDPARTY_INCLUDES)
29
30ifndef SHARED
31MBEDLIBS=../library/libmbedcrypto.a ../library/libmbedx509.a ../library/libmbedtls.a
32else
33MBEDLIBS=../library/libmbedcrypto.$(DLEXT) ../library/libmbedx509.$(DLEXT) ../library/libmbedtls.$(DLEXT)
34endif
35DEP=${MBEDLIBS} ${MBEDTLS_TEST_OBJS}
36
37ifdef DEBUG
38LOCAL_CFLAGS += -g3
39endif
40
41# if we're running on Windows, build for Windows
42ifdef WINDOWS
43WINDOWS_BUILD=1
44endif
45
46ifdef WINDOWS_BUILD
47DLEXT=dll
48EXEXT=.exe
49LOCAL_LDFLAGS += -lws2_32
50ifdef SHARED
51SHARED_SUFFIX=.$(DLEXT)
52endif
53else
54DLEXT ?= so
55EXEXT=
56SHARED_SUFFIX=
57endif
58
59# Zlib shared library extensions:
60ifdef ZLIB
61LOCAL_LDFLAGS += -lz
62endif
63
64# Only build the dlopen test in shared library builds, and not when building
65# for Windows.
66ifdef BUILD_DLOPEN
67# Don't override the value
68else ifdef WINDOWS_BUILD
69BUILD_DLOPEN =
70else ifdef SHARED
71BUILD_DLOPEN = y
72else
73BUILD_DLOPEN =
74endif
75
76APPS = \
77	aes/crypt_and_hash$(EXEXT) \
78	hash/generic_sum$(EXEXT) \
79	hash/hello$(EXEXT) \
80	pkey/dh_client$(EXEXT) \
81	pkey/dh_genprime$(EXEXT) \
82	pkey/dh_server$(EXEXT) \
83	pkey/ecdh_curve25519$(EXEXT) \
84	pkey/ecdsa$(EXEXT) \
85	pkey/gen_key$(EXEXT) \
86	pkey/key_app$(EXEXT) \
87	pkey/key_app_writer$(EXEXT) \
88	pkey/mpi_demo$(EXEXT) \
89	pkey/pk_decrypt$(EXEXT) \
90	pkey/pk_encrypt$(EXEXT) \
91	pkey/pk_sign$(EXEXT) \
92	pkey/pk_verify$(EXEXT) \
93	pkey/rsa_decrypt$(EXEXT) \
94	pkey/rsa_encrypt$(EXEXT) \
95	pkey/rsa_genkey$(EXEXT) \
96	pkey/rsa_sign$(EXEXT) \
97	pkey/rsa_sign_pss$(EXEXT) \
98	pkey/rsa_verify$(EXEXT) \
99	pkey/rsa_verify_pss$(EXEXT) \
100	psa/crypto_examples$(EXEXT) \
101	psa/key_ladder_demo$(EXEXT) \
102	psa/psa_constant_names$(EXEXT) \
103	random/gen_entropy$(EXEXT) \
104	random/gen_random_ctr_drbg$(EXEXT) \
105	random/gen_random_havege$(EXEXT) \
106	ssl/dtls_client$(EXEXT) \
107	ssl/dtls_server$(EXEXT) \
108	ssl/mini_client$(EXEXT) \
109	ssl/ssl_client1$(EXEXT) \
110	ssl/ssl_client2$(EXEXT) \
111	ssl/ssl_context_info$(EXEXT) \
112	ssl/ssl_fork_server$(EXEXT) \
113	ssl/ssl_mail_client$(EXEXT) \
114	ssl/ssl_server$(EXEXT) \
115	ssl/ssl_server2$(EXEXT) \
116	test/benchmark$(EXEXT) \
117	test/query_compile_time_config$(EXEXT) \
118	test/selftest$(EXEXT) \
119	test/udp_proxy$(EXEXT) \
120	test/zeroize$(EXEXT) \
121	util/pem2der$(EXEXT) \
122	util/strerror$(EXEXT) \
123	x509/cert_app$(EXEXT) \
124	x509/cert_req$(EXEXT) \
125	x509/cert_write$(EXEXT) \
126	x509/crl_app$(EXEXT) \
127	x509/load_roots$(EXEXT) \
128	x509/req_app$(EXEXT) \
129# End of APPS
130
131ifdef PTHREAD
132APPS +=	ssl/ssl_pthread_server$(EXEXT)
133endif
134
135ifdef BUILD_DLOPEN
136APPS +=	test/dlopen
137endif
138
139ifdef TEST_CPP
140APPS += test/cpp_dummy_build$(EXEXT)
141endif
142
143.SILENT:
144
145.PHONY: all clean list fuzz
146
147all: $(APPS)
148ifndef WINDOWS
149# APPS doesn't include the fuzzing programs, which aren't "normal"
150# sample or test programs, and don't build with MSVC which is
151# warning about fopen
152all: fuzz
153endif
154
155fuzz: ${MBEDTLS_TEST_OBJS}
156	$(MAKE) -C fuzz THIRDPARTY_INCLUDES=$(THIRDPARTY_INCLUDES)
157
158$(MBEDLIBS):
159	$(MAKE) -C ../library
160
161${MBEDTLS_TEST_OBJS}:
162	$(MAKE) -C ../tests mbedtls_test
163
164aes/crypt_and_hash$(EXEXT): aes/crypt_and_hash.c $(DEP)
165	echo "  CC    aes/crypt_and_hash.c"
166	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) aes/crypt_and_hash.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
167
168hash/hello$(EXEXT): hash/hello.c $(DEP)
169	echo "  CC    hash/hello.c"
170	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) hash/hello.c       $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
171
172hash/generic_sum$(EXEXT): hash/generic_sum.c $(DEP)
173	echo "  CC    hash/generic_sum.c"
174	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) hash/generic_sum.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
175
176pkey/dh_client$(EXEXT): pkey/dh_client.c $(DEP)
177	echo "  CC    pkey/dh_client.c"
178	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/dh_client.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
179
180pkey/dh_genprime$(EXEXT): pkey/dh_genprime.c $(DEP)
181	echo "  CC    pkey/dh_genprime.c"
182	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/dh_genprime.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
183
184pkey/dh_server$(EXEXT): pkey/dh_server.c $(DEP)
185	echo "  CC    pkey/dh_server.c"
186	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/dh_server.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
187
188pkey/ecdh_curve25519$(EXEXT): pkey/ecdh_curve25519.c $(DEP)
189	echo "  CC    pkey/ecdh_curve25519.c"
190	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/ecdh_curve25519.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
191
192pkey/ecdsa$(EXEXT): pkey/ecdsa.c $(DEP)
193	echo "  CC    pkey/ecdsa.c"
194	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/ecdsa.c       $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
195
196pkey/gen_key$(EXEXT): pkey/gen_key.c $(DEP)
197	echo "  CC    pkey/gen_key.c"
198	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/gen_key.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
199
200pkey/key_app$(EXEXT): pkey/key_app.c $(DEP)
201	echo "  CC    pkey/key_app.c"
202	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/key_app.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
203
204pkey/key_app_writer$(EXEXT): pkey/key_app_writer.c $(DEP)
205	echo "  CC    pkey/key_app_writer.c"
206	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/key_app_writer.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
207
208pkey/mpi_demo$(EXEXT): pkey/mpi_demo.c $(DEP)
209	echo "  CC    pkey/mpi_demo.c"
210	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/mpi_demo.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
211
212pkey/pk_decrypt$(EXEXT): pkey/pk_decrypt.c $(DEP)
213	echo "  CC    pkey/pk_decrypt.c"
214	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/pk_decrypt.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
215
216pkey/pk_encrypt$(EXEXT): pkey/pk_encrypt.c $(DEP)
217	echo "  CC    pkey/pk_encrypt.c"
218	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/pk_encrypt.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
219
220pkey/pk_sign$(EXEXT): pkey/pk_sign.c $(DEP)
221	echo "  CC    pkey/pk_sign.c"
222	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/pk_sign.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
223
224pkey/pk_verify$(EXEXT): pkey/pk_verify.c $(DEP)
225	echo "  CC    pkey/pk_verify.c"
226	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/pk_verify.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
227
228pkey/rsa_genkey$(EXEXT): pkey/rsa_genkey.c $(DEP)
229	echo "  CC    pkey/rsa_genkey.c"
230	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_genkey.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
231
232pkey/rsa_sign$(EXEXT): pkey/rsa_sign.c $(DEP)
233	echo "  CC    pkey/rsa_sign.c"
234	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_sign.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
235
236pkey/rsa_verify$(EXEXT): pkey/rsa_verify.c $(DEP)
237	echo "  CC    pkey/rsa_verify.c"
238	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_verify.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
239
240pkey/rsa_sign_pss$(EXEXT): pkey/rsa_sign_pss.c $(DEP)
241	echo "  CC    pkey/rsa_sign_pss.c"
242	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_sign_pss.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
243
244pkey/rsa_verify_pss$(EXEXT): pkey/rsa_verify_pss.c $(DEP)
245	echo "  CC    pkey/rsa_verify_pss.c"
246	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_verify_pss.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
247
248pkey/rsa_decrypt$(EXEXT): pkey/rsa_decrypt.c $(DEP)
249	echo "  CC    pkey/rsa_decrypt.c"
250	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_decrypt.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
251
252pkey/rsa_encrypt$(EXEXT): pkey/rsa_encrypt.c $(DEP)
253	echo "  CC    pkey/rsa_encrypt.c"
254	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) pkey/rsa_encrypt.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
255
256psa/key_ladder_demo$(EXEXT): psa/key_ladder_demo.c $(DEP)
257	echo "  CC    psa/key_ladder_demo.c"
258	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) psa/key_ladder_demo.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
259
260psa/psa_constant_names$(EXEXT): psa/psa_constant_names.c psa/psa_constant_names_generated.c $(DEP)
261	echo "  CC    psa/psa_constant_names.c"
262	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) psa/psa_constant_names.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
263
264random/gen_entropy$(EXEXT): random/gen_entropy.c $(DEP)
265	echo "  CC    random/gen_entropy.c"
266	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) random/gen_entropy.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
267
268random/gen_random_havege$(EXEXT): random/gen_random_havege.c $(DEP)
269	echo "  CC    random/gen_random_havege.c"
270	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) random/gen_random_havege.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
271
272random/gen_random_ctr_drbg$(EXEXT): random/gen_random_ctr_drbg.c $(DEP)
273	echo "  CC    random/gen_random_ctr_drbg.c"
274	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) random/gen_random_ctr_drbg.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
275
276ssl/dtls_client$(EXEXT): ssl/dtls_client.c $(DEP)
277	echo "  CC    ssl/dtls_client.c"
278	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/dtls_client.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
279
280ssl/dtls_server$(EXEXT): ssl/dtls_server.c $(DEP)
281	echo "  CC    ssl/dtls_server.c"
282	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/dtls_server.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
283
284ssl/ssl_client1$(EXEXT): ssl/ssl_client1.c $(DEP)
285	echo "  CC    ssl/ssl_client1.c"
286	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_client1.c  $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
287
288SSL_TEST_OBJECTS = test/query_config.o ssl/ssl_test_lib.o
289SSL_TEST_DEPS = $(SSL_TEST_OBJECTS) \
290		test/query_config.h \
291		ssl/ssl_test_lib.h \
292		ssl/ssl_test_common_source.c \
293		$(DEP)
294
295ssl/ssl_test_lib.o: ssl/ssl_test_lib.c ssl/ssl_test_lib.h $(DEP)
296	echo "  CC    ssl/ssl_test_lib.c"
297	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) -c ssl/ssl_test_lib.c -o $@
298
299ssl/ssl_client2$(EXEXT): ssl/ssl_client2.c $(SSL_TEST_DEPS)
300	echo "  CC    ssl/ssl_client2.c"
301	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_client2.c $(SSL_TEST_OBJECTS) $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
302
303ssl/ssl_server$(EXEXT): ssl/ssl_server.c $(DEP)
304	echo "  CC    ssl/ssl_server.c"
305	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_server.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
306
307ssl/ssl_server2$(EXEXT): ssl/ssl_server2.c $(SSL_TEST_DEPS)
308	echo "  CC    ssl/ssl_server2.c"
309	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_server2.c $(SSL_TEST_OBJECTS) $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
310
311ssl/ssl_context_info$(EXEXT): ssl/ssl_context_info.c test/query_config.o test/query_config.h $(DEP)
312	echo "  CC    ssl/ssl_context_info.c"
313	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_context_info.c test/query_config.o $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
314
315ssl/ssl_fork_server$(EXEXT): ssl/ssl_fork_server.c $(DEP)
316	echo "  CC    ssl/ssl_fork_server.c"
317	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_fork_server.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
318
319ssl/ssl_pthread_server$(EXEXT): ssl/ssl_pthread_server.c $(DEP)
320	echo "  CC    ssl/ssl_pthread_server.c"
321	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_pthread_server.c   $(LOCAL_LDFLAGS) -lpthread  $(LDFLAGS) -o $@
322
323ssl/ssl_mail_client$(EXEXT): ssl/ssl_mail_client.c $(DEP)
324	echo "  CC    ssl/ssl_mail_client.c"
325	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/ssl_mail_client.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
326
327ssl/mini_client$(EXEXT): ssl/mini_client.c $(DEP)
328	echo "  CC    ssl/mini_client.c"
329	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) ssl/mini_client.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
330
331test/benchmark$(EXEXT): test/benchmark.c $(DEP)
332	echo "  CC    test/benchmark.c"
333	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/benchmark.c   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
334
335test/cpp_dummy_build.cpp: test/generate_cpp_dummy_build.sh
336	echo "  Gen   test/cpp_dummy_build.cpp"
337	test/generate_cpp_dummy_build.sh
338
339test/cpp_dummy_build$(EXEXT): test/cpp_dummy_build.cpp $(DEP)
340	echo "  CXX   test/cpp_dummy_build.cpp"
341	$(CXX) $(LOCAL_CXXFLAGS) $(CXXFLAGS) test/cpp_dummy_build.cpp   $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
342
343ifdef BUILD_DLOPEN
344test/dlopen$(EXEXT): test/dlopen.c $(DEP)
345	echo "  CC    test/dlopen.c"
346# Do not link any test objects (that would bring in a static dependency on
347# libmbedcrypto at least). Do not link with libmbed* (that would defeat the
348# purpose of testing dynamic loading).
349	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/dlopen.c $(LDFLAGS) $(DLOPEN_LDFLAGS) -o $@
350endif
351
352test/query_config.o: test/query_config.c test/query_config.h $(DEP)
353	echo "  CC    test/query_config.c"
354	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) -c test/query_config.c -o $@
355
356test/selftest$(EXEXT): test/selftest.c $(DEP)
357	echo "  CC    test/selftest.c"
358	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/selftest.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
359
360test/udp_proxy$(EXEXT): test/udp_proxy.c $(DEP)
361	echo "  CC    test/udp_proxy.c"
362	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/udp_proxy.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
363
364test/zeroize$(EXEXT): test/zeroize.c $(DEP)
365	echo "  CC    test/zeroize.c"
366	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/zeroize.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
367
368test/query_compile_time_config$(EXEXT): test/query_compile_time_config.c test/query_config.o test/query_config.h $(DEP)
369	echo "  CC    test/query_compile_time_config.c"
370	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/query_compile_time_config.c test/query_config.o $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
371
372util/pem2der$(EXEXT): util/pem2der.c $(DEP)
373	echo "  CC    util/pem2der.c"
374	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) util/pem2der.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
375
376util/strerror$(EXEXT): util/strerror.c $(DEP)
377	echo "  CC    util/strerror.c"
378	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) util/strerror.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
379
380x509/cert_app$(EXEXT): x509/cert_app.c $(DEP)
381	echo "  CC    x509/cert_app.c"
382	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/cert_app.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
383
384x509/cert_write$(EXEXT): x509/cert_write.c $(DEP)
385	echo "  CC    x509/cert_write.c"
386	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/cert_write.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
387
388x509/crl_app$(EXEXT): x509/crl_app.c $(DEP)
389	echo "  CC    x509/crl_app.c"
390	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/crl_app.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
391
392x509/cert_req$(EXEXT): x509/cert_req.c $(DEP)
393	echo "  CC    x509/cert_req.c"
394	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/cert_req.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
395
396x509/load_roots$(EXEXT): x509/load_roots.c $(DEP)
397	echo "  CC    x509/load_roots.c"
398	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/load_roots.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
399
400x509/req_app$(EXEXT): x509/req_app.c $(DEP)
401	echo "  CC    x509/req_app.c"
402	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) x509/req_app.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
403
404psa/crypto_examples$(EXEXT): psa/crypto_examples.c $(DEP)
405	echo "  CC    psa/crypto_examples.c"
406	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) psa/crypto_examples.c    $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
407
408clean:
409ifndef WINDOWS
410	rm -f $(APPS)
411	-rm -f ssl/ssl_pthread_server$(EXEXT)
412	-rm -f test/cpp_dummy_build.cpp test/cpp_dummy_build$(EXEXT)
413	-rm -f test/dlopen$(EXEXT)
414else
415	if exist *.o del /Q /F *.o
416	if exist *.exe del /Q /F *.exe
417	if exist test\cpp_dummy_build.cpp del /Q /F test\cpp_dummy_build.cpp
418endif
419	$(MAKE) -C fuzz clean
420
421list:
422	echo $(APPS)
423