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