|  | 
 | # Also see "include/mbedtls/config.h" | 
 |  | 
 | CFLAGS	?= -O2 | 
 | WARNING_CFLAGS ?=  -Wall -W -Wdeclaration-after-statement | 
 | LDFLAGS ?= | 
 |  | 
 | LOCAL_CFLAGS = $(WARNING_CFLAGS) -I../include -D_FILE_OFFSET_BITS=64 | 
 | LOCAL_LDFLAGS = | 
 |  | 
 | ifdef DEBUG | 
 | LOCAL_CFLAGS += -g3 | 
 | endif | 
 |  | 
 | # MicroBlaze specific options: | 
 | # CFLAGS += -mno-xl-soft-mul -mxl-barrel-shift | 
 |  | 
 | # To compile on Plan9: | 
 | # CFLAGS += -D_BSD_EXTENSION | 
 |  | 
 | # if were running on Windows build for Windows | 
 | ifdef WINDOWS | 
 | WINDOWS_BUILD=1 | 
 | endif | 
 |  | 
 | # To compile as a shared library: | 
 | ifdef SHARED | 
 | # all code is position-indep with mingw, avoid warning about useless flag | 
 | ifndef WINDOWS_BUILD | 
 | LOCAL_CFLAGS += -fPIC -fpic | 
 | endif | 
 | endif | 
 |  | 
 | SOEXT_TLS=so.10 | 
 | SOEXT_X509=so.0 | 
 | SOEXT_CRYPTO=so.1 | 
 |  | 
 | DLEXT=so | 
 | # OSX shared library extension: | 
 | # DLEXT=dylib | 
 |  | 
 | # Windows shared library extension: | 
 | ifdef WINDOWS_BUILD | 
 | DLEXT=dll | 
 | endif | 
 |  | 
 | OBJS_CRYPTO=	aes.o		aesni.o		arc4.o		\ | 
 | 		asn1parse.o	asn1write.o	base64.o	\ | 
 | 		bignum.o	blowfish.o	camellia.o	\ | 
 | 		ccm.o		cipher.o	cipher_wrap.o	\ | 
 | 		cmac.o		ctr_drbg.o	des.o		\ | 
 | 		dhm.o		ecdh.o		ecdsa.o		\ | 
 | 		ecjpake.o	ecp.o				\ | 
 | 		ecp_curves.o	entropy.o	entropy_poll.o	\ | 
 | 		error.o		gcm.o		havege.o	\ | 
 | 		hmac_drbg.o	md.o		md2.o		\ | 
 | 		md4.o		md5.o		md_wrap.o	\ | 
 | 		memory_buffer_alloc.o		oid.o		\ | 
 | 		padlock.o	pem.o		pk.o		\ | 
 | 		pk_wrap.o	pkcs12.o	pkcs5.o		\ | 
 | 		pkparse.o	pkwrite.o	platform.o	\ | 
 | 		ripemd160.o	rsa_internal.o	rsa.o  		\ | 
 | 		sha1.o		sha256.o	sha512.o	\ | 
 | 		threading.o	timing.o	version.o	\ | 
 | 		version_features.o		xtea.o | 
 |  | 
 | OBJS_X509=	certs.o		pkcs11.o	x509.o		\ | 
 | 		x509_create.o	x509_crl.o	x509_crt.o	\ | 
 | 		x509_csr.o	x509write_crt.o	x509write_csr.o | 
 |  | 
 | OBJS_TLS=	debug.o		net_sockets.o		\ | 
 | 		ssl_cache.o	ssl_ciphersuites.o	\ | 
 | 		ssl_cli.o	ssl_cookie.o		\ | 
 | 		ssl_srv.o	ssl_ticket.o		\ | 
 | 		ssl_tls.o | 
 |  | 
 | .SILENT: | 
 |  | 
 | .PHONY: all static shared clean | 
 |  | 
 | ifndef SHARED | 
 | all: static | 
 | else | 
 | all: shared static | 
 | endif | 
 |  | 
 | static: libmbedcrypto.a libmbedx509.a libmbedtls.a | 
 |  | 
 | shared: libmbedcrypto.$(DLEXT) libmbedx509.$(DLEXT) libmbedtls.$(DLEXT) | 
 |  | 
 | # tls | 
 | libmbedtls.a: $(OBJS_TLS) | 
 | 	echo "  AR    $@" | 
 | 	$(AR) -rc $@ $(OBJS_TLS) | 
 | 	echo "  RL    $@" | 
 | 	$(AR) -s $@ | 
 |  | 
 | libmbedtls.$(SOEXT_TLS): $(OBJS_TLS) libmbedx509.so | 
 | 	echo "  LD    $@" | 
 | 	$(CC) -shared -Wl,-soname,$@ -L. -lmbedcrypto -lmbedx509 $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_TLS) | 
 |  | 
 | libmbedtls.so: libmbedtls.$(SOEXT_TLS) | 
 | 	echo "  LN    $@ -> $<" | 
 | 	ln -sf $< $@ | 
 |  | 
 | libmbedtls.dylib: $(OBJS_TLS) | 
 | 	echo "  LD    $@" | 
 | 	$(CC) -dynamiclib $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_TLS) | 
 |  | 
 | libmbedtls.dll: $(OBJS_TLS) libmbedx509.dll | 
 | 	echo "  LD    $@" | 
 | 	$(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_TLS) -lws2_32 -lwinmm -lgdi32 -L. -lmbedcrypto -lmbedx509 -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS) | 
 |  | 
 | # x509 | 
 | libmbedx509.a: $(OBJS_X509) | 
 | 	echo "  AR    $@" | 
 | 	$(AR) -rc $@ $(OBJS_X509) | 
 | 	echo "  RL    $@" | 
 | 	$(AR) -s $@ | 
 |  | 
 | libmbedx509.$(SOEXT_X509): $(OBJS_X509) libmbedcrypto.so | 
 | 	echo "  LD    $@" | 
 | 	$(CC) -shared -Wl,-soname,$@ -L. -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_X509) | 
 |  | 
 | libmbedx509.so: libmbedx509.$(SOEXT_X509) | 
 | 	echo "  LN    $@ -> $<" | 
 | 	ln -sf $< $@ | 
 |  | 
 | libmbedx509.dylib: $(OBJS_X509) | 
 | 	echo "  LD    $@" | 
 | 	$(CC) -dynamiclib $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_X509) | 
 |  | 
 | libmbedx509.dll: $(OBJS_X509) libmbedcrypto.dll | 
 | 	echo "  LD    $@" | 
 | 	$(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_X509) -lws2_32 -lwinmm -lgdi32 -L. -lmbedcrypto -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS) | 
 |  | 
 | # crypto | 
 | libmbedcrypto.a: $(OBJS_CRYPTO) | 
 | 	echo "  AR    $@" | 
 | 	$(AR) -rc $@ $(OBJS_CRYPTO) | 
 | 	echo "  RL    $@" | 
 | 	$(AR) -s $@ | 
 |  | 
 | libmbedcrypto.$(SOEXT_CRYPTO): $(OBJS_CRYPTO) | 
 | 	echo "  LD    $@" | 
 | 	$(CC) -shared -Wl,-soname,$@ $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_CRYPTO) | 
 |  | 
 | libmbedcrypto.so: libmbedcrypto.$(SOEXT_CRYPTO) | 
 | 	echo "  LN    $@ -> $<" | 
 | 	ln -sf $< $@ | 
 |  | 
 | libmbedcrypto.dylib: $(OBJS_CRYPTO) | 
 | 	echo "  LD    $@" | 
 | 	$(CC) -dynamiclib $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_CRYPTO) | 
 |  | 
 | libmbedcrypto.dll: $(OBJS_CRYPTO) | 
 | 	echo "  LD    $@" | 
 | 	$(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_CRYPTO) -lws2_32 -lwinmm -lgdi32 -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS) | 
 |  | 
 | .c.o: | 
 | 	echo "  CC    $<" | 
 | 	$(CC) $(LOCAL_CFLAGS) $(CFLAGS) -c $< | 
 |  | 
 | clean: | 
 | ifndef WINDOWS | 
 | 	rm -f *.o libmbed* | 
 | else | 
 | 	del /Q /F *.o libmbed* | 
 | endif |