Update snapshot(2018-01-17)
[platform/upstream/iotivity.git] / extlibs / mbedtls / mbedtls / library / Makefile
1
2 # Also see "include/mbedtls/config.h"
3
4 CFLAGS  ?= -O2
5 WARNING_CFLAGS ?=  -Wall -W -Wdeclaration-after-statement
6 LDFLAGS ?=
7
8 LOCAL_CFLAGS = $(WARNING_CFLAGS) -I../include -D_FILE_OFFSET_BITS=64
9 LOCAL_LDFLAGS =
10
11 ifdef DEBUG
12 LOCAL_CFLAGS += -g3
13 endif
14
15 # MicroBlaze specific options:
16 # CFLAGS += -mno-xl-soft-mul -mxl-barrel-shift
17
18 # To compile on Plan9:
19 # CFLAGS += -D_BSD_EXTENSION
20
21 # if were running on Windows build for Windows
22 ifdef WINDOWS
23 WINDOWS_BUILD=1
24 endif
25
26 # To compile as a shared library:
27 ifdef SHARED
28 # all code is position-indep with mingw, avoid warning about useless flag
29 ifndef WINDOWS_BUILD
30 LOCAL_CFLAGS += -fPIC -fpic
31 endif
32 endif
33
34 SOEXT_TLS=so.10
35 SOEXT_X509=so.0
36 SOEXT_CRYPTO=so.0
37
38 DLEXT=so
39 # OSX shared library extension:
40 # DLEXT=dylib
41
42 # Windows shared library extension:
43 ifdef WINDOWS_BUILD
44 DLEXT=dll
45 endif
46
47 OBJS_CRYPTO=    aes.o           aesni.o         arc4.o          \
48                 asn1parse.o     asn1write.o     base64.o        \
49                 bignum.o        blowfish.o      camellia.o      \
50                 ccm.o           cipher.o        cipher_wrap.o   \
51                 cmac.o          ctr_drbg.o      des.o           \
52                 dhm.o           ecdh.o          ecdsa.o         \
53                 ecjpake.o       ecp.o                           \
54                 ecp_curves.o    entropy.o       entropy_poll.o  \
55                 error.o         gcm.o           havege.o        \
56                 hmac_drbg.o     md.o            md2.o           \
57                 md4.o           md5.o           md_wrap.o       \
58                 memory_buffer_alloc.o           oid.o           \
59                 padlock.o       pem.o           pk.o            \
60                 pk_wrap.o       pkcs12.o        pkcs5.o         \
61                 pkparse.o       pkwrite.o       platform.o      \
62                 ripemd160.o     rsa.o           sha1.o          \
63                 sha256.o        sha512.o        threading.o     \
64                 timing.o        version.o                       \
65                 version_features.o              xtea.o
66
67 OBJS_X509=      certs.o         pkcs11.o        x509.o          \
68                 x509_create.o   x509_crl.o      x509_crt.o      \
69                 x509_csr.o      x509write_crt.o x509write_csr.o
70
71 OBJS_TLS=       debug.o         net_sockets.o           \
72                 ssl_cache.o     ssl_ciphersuites.o      \
73                 ssl_cli.o       ssl_cookie.o            \
74                 ssl_srv.o       ssl_ticket.o            \
75                 ssl_tls.o
76
77 .SILENT:
78
79 .PHONY: all static shared clean
80
81 ifndef SHARED
82 all: static
83 else
84 all: shared static
85 endif
86
87 static: libmbedcrypto.a libmbedx509.a libmbedtls.a
88
89 shared: libmbedcrypto.$(DLEXT) libmbedx509.$(DLEXT) libmbedtls.$(DLEXT)
90
91 # tls
92 libmbedtls.a: $(OBJS_TLS)
93         echo "  AR    $@"
94         $(AR) -rc $@ $(OBJS_TLS)
95         echo "  RL    $@"
96         $(AR) -s $@
97
98 libmbedtls.$(SOEXT_TLS): $(OBJS_TLS) libmbedx509.so
99         echo "  LD    $@"
100         $(CC) -shared -Wl,-soname,$@ -L. -lmbedcrypto -lmbedx509 $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_TLS)
101
102 libmbedtls.so: libmbedtls.$(SOEXT_TLS)
103         echo "  LN    $@ -> $<"
104         ln -sf $< $@
105
106 libmbedtls.dylib: $(OBJS_TLS)
107         echo "  LD    $@"
108         $(CC) -dynamiclib $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_TLS)
109
110 libmbedtls.dll: $(OBJS_TLS) libmbedx509.dll
111         echo "  LD    $@"
112         $(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_TLS) -lws2_32 -lwinmm -lgdi32 -L. -lmbedcrypto -lmbedx509 -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS)
113
114 # x509
115 libmbedx509.a: $(OBJS_X509)
116         echo "  AR    $@"
117         $(AR) -rc $@ $(OBJS_X509)
118         echo "  RL    $@"
119         $(AR) -s $@
120
121 libmbedx509.$(SOEXT_X509): $(OBJS_X509) libmbedcrypto.so
122         echo "  LD    $@"
123         $(CC) -shared -Wl,-soname,$@ -L. -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_X509)
124
125 libmbedx509.so: libmbedx509.$(SOEXT_X509)
126         echo "  LN    $@ -> $<"
127         ln -sf $< $@
128
129 libmbedx509.dylib: $(OBJS_X509)
130         echo "  LD    $@"
131         $(CC) -dynamiclib $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_X509)
132
133 libmbedx509.dll: $(OBJS_X509) libmbedcrypto.dll
134         echo "  LD    $@"
135         $(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_X509) -lws2_32 -lwinmm -lgdi32 -L. -lmbedcrypto -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS)
136
137 # crypto
138 libmbedcrypto.a: $(OBJS_CRYPTO)
139         echo "  AR    $@"
140         $(AR) -rc $@ $(OBJS_CRYPTO)
141         echo "  RL    $@"
142         $(AR) -s $@
143
144 libmbedcrypto.$(SOEXT_CRYPTO): $(OBJS_CRYPTO)
145         echo "  LD    $@"
146         $(CC) -shared -Wl,-soname,$@ $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_CRYPTO)
147
148 libmbedcrypto.so: libmbedcrypto.$(SOEXT_CRYPTO)
149         echo "  LN    $@ -> $<"
150         ln -sf $< $@
151
152 libmbedcrypto.dylib: $(OBJS_CRYPTO)
153         echo "  LD    $@"
154         $(CC) -dynamiclib $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_CRYPTO)
155
156 libmbedcrypto.dll: $(OBJS_CRYPTO)
157         echo "  LD    $@"
158         $(CC) -shared -Wl,-soname,$@ -Wl,--out-implib,$@.a -o $@ $(OBJS_CRYPTO) -lws2_32 -lwinmm -lgdi32 -static-libgcc $(LOCAL_LDFLAGS) $(LDFLAGS)
159
160 .c.o:
161         echo "  CC    $<"
162         $(CC) $(LOCAL_CFLAGS) $(CFLAGS) -c $<
163
164 clean:
165 ifndef WINDOWS
166         rm -f *.o libmbed*
167 else
168         del /Q /F *.o libmbed*
169 endif