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