1a8e1175bSopenharmony_ciifndef MBEDTLS_PATH
2a8e1175bSopenharmony_ciMBEDTLS_PATH := ..
3a8e1175bSopenharmony_ciendif
4a8e1175bSopenharmony_ci
5a8e1175bSopenharmony_ciGENERATED_FILES := \
6a8e1175bSopenharmony_ci	error.c version_features.c \
7a8e1175bSopenharmony_ci	ssl_debug_helpers_generated.c \
8a8e1175bSopenharmony_ci	psa_crypto_driver_wrappers.h \
9a8e1175bSopenharmony_ci	psa_crypto_driver_wrappers_no_static.c
10a8e1175bSopenharmony_ci
11a8e1175bSopenharmony_ciifneq ($(GENERATED_FILES),$(wildcard $(GENERATED_FILES)))
12a8e1175bSopenharmony_ci    ifeq (,$(wildcard $(MBEDTLS_PATH)/framework/exported.make))
13a8e1175bSopenharmony_ci        # Use the define keyword to get a multi-line message.
14a8e1175bSopenharmony_ci        # GNU make appends ".  Stop.", so tweak the ending of our message accordingly.
15a8e1175bSopenharmony_ci        define error_message
16a8e1175bSopenharmony_ci$(MBEDTLS_PATH)/framework/exported.make not found.
17a8e1175bSopenharmony_ciRun `git submodule update --init` to fetch the submodule contents.
18a8e1175bSopenharmony_ciThis is a fatal error
19a8e1175bSopenharmony_ci        endef
20a8e1175bSopenharmony_ci        $(error $(error_message))
21a8e1175bSopenharmony_ci    endif
22a8e1175bSopenharmony_ci    include $(MBEDTLS_PATH)/framework/exported.make
23a8e1175bSopenharmony_ciendif
24a8e1175bSopenharmony_ci
25a8e1175bSopenharmony_ci# Also see "include/mbedtls/mbedtls_config.h"
26a8e1175bSopenharmony_ci
27a8e1175bSopenharmony_ciCFLAGS	?= -O2
28a8e1175bSopenharmony_ciWARNING_CFLAGS ?=  -Wall -Wextra -Wformat=2 -Wno-format-nonliteral
29a8e1175bSopenharmony_ciLDFLAGS ?=
30a8e1175bSopenharmony_ci
31a8e1175bSopenharmony_ci# Include ../include for public headers and . for private headers.
32a8e1175bSopenharmony_ci# Note that . needs to be included explicitly for the sake of library
33a8e1175bSopenharmony_ci# files that are not in the /library directory (which currently means
34a8e1175bSopenharmony_ci# under /3rdparty).
35a8e1175bSopenharmony_ciLOCAL_CFLAGS = $(WARNING_CFLAGS) -I. -I../include -D_FILE_OFFSET_BITS=64
36a8e1175bSopenharmony_ciLOCAL_LDFLAGS =
37a8e1175bSopenharmony_ci
38a8e1175bSopenharmony_ciifdef DEBUG
39a8e1175bSopenharmony_ciLOCAL_CFLAGS += -g3
40a8e1175bSopenharmony_ciendif
41a8e1175bSopenharmony_ci
42a8e1175bSopenharmony_ci# MicroBlaze specific options:
43a8e1175bSopenharmony_ci# CFLAGS += -mno-xl-soft-mul -mxl-barrel-shift
44a8e1175bSopenharmony_ci
45a8e1175bSopenharmony_ci# To compile on Plan9:
46a8e1175bSopenharmony_ci# CFLAGS += -D_BSD_EXTENSION
47a8e1175bSopenharmony_ci
48a8e1175bSopenharmony_ciPERL ?= perl
49a8e1175bSopenharmony_ci
50a8e1175bSopenharmony_ciifdef WINDOWS
51a8e1175bSopenharmony_ciPYTHON ?= python
52a8e1175bSopenharmony_cielse
53a8e1175bSopenharmony_ciPYTHON ?= $(shell if type python3 >/dev/null 2>/dev/null; then echo python3; else echo python; fi)
54a8e1175bSopenharmony_ciendif
55a8e1175bSopenharmony_ci
56a8e1175bSopenharmony_ci# if were running on Windows build for Windows
57a8e1175bSopenharmony_ciifdef WINDOWS
58a8e1175bSopenharmony_ciWINDOWS_BUILD=1
59a8e1175bSopenharmony_cielse ifeq ($(shell uname -s),Darwin)
60a8e1175bSopenharmony_ciifeq ($(AR),ar)
61a8e1175bSopenharmony_ciAPPLE_BUILD ?= 1
62a8e1175bSopenharmony_ciendif
63a8e1175bSopenharmony_ciendif
64a8e1175bSopenharmony_ci
65a8e1175bSopenharmony_ciifdef WINDOWS_BUILD
66a8e1175bSopenharmony_ciLOCAL_LDFLAGS += -lbcrypt
67a8e1175bSopenharmony_ciendif
68a8e1175bSopenharmony_ci
69a8e1175bSopenharmony_ci# To compile as a shared library:
70a8e1175bSopenharmony_ciifdef SHARED
71a8e1175bSopenharmony_ci# all code is position-indep with mingw, avoid warning about useless flag
72a8e1175bSopenharmony_ciifndef WINDOWS_BUILD
73a8e1175bSopenharmony_ciLOCAL_CFLAGS += -fPIC -fpic
74a8e1175bSopenharmony_ciendif
75a8e1175bSopenharmony_ciendif
76a8e1175bSopenharmony_ci
77a8e1175bSopenharmony_ciSOEXT_TLS?=so.21
78a8e1175bSopenharmony_ciSOEXT_X509?=so.7
79a8e1175bSopenharmony_ciSOEXT_CRYPTO?=so.16
80a8e1175bSopenharmony_ci
81a8e1175bSopenharmony_ci# Set AR_DASH= (empty string) to use an ar implementation that does not accept
82a8e1175bSopenharmony_ci# the - prefix for command line options (e.g. llvm-ar)
83a8e1175bSopenharmony_ciAR_DASH ?= -
84a8e1175bSopenharmony_ci
85a8e1175bSopenharmony_ciARFLAGS = $(AR_DASH)src
86a8e1175bSopenharmony_ciifdef APPLE_BUILD
87a8e1175bSopenharmony_ciifneq ($(APPLE_BUILD),0)
88a8e1175bSopenharmony_ciARFLAGS = $(AR_DASH)Src
89a8e1175bSopenharmony_ciRLFLAGS = -no_warning_for_no_symbols -c
90a8e1175bSopenharmony_ciRL ?= ranlib
91a8e1175bSopenharmony_ciendif
92a8e1175bSopenharmony_ciendif
93a8e1175bSopenharmony_ci
94a8e1175bSopenharmony_ciDLEXT ?= so
95a8e1175bSopenharmony_ciifdef WINDOWS_BUILD
96a8e1175bSopenharmony_ci# Windows shared library extension:
97a8e1175bSopenharmony_ciDLEXT = dll
98a8e1175bSopenharmony_cielse ifdef APPLE_BUILD
99a8e1175bSopenharmony_ciifneq ($(APPLE_BUILD),0)
100a8e1175bSopenharmony_ci# Mac OS X shared library extension:
101a8e1175bSopenharmony_ciDLEXT = dylib
102a8e1175bSopenharmony_ciendif
103a8e1175bSopenharmony_ciendif
104a8e1175bSopenharmony_ci
105a8e1175bSopenharmony_ciOBJS_CRYPTO= \
106a8e1175bSopenharmony_ci	     aes.o \
107a8e1175bSopenharmony_ci	     aesni.o \
108a8e1175bSopenharmony_ci	     aesce.o \
109a8e1175bSopenharmony_ci	     aria.o \
110a8e1175bSopenharmony_ci	     asn1parse.o \
111a8e1175bSopenharmony_ci	     asn1write.o \
112a8e1175bSopenharmony_ci	     base64.o \
113a8e1175bSopenharmony_ci	     bignum.o \
114a8e1175bSopenharmony_ci	     bignum_core.o \
115a8e1175bSopenharmony_ci	     bignum_mod.o \
116a8e1175bSopenharmony_ci	     bignum_mod_raw.o \
117a8e1175bSopenharmony_ci	     block_cipher.o \
118a8e1175bSopenharmony_ci	     camellia.o \
119a8e1175bSopenharmony_ci	     ccm.o \
120a8e1175bSopenharmony_ci	     chacha20.o \
121a8e1175bSopenharmony_ci	     chachapoly.o \
122a8e1175bSopenharmony_ci	     cipher.o \
123a8e1175bSopenharmony_ci	     cipher_wrap.o \
124a8e1175bSopenharmony_ci	     cmac.o \
125a8e1175bSopenharmony_ci	     constant_time.o \
126a8e1175bSopenharmony_ci	     ctr_drbg.o \
127a8e1175bSopenharmony_ci	     des.o \
128a8e1175bSopenharmony_ci	     dhm.o \
129a8e1175bSopenharmony_ci	     ecdh.o \
130a8e1175bSopenharmony_ci	     ecdsa.o \
131a8e1175bSopenharmony_ci	     ecjpake.o \
132a8e1175bSopenharmony_ci	     ecp.o \
133a8e1175bSopenharmony_ci	     ecp_curves.o \
134a8e1175bSopenharmony_ci	     ecp_curves_new.o \
135a8e1175bSopenharmony_ci	     entropy.o \
136a8e1175bSopenharmony_ci	     entropy_poll.o \
137a8e1175bSopenharmony_ci	     error.o \
138a8e1175bSopenharmony_ci	     gcm.o \
139a8e1175bSopenharmony_ci	     hkdf.o \
140a8e1175bSopenharmony_ci	     hmac_drbg.o \
141a8e1175bSopenharmony_ci	     lmots.o \
142a8e1175bSopenharmony_ci	     lms.o \
143a8e1175bSopenharmony_ci	     md.o \
144a8e1175bSopenharmony_ci	     md5.o \
145a8e1175bSopenharmony_ci	     memory_buffer_alloc.o \
146a8e1175bSopenharmony_ci	     nist_kw.o \
147a8e1175bSopenharmony_ci	     oid.o \
148a8e1175bSopenharmony_ci	     padlock.o \
149a8e1175bSopenharmony_ci	     pem.o \
150a8e1175bSopenharmony_ci	     pk.o \
151a8e1175bSopenharmony_ci	     pk_ecc.o \
152a8e1175bSopenharmony_ci	     pk_wrap.o \
153a8e1175bSopenharmony_ci	     pkcs12.o \
154a8e1175bSopenharmony_ci	     pkcs5.o \
155a8e1175bSopenharmony_ci	     pkparse.o \
156a8e1175bSopenharmony_ci	     pkwrite.o \
157a8e1175bSopenharmony_ci	     platform.o \
158a8e1175bSopenharmony_ci	     platform_util.o \
159a8e1175bSopenharmony_ci	     poly1305.o \
160a8e1175bSopenharmony_ci	     psa_crypto.o \
161a8e1175bSopenharmony_ci	     psa_crypto_aead.o \
162a8e1175bSopenharmony_ci	     psa_crypto_cipher.o \
163a8e1175bSopenharmony_ci	     psa_crypto_client.o \
164a8e1175bSopenharmony_ci	     psa_crypto_driver_wrappers_no_static.o \
165a8e1175bSopenharmony_ci	     psa_crypto_ecp.o \
166a8e1175bSopenharmony_ci	     psa_crypto_ffdh.o \
167a8e1175bSopenharmony_ci	     psa_crypto_hash.o \
168a8e1175bSopenharmony_ci	     psa_crypto_mac.o \
169a8e1175bSopenharmony_ci	     psa_crypto_pake.o \
170a8e1175bSopenharmony_ci	     psa_crypto_rsa.o \
171a8e1175bSopenharmony_ci	     psa_crypto_se.o \
172a8e1175bSopenharmony_ci	     psa_crypto_slot_management.o \
173a8e1175bSopenharmony_ci	     psa_crypto_storage.o \
174a8e1175bSopenharmony_ci	     psa_its_file.o \
175a8e1175bSopenharmony_ci	     psa_util.o \
176a8e1175bSopenharmony_ci	     ripemd160.o \
177a8e1175bSopenharmony_ci	     rsa.o \
178a8e1175bSopenharmony_ci	     rsa_alt_helpers.o \
179a8e1175bSopenharmony_ci	     sha1.o \
180a8e1175bSopenharmony_ci	     sha256.o \
181a8e1175bSopenharmony_ci	     sha512.o \
182a8e1175bSopenharmony_ci	     sha3.o \
183a8e1175bSopenharmony_ci	     threading.o \
184a8e1175bSopenharmony_ci	     timing.o \
185a8e1175bSopenharmony_ci	     version.o \
186a8e1175bSopenharmony_ci	     version_features.o \
187a8e1175bSopenharmony_ci	     # This line is intentionally left blank
188a8e1175bSopenharmony_ci
189a8e1175bSopenharmony_ciinclude ../3rdparty/Makefile.inc
190a8e1175bSopenharmony_ciLOCAL_CFLAGS+=$(THIRDPARTY_INCLUDES)
191a8e1175bSopenharmony_ciOBJS_CRYPTO+=$(THIRDPARTY_CRYPTO_OBJECTS)
192a8e1175bSopenharmony_ci
193a8e1175bSopenharmony_ciOBJS_X509= \
194a8e1175bSopenharmony_ci	   x509.o \
195a8e1175bSopenharmony_ci	   x509_create.o \
196a8e1175bSopenharmony_ci	   x509_crl.o \
197a8e1175bSopenharmony_ci	   x509_crt.o \
198a8e1175bSopenharmony_ci	   x509_csr.o \
199a8e1175bSopenharmony_ci	   x509write.o \
200a8e1175bSopenharmony_ci	   x509write_crt.o \
201a8e1175bSopenharmony_ci	   x509write_csr.o \
202a8e1175bSopenharmony_ci	   pkcs7.o \
203a8e1175bSopenharmony_ci	   # This line is intentionally left blank
204a8e1175bSopenharmony_ci
205a8e1175bSopenharmony_ciOBJS_TLS= \
206a8e1175bSopenharmony_ci	  debug.o \
207a8e1175bSopenharmony_ci	  mps_reader.o \
208a8e1175bSopenharmony_ci	  mps_trace.o \
209a8e1175bSopenharmony_ci	  net_sockets.o \
210a8e1175bSopenharmony_ci	  ssl_cache.o \
211a8e1175bSopenharmony_ci	  ssl_ciphersuites.o \
212a8e1175bSopenharmony_ci	  ssl_client.o \
213a8e1175bSopenharmony_ci	  ssl_cookie.o \
214a8e1175bSopenharmony_ci	  ssl_debug_helpers_generated.o \
215a8e1175bSopenharmony_ci	  ssl_msg.o \
216a8e1175bSopenharmony_ci	  ssl_ticket.o \
217a8e1175bSopenharmony_ci	  ssl_tls.o \
218a8e1175bSopenharmony_ci	  ssl_tls12_client.o \
219a8e1175bSopenharmony_ci	  ssl_tls12_server.o \
220a8e1175bSopenharmony_ci	  ssl_tls13_keys.o \
221a8e1175bSopenharmony_ci	  ssl_tls13_client.o \
222a8e1175bSopenharmony_ci	  ssl_tls13_server.o \
223a8e1175bSopenharmony_ci	  ssl_tls13_generic.o \
224a8e1175bSopenharmony_ci	  # This line is intentionally left blank
225a8e1175bSopenharmony_ci
226a8e1175bSopenharmony_ci.SILENT:
227a8e1175bSopenharmony_ci
228a8e1175bSopenharmony_ci.PHONY: all static shared clean
229a8e1175bSopenharmony_ci
230a8e1175bSopenharmony_ciifndef SHARED
231a8e1175bSopenharmony_ciall: static
232a8e1175bSopenharmony_cielse
233a8e1175bSopenharmony_ciall: shared static
234a8e1175bSopenharmony_ciendif
235a8e1175bSopenharmony_ci
236a8e1175bSopenharmony_cistatic: libmbedcrypto.a libmbedx509.a libmbedtls.a
237a8e1175bSopenharmony_ci	cd ../tests && echo "This is a seedfile that contains 64 bytes (65 on Windows)......" > seedfile
238a8e1175bSopenharmony_ci
239a8e1175bSopenharmony_cishared: libmbedcrypto.$(DLEXT) libmbedx509.$(DLEXT) libmbedtls.$(DLEXT)
240a8e1175bSopenharmony_ci
241a8e1175bSopenharmony_ci# Windows builds under Mingw can fail if make tries to create archives in the same
242a8e1175bSopenharmony_ci# directory at the same time - see https://bugs.launchpad.net/gcc-arm-embedded/+bug/1848002.
243a8e1175bSopenharmony_ci# This forces builds of the .a files to be serialised.
244a8e1175bSopenharmony_ciifdef WINDOWS
245a8e1175bSopenharmony_cilibmbedtls.a: | libmbedx509.a
246a8e1175bSopenharmony_cilibmbedx509.a: | libmbedcrypto.a
247a8e1175bSopenharmony_ciendif
248a8e1175bSopenharmony_ci
249a8e1175bSopenharmony_ci# tls
250a8e1175bSopenharmony_cilibmbedtls.a: $(OBJS_TLS)
251a8e1175bSopenharmony_ci	echo "  AR    $@"
252a8e1175bSopenharmony_ci	$(AR) $(ARFLAGS) $@ $(OBJS_TLS)
253a8e1175bSopenharmony_ciifdef APPLE_BUILD
254a8e1175bSopenharmony_ciifneq ($(APPLE_BUILD),0)
255a8e1175bSopenharmony_ci	echo "  RL    $@"
256a8e1175bSopenharmony_ci	$(RL) $(RLFLAGS) $@
257a8e1175bSopenharmony_ciendif
258a8e1175bSopenharmony_ciendif
259a8e1175bSopenharmony_ci
260a8e1175bSopenharmony_cilibmbedtls.$(SOEXT_TLS): $(OBJS_TLS) libmbedx509.so
261a8e1175bSopenharmony_ci	echo "  LD    $@"
262a8e1175bSopenharmony_ci	$(CC) -shared -Wl,-soname,$@ -o $@ $(OBJS_TLS) -L. -lmbedx509 -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS)
263a8e1175bSopenharmony_ci
264a8e1175bSopenharmony_ciifneq ($(SOEXT_TLS),so)
265a8e1175bSopenharmony_cilibmbedtls.so: libmbedtls.$(SOEXT_TLS)
266a8e1175bSopenharmony_ci	echo "  LN    $@ -> $<"
267a8e1175bSopenharmony_ci	ln -sf $< $@
268a8e1175bSopenharmony_ciendif
269a8e1175bSopenharmony_ci
270a8e1175bSopenharmony_cilibmbedtls.dylib: $(OBJS_TLS) libmbedx509.dylib
271a8e1175bSopenharmony_ci	echo "  LD    $@"
272a8e1175bSopenharmony_ci	$(CC) -dynamiclib -o $@ $(OBJS_TLS) -L. -lmbedx509 -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS)
273a8e1175bSopenharmony_ci
274a8e1175bSopenharmony_cilibmbedtls.dll: $(OBJS_TLS) libmbedx509.dll
275a8e1175bSopenharmony_ci	echo "  LD    $@"
276a8e1175bSopenharmony_ci	$(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_TLS) -lws2_32 -lwinmm -lgdi32 -L. -lmbedx509 -lmbedcrypto -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS)
277a8e1175bSopenharmony_ci
278a8e1175bSopenharmony_ci# x509
279a8e1175bSopenharmony_cilibmbedx509.a: $(OBJS_X509)
280a8e1175bSopenharmony_ci	echo "  AR    $@"
281a8e1175bSopenharmony_ci	$(AR) $(ARFLAGS) $@ $(OBJS_X509)
282a8e1175bSopenharmony_ciifdef APPLE_BUILD
283a8e1175bSopenharmony_ciifneq ($(APPLE_BUILD),0)
284a8e1175bSopenharmony_ci	echo "  RL    $@"
285a8e1175bSopenharmony_ci	$(RL) $(RLFLAGS) $@
286a8e1175bSopenharmony_ciendif
287a8e1175bSopenharmony_ciendif
288a8e1175bSopenharmony_ci
289a8e1175bSopenharmony_cilibmbedx509.$(SOEXT_X509): $(OBJS_X509) libmbedcrypto.so
290a8e1175bSopenharmony_ci	echo "  LD    $@"
291a8e1175bSopenharmony_ci	$(CC) -shared -Wl,-soname,$@ -o $@ $(OBJS_X509) -L. -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS)
292a8e1175bSopenharmony_ci
293a8e1175bSopenharmony_ciifneq ($(SOEXT_X509),so)
294a8e1175bSopenharmony_cilibmbedx509.so: libmbedx509.$(SOEXT_X509)
295a8e1175bSopenharmony_ci	echo "  LN    $@ -> $<"
296a8e1175bSopenharmony_ci	ln -sf $< $@
297a8e1175bSopenharmony_ciendif
298a8e1175bSopenharmony_ci
299a8e1175bSopenharmony_cilibmbedx509.dylib: $(OBJS_X509) libmbedcrypto.dylib
300a8e1175bSopenharmony_ci	echo "  LD    $@"
301a8e1175bSopenharmony_ci	$(CC) -dynamiclib -o $@ $(OBJS_X509) -L. -lmbedcrypto  $(LOCAL_LDFLAGS) $(LDFLAGS)
302a8e1175bSopenharmony_ci
303a8e1175bSopenharmony_cilibmbedx509.dll: $(OBJS_X509) libmbedcrypto.dll
304a8e1175bSopenharmony_ci	echo "  LD    $@"
305a8e1175bSopenharmony_ci	$(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_X509) -lws2_32 -lwinmm -lgdi32 -L. -lmbedcrypto -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS)
306a8e1175bSopenharmony_ci
307a8e1175bSopenharmony_ci# crypto
308a8e1175bSopenharmony_cilibmbedcrypto.a: $(OBJS_CRYPTO)
309a8e1175bSopenharmony_ci	echo "  AR    $@"
310a8e1175bSopenharmony_ci	$(AR) $(ARFLAGS) $@ $(OBJS_CRYPTO)
311a8e1175bSopenharmony_ciifdef APPLE_BUILD
312a8e1175bSopenharmony_ciifneq ($(APPLE_BUILD),0)
313a8e1175bSopenharmony_ci	echo "  RL    $@"
314a8e1175bSopenharmony_ci	$(RL) $(RLFLAGS) $@
315a8e1175bSopenharmony_ciendif
316a8e1175bSopenharmony_ciendif
317a8e1175bSopenharmony_ci
318a8e1175bSopenharmony_cilibmbedcrypto.$(SOEXT_CRYPTO): $(OBJS_CRYPTO)
319a8e1175bSopenharmony_ci	echo "  LD    $@"
320a8e1175bSopenharmony_ci	$(CC) -shared -Wl,-soname,$@ -o $@ $(OBJS_CRYPTO) $(LOCAL_LDFLAGS) $(LDFLAGS)
321a8e1175bSopenharmony_ci
322a8e1175bSopenharmony_ciifneq ($(SOEXT_CRYPTO),so)
323a8e1175bSopenharmony_cilibmbedcrypto.so: libmbedcrypto.$(SOEXT_CRYPTO)
324a8e1175bSopenharmony_ci	echo "  LN    $@ -> $<"
325a8e1175bSopenharmony_ci	ln -sf $< $@
326a8e1175bSopenharmony_ciendif
327a8e1175bSopenharmony_ci
328a8e1175bSopenharmony_cilibmbedcrypto.dylib: $(OBJS_CRYPTO)
329a8e1175bSopenharmony_ci	echo "  LD    $@"
330a8e1175bSopenharmony_ci	$(CC) -dynamiclib -o $@ $(OBJS_CRYPTO) $(LOCAL_LDFLAGS) $(LDFLAGS)
331a8e1175bSopenharmony_ci
332a8e1175bSopenharmony_cilibmbedcrypto.dll: $(OBJS_CRYPTO)
333a8e1175bSopenharmony_ci	echo "  LD    $@"
334a8e1175bSopenharmony_ci	$(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_CRYPTO) -lws2_32 -lwinmm -lgdi32 -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS)
335a8e1175bSopenharmony_ci
336a8e1175bSopenharmony_ci.c.o:
337a8e1175bSopenharmony_ci	echo "  CC    $<"
338a8e1175bSopenharmony_ci	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) -o $@ -c $<
339a8e1175bSopenharmony_ci
340a8e1175bSopenharmony_ci.PHONY: generated_files
341a8e1175bSopenharmony_cigenerated_files: $(GENERATED_FILES)
342a8e1175bSopenharmony_ci
343a8e1175bSopenharmony_ci# See root Makefile
344a8e1175bSopenharmony_ciGEN_FILES ?=
345a8e1175bSopenharmony_ciifdef GEN_FILES
346a8e1175bSopenharmony_cigen_file_dep =
347a8e1175bSopenharmony_cielse
348a8e1175bSopenharmony_cigen_file_dep = |
349a8e1175bSopenharmony_ciendif
350a8e1175bSopenharmony_ci
351a8e1175bSopenharmony_cierror.c: $(gen_file_dep) ../scripts/generate_errors.pl
352a8e1175bSopenharmony_cierror.c: $(gen_file_dep) ../scripts/data_files/error.fmt
353a8e1175bSopenharmony_cierror.c: $(gen_file_dep) $(filter-out %config%,$(wildcard ../include/mbedtls/*.h))
354a8e1175bSopenharmony_cierror.c:
355a8e1175bSopenharmony_ci	echo "  Gen   $@"
356a8e1175bSopenharmony_ci	$(PERL) ../scripts/generate_errors.pl
357a8e1175bSopenharmony_ci
358a8e1175bSopenharmony_cissl_debug_helpers_generated.c: $(gen_file_dep) ../scripts/generate_ssl_debug_helpers.py
359a8e1175bSopenharmony_cissl_debug_helpers_generated.c: $(gen_file_dep) $(filter-out %config%,$(wildcard ../include/mbedtls/*.h))
360a8e1175bSopenharmony_cissl_debug_helpers_generated.c:
361a8e1175bSopenharmony_ci	echo "  Gen   $@"
362a8e1175bSopenharmony_ci	$(PYTHON) ../scripts/generate_ssl_debug_helpers.py --mbedtls-root .. .
363a8e1175bSopenharmony_ci
364a8e1175bSopenharmony_civersion_features.c: $(gen_file_dep) ../scripts/generate_features.pl
365a8e1175bSopenharmony_civersion_features.c: $(gen_file_dep) ../scripts/data_files/version_features.fmt
366a8e1175bSopenharmony_ci## The generated file only depends on the options that are present in mbedtls_config.h,
367a8e1175bSopenharmony_ci## not on which options are set. To avoid regenerating this file all the time
368a8e1175bSopenharmony_ci## when switching between configurations, don't declare mbedtls_config.h as a
369a8e1175bSopenharmony_ci## dependency. Remove this file from your working tree if you've just added or
370a8e1175bSopenharmony_ci## removed an option in mbedtls_config.h.
371a8e1175bSopenharmony_ci#version_features.c: ../include/mbedtls/mbedtls_config.h
372a8e1175bSopenharmony_civersion_features.c:
373a8e1175bSopenharmony_ci	echo "  Gen   $@"
374a8e1175bSopenharmony_ci	$(PERL) ../scripts/generate_features.pl
375a8e1175bSopenharmony_ci
376a8e1175bSopenharmony_ciGENERATED_WRAPPER_FILES = \
377a8e1175bSopenharmony_ci                    psa_crypto_driver_wrappers.h \
378a8e1175bSopenharmony_ci                    psa_crypto_driver_wrappers_no_static.c
379a8e1175bSopenharmony_ci$(GENERATED_WRAPPER_FILES): ../scripts/generate_driver_wrappers.py
380a8e1175bSopenharmony_ci$(GENERATED_WRAPPER_FILES): ../scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja
381a8e1175bSopenharmony_ci$(GENERATED_WRAPPER_FILES): ../scripts/data_files/driver_templates/psa_crypto_driver_wrappers_no_static.c.jinja
382a8e1175bSopenharmony_ci$(GENERATED_WRAPPER_FILES):
383a8e1175bSopenharmony_ci	echo "  Gen   $(GENERATED_WRAPPER_FILES)"
384a8e1175bSopenharmony_ci	$(PYTHON) ../scripts/generate_driver_wrappers.py
385a8e1175bSopenharmony_ci
386a8e1175bSopenharmony_cipsa_crypto.o:psa_crypto_driver_wrappers.h
387a8e1175bSopenharmony_ci
388a8e1175bSopenharmony_ciclean:
389a8e1175bSopenharmony_ciifndef WINDOWS
390a8e1175bSopenharmony_ci	rm -f *.o libmbed*
391a8e1175bSopenharmony_ci	rm -f $(THIRDPARTY_CRYPTO_OBJECTS)
392a8e1175bSopenharmony_cielse
393a8e1175bSopenharmony_ci	if exist *.o del /Q /F *.o
394a8e1175bSopenharmony_ci	if exist libmbed* del /Q /F libmbed*
395a8e1175bSopenharmony_ci	del /Q /F del_errors_out_if_the_file_list_is_empty_but_not_if_a_file_does_not_exist $(subst /,\,$(THIRDPARTY_CRYPTO_OBJECTS))
396a8e1175bSopenharmony_ciendif
397a8e1175bSopenharmony_ci
398a8e1175bSopenharmony_cineat: clean
399a8e1175bSopenharmony_ciifndef WINDOWS
400a8e1175bSopenharmony_ci	rm -f $(GENERATED_FILES)
401a8e1175bSopenharmony_cielse
402a8e1175bSopenharmony_ci	for %f in ($(subst /,\,$(GENERATED_FILES))) if exist %f del /Q /F %f
403a8e1175bSopenharmony_ciendif
404