459c9924bde07bd8345a18bb286f062d2e0fe65f
[openwrt/openwrt.git] / package / libs / mbedtls / Makefile
1 #
2 # Copyright (C) 2011-2015 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 include $(TOPDIR)/rules.mk
9
10 PKG_NAME:=mbedtls
11 PKG_VERSION:=2.28.8
12 PKG_RELEASE:=1
13 PKG_BUILD_FLAGS:=no-mips16 gc-sections no-lto
14
15 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
16 PKG_SOURCE_URL:=https://codeload.github.com/ARMmbed/mbedtls/tar.gz/v$(PKG_VERSION)?
17 PKG_HASH:=4fef7de0d8d542510d726d643350acb3cdb9dc76ad45611b59c9aa08372b4213
18
19 PKG_LICENSE:=GPL-2.0-or-later
20 PKG_LICENSE_FILES:=gpl-2.0.txt
21 PKG_CPE_ID:=cpe:/a:arm:mbed_tls
22
23 MBEDTLS_BUILD_OPTS_CURVES= \
24 CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED \
25 CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED \
26 CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED \
27 CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED \
28 CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED \
29 CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED \
30 CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED \
31 CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED \
32 CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED \
33 CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED \
34 CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED \
35 CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED \
36 CONFIG_MBEDTLS_ECP_DP_CURVE448_ENABLED
37
38 MBEDTLS_BUILD_OPTS_CIPHERS= \
39 CONFIG_MBEDTLS_AES_C \
40 CONFIG_MBEDTLS_CAMELLIA_C \
41 CONFIG_MBEDTLS_CCM_C \
42 CONFIG_MBEDTLS_CMAC_C \
43 CONFIG_MBEDTLS_DES_C \
44 CONFIG_MBEDTLS_GCM_C \
45 CONFIG_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED \
46 CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED \
47 CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED \
48 CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED \
49 CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_ENABLED \
50 CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED \
51 CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED \
52 CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED \
53 CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED \
54 CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED \
55 CONFIG_MBEDTLS_NIST_KW_C \
56 CONFIG_MBEDTLS_RIPEMD160_C \
57 CONFIG_MBEDTLS_RSA_NO_CRT \
58 CONFIG_MBEDTLS_XTEA_C
59
60 MBEDTLS_BUILD_OPTS= \
61 $(MBEDTLS_BUILD_OPTS_CURVES) \
62 $(MBEDTLS_BUILD_OPTS_CIPHERS) \
63 CONFIG_MBEDTLS_CERTS_C \
64 CONFIG_MBEDTLS_CIPHER_MODE_OFB \
65 CONFIG_MBEDTLS_CIPHER_MODE_XTS \
66 CONFIG_MBEDTLS_DEBUG_C \
67 CONFIG_MBEDTLS_ENTROPY_FORCE_SHA256 \
68 CONFIG_MBEDTLS_HKDF_C \
69 CONFIG_MBEDTLS_PLATFORM_C \
70 CONFIG_MBEDTLS_SELF_TEST \
71 CONFIG_MBEDTLS_SSL_RENEGOTIATION \
72 CONFIG_MBEDTLS_SSL_TRUNCATED_HMAC \
73 CONFIG_MBEDTLS_THREADING_C \
74 CONFIG_MBEDTLS_THREADING_PTHREAD \
75 CONFIG_MBEDTLS_VERSION_C \
76 CONFIG_MBEDTLS_VERSION_FEATURES
77
78 PKG_CONFIG_DEPENDS := $(MBEDTLS_BUILD_OPTS)
79
80 include $(INCLUDE_DIR)/package.mk
81 include $(INCLUDE_DIR)/cmake.mk
82
83 define Package/mbedtls/Default
84 TITLE:=Embedded SSL
85 URL:=https://tls.mbed.org
86 endef
87
88 define Package/mbedtls/Default/description
89 The aim of the mbedtls project is to provide a quality, open-source
90 cryptographic library written in C and targeted at embedded systems.
91 endef
92
93 define Package/libmbedtls
94 $(call Package/mbedtls/Default)
95 SECTION:=libs
96 CATEGORY:=Libraries
97 SUBMENU:=SSL
98 TITLE+= (library)
99 ABI_VERSION:=13
100 MENU:=1
101 endef
102
103 define Package/libmbedtls/config
104 source "$(SOURCE)/Config.in"
105 endef
106
107 define Package/mbedtls-util
108 $(call Package/mbedtls/Default)
109 SECTION:=utils
110 CATEGORY:=Utilities
111 TITLE+= (utilities)
112 DEPENDS:=+libmbedtls
113 endef
114
115 define Package/libmbedtls/description
116 $(call Package/mbedtls/Default/description)
117 This package contains the mbedtls library.
118 endef
119
120 define Package/mbedtls-util/description
121 $(call Package/mbedtls/Default/description)
122 This package contains mbedtls helper programs for private key and
123 CSR generation (gen_key, cert_req)
124 endef
125
126 TARGET_CFLAGS := $(filter-out -O%,$(TARGET_CFLAGS))
127
128 CMAKE_OPTIONS += \
129 -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
130 -DUSE_SHARED_MBEDTLS_LIBRARY:Bool=ON \
131 -DENABLE_TESTING:Bool=OFF \
132 -DENABLE_PROGRAMS:Bool=ON
133
134 define Build/Prepare
135 $(call Build/Prepare/Default)
136
137 $(if $(strip $(foreach opt,$(MBEDTLS_BUILD_OPTS),$($(opt)))),
138 $(foreach opt,$(MBEDTLS_BUILD_OPTS),
139 $(PKG_BUILD_DIR)/scripts/config.py \
140 -f $(PKG_BUILD_DIR)/include/mbedtls/config.h \
141 $(if $($(opt)),set,unset) $(patsubst CONFIG_%,%,$(opt))),)
142 endef
143
144 define Build/InstallDev
145 $(INSTALL_DIR) $(1)/usr/include
146 $(CP) \
147 $(PKG_INSTALL_DIR)/usr/include/mbedtls \
148 $(PKG_INSTALL_DIR)/usr/include/psa \
149 $(1)/usr/include/
150 $(INSTALL_DIR) $(1)/usr/lib
151 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* $(1)/usr/lib/
152 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.a $(1)/usr/lib/
153 endef
154
155 define Package/libmbedtls/install
156 $(INSTALL_DIR) $(1)/usr/lib
157 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so.* $(1)/usr/lib/
158 endef
159
160 define Package/mbedtls-util/install
161 $(INSTALL_DIR) $(1)/usr/bin
162 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gen_key $(1)/usr/bin/
163 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/cert_req $(1)/usr/bin/
164 endef
165
166 $(eval $(call BuildPackage,libmbedtls))
167 $(eval $(call BuildPackage,mbedtls-util))