Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / third_party / mbedtls / repo / library / CMakeLists.txt
1 option(USE_STATIC_MBEDTLS_LIBRARY "Build mbed TLS static library." ON)
2 option(USE_SHARED_MBEDTLS_LIBRARY "Build mbed TLS shared library." OFF)
3 option(LINK_WITH_PTHREAD "Explicitly link mbed TLS library to pthread." OFF)
4
5 set(src_crypto
6     aes.c
7     aesni.c
8     arc4.c
9     aria.c
10     asn1parse.c
11     asn1write.c
12     base64.c
13     bignum.c
14     blowfish.c
15     camellia.c
16     ccm.c
17     chacha20.c
18     chachapoly.c
19     cipher.c
20     cipher_wrap.c
21     cmac.c
22     ctr_drbg.c
23     des.c
24     dhm.c
25     ecdh.c
26     ecdsa.c
27     ecjpake.c
28     ecp.c
29     ecp_curves.c
30     entropy.c
31     entropy_poll.c
32     error.c
33     gcm.c
34     havege.c
35     hkdf.c
36     hmac_drbg.c
37     md.c
38     md2.c
39     md4.c
40     md5.c
41     md_wrap.c
42     memory_buffer_alloc.c
43     nist_kw.c
44     oid.c
45     padlock.c
46     pem.c
47     pk.c
48     pk_wrap.c
49     pkcs12.c
50     pkcs5.c
51     pkparse.c
52     pkwrite.c
53     platform.c
54     platform_util.c
55     poly1305.c
56     ripemd160.c
57     rsa.c
58     rsa_internal.c
59     sha1.c
60     sha256.c
61     sha512.c
62     threading.c
63     timing.c
64     version.c
65     version_features.c
66     xtea.c
67 )
68
69 set(src_x509
70     certs.c
71     pkcs11.c
72     x509.c
73     x509_create.c
74     x509_crl.c
75     x509_crt.c
76     x509_csr.c
77     x509write_crt.c
78     x509write_csr.c
79 )
80
81 set(src_tls
82     debug.c
83     net_sockets.c
84     ssl_cache.c
85     ssl_ciphersuites.c
86     ssl_cli.c
87     ssl_cookie.c
88     ssl_srv.c
89     ssl_ticket.c
90     ssl_tls.c
91 )
92
93 if(CMAKE_COMPILER_IS_GNUCC)
94     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-declarations -Wmissing-prototypes")
95 endif(CMAKE_COMPILER_IS_GNUCC)
96
97 if(CMAKE_COMPILER_IS_CLANG)
98     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-declarations -Wmissing-prototypes -Wdocumentation -Wno-documentation-deprecated-sync -Wunreachable-code")
99 endif(CMAKE_COMPILER_IS_CLANG)
100
101 if(UNSAFE_BUILD)
102     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error")
103     set(CMAKE_C_FLAGS_ASAN "${CMAKE_C_FLAGS_ASAN} -Wno-error")
104     set(CMAKE_C_FLAGS_ASANDBG "${CMAKE_C_FLAGS_ASANDBG} -Wno-error")
105 endif(UNSAFE_BUILD)
106
107 if(WIN32)
108     set(libs ${libs} ws2_32)
109 endif(WIN32)
110
111 if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
112     SET(CMAKE_C_ARCHIVE_CREATE   "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
113     SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
114     SET(CMAKE_C_ARCHIVE_FINISH   "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
115     SET(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
116 endif()
117
118 if(HAIKU)
119     set(libs ${libs} network)
120 endif(HAIKU)
121
122 if(USE_PKCS11_HELPER_LIBRARY)
123     set(libs ${libs} pkcs11-helper)
124 endif(USE_PKCS11_HELPER_LIBRARY)
125
126 if(ENABLE_ZLIB_SUPPORT)
127     set(libs ${libs} ${ZLIB_LIBRARIES})
128 endif(ENABLE_ZLIB_SUPPORT)
129
130 if(LINK_WITH_PTHREAD)
131     set(libs ${libs} pthread)
132 endif()
133
134 if (NOT USE_STATIC_MBEDTLS_LIBRARY AND NOT USE_SHARED_MBEDTLS_LIBRARY)
135     message(FATAL_ERROR "Need to choose static or shared mbedtls build!")
136 endif(NOT USE_STATIC_MBEDTLS_LIBRARY AND NOT USE_SHARED_MBEDTLS_LIBRARY)
137
138 if(USE_STATIC_MBEDTLS_LIBRARY AND USE_SHARED_MBEDTLS_LIBRARY)
139     set(mbedtls_static_target "mbedtls_static")
140     set(mbedx509_static_target "mbedx509_static")
141     set(mbedcrypto_static_target "mbedcrypto_static")
142 elseif(USE_STATIC_MBEDTLS_LIBRARY)
143     set(mbedtls_static_target "mbedtls")
144     set(mbedx509_static_target "mbedx509")
145     set(mbedcrypto_static_target "mbedcrypto")
146 endif()
147
148 if(USE_STATIC_MBEDTLS_LIBRARY)
149
150     add_library(${mbedx509_static_target} STATIC ${src_x509})
151     set_target_properties(${mbedx509_static_target} PROPERTIES OUTPUT_NAME mbedx509)
152     target_link_libraries(${mbedx509_static_target} ${libs} ${mbedcrypto_static_target})
153     target_include_directories(${mbedx509_static_target}
154         PUBLIC ${MBEDTLS_DIR}/include/
155         PUBLIC ${MBEDTLS_DIR}/crypto/include/)
156
157     add_library(${mbedtls_static_target} STATIC ${src_tls})
158     set_target_properties(${mbedtls_static_target} PROPERTIES OUTPUT_NAME mbedtls)
159     target_link_libraries(${mbedtls_static_target} ${libs} ${mbedx509_static_target})
160     target_include_directories(${mbedtls_static_target}
161         PUBLIC ${MBEDTLS_DIR}/include/
162         PUBLIC ${MBEDTLS_DIR}/crypto/include/
163         )
164
165
166     install(TARGETS ${mbedtls_static_target} ${mbedx509_static_target}
167             DESTINATION ${LIB_INSTALL_DIR}
168             PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
169
170 endif(USE_STATIC_MBEDTLS_LIBRARY)
171
172 if(USE_SHARED_MBEDTLS_LIBRARY)
173
174     add_library(mbedx509 SHARED ${src_x509})
175     set_target_properties(mbedx509 PROPERTIES VERSION 2.18.0 SOVERSION 1)
176     target_link_libraries(mbedx509 ${libs} mbedcrypto)
177     target_include_directories(mbedx509
178         PUBLIC ${MBEDTLS_DIR}/include/
179         PUBLIC ${MBEDTLS_DIR}/crypto/include/)
180
181     add_library(mbedtls SHARED ${src_tls})
182     set_target_properties(mbedtls PROPERTIES VERSION 2.18.0 SOVERSION 13)
183     target_link_libraries(mbedtls ${libs} mbedx509)
184     target_include_directories(mbedtls
185         PUBLIC ${MBEDTLS_DIR}/include/
186         PUBLIC ${MBEDTLS_DIR}/crypto/include/)
187
188       install(TARGETS mbedtls mbedx509
189               DESTINATION ${LIB_INSTALL_DIR}
190               PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
191
192 endif(USE_SHARED_MBEDTLS_LIBRARY)
193
194 add_custom_target(lib DEPENDS mbedx509 mbedtls)
195 if(USE_STATIC_MBEDTLS_LIBRARY AND USE_SHARED_MBEDTLS_LIBRARY)
196     add_dependencies(lib mbedx509_static mbedtls_static)
197 endif()