2 # Copyright (C) 2006-2017 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
8 include $(TOPDIR
)/rules.mk
11 PKG_VERSION
:=5.5.4-stable
14 PKG_SOURCE
:=$(PKG_NAME
)-$(PKG_VERSION
).
tar.gz
15 PKG_SOURCE_URL
:=https
://github.com
/wolfSSL
/wolfssl
/archive
/v
$(PKG_VERSION
)
16 PKG_HASH
:=b7ee150e49def77c765bc02aac92ddeb0bebefd4cb12aa263d8f95e405221fb8
18 PKG_FIXUP
:=libtool libtool-abiver
20 PKG_BUILD_FLAGS
:=no-mips16 lto
22 PKG_LICENSE
:=GPL-2.0
-or-later
23 PKG_LICENSE_FILES
:=LICENSING COPYING
24 PKG_MAINTAINER
:=Eneas U de Queiroz
<cotequeiroz@gmail.com
>
25 PKG_CPE_ID
:=cpe
:/a
:wolfssl
:wolfssl
28 CONFIG_WOLFSSL_HAS_AES_CCM \
29 CONFIG_WOLFSSL_HAS_ARC4 \
30 CONFIG_WOLFSSL_HAS_CERTGEN \
31 CONFIG_WOLFSSL_HAS_CHACHA_POLY \
32 CONFIG_WOLFSSL_HAS_DH \
33 CONFIG_WOLFSSL_HAS_DTLS \
34 CONFIG_WOLFSSL_HAS_ECC25519 \
35 CONFIG_WOLFSSL_HAS_ECC448 \
36 CONFIG_WOLFSSL_HAS_OCSP \
37 CONFIG_WOLFSSL_HAS_OPENVPN CONFIG_WOLFSSL_ALT_NAMES \
38 CONFIG_WOLFSSL_HAS_SESSION_TICKET \
39 CONFIG_WOLFSSL_HAS_TLSV10 \
40 CONFIG_WOLFSSL_HAS_TLSV13 \
41 CONFIG_WOLFSSL_HAS_WPAS
43 PKG_ABI_VERSION
:=$(patsubst %-stable
,%,$(PKG_VERSION
)).
$(call version_abbrev
,$(call confvar
,$(PKG_CONFIG_DEPENDS
)))
46 CONFIG_PACKAGE_libwolfssl-benchmark \
47 CONFIG_WOLFSSL_HAS_AFALG \
48 CONFIG_WOLFSSL_HAS_DEVCRYPTO_AES \
49 CONFIG_WOLFSSL_HAS_DEVCRYPTO_CBC \
50 CONFIG_WOLFSSL_HAS_DEVCRYPTO_FULL
52 include $(INCLUDE_DIR
)/package.mk
54 define Package
/libwolfssl
/Default
58 URL
:=http
://www.wolfssl.com
/
61 define Package
/libwolfssl
62 $(call Package
/libwolfssl
/Default
)
63 TITLE
:=wolfSSL library
66 DEPENDS
:=+WOLFSSL_HAS_DEVCRYPTO
:kmod-cryptodev
+WOLFSSL_HAS_AFALG
:kmod-crypto-user
67 ABI_VERSION
:=$(PKG_ABI_VERSION
)
70 CONFLICTS
:=libwolfsslcpu-crypto
73 define Package
/libwolfssl
/description
74 wolfSSL
(formerly CyaSSL
) is an SSL library optimized for small
75 footprint
, both on disk and for memory use.
78 define Package
/libwolfssl
/config
79 source
"$(SOURCE)/Config.in"
82 define Package
/libwolfsslcpu-crypto
83 $(call Package
/libwolfssl
/Default
)
84 TITLE
:=wolfSSL library with AES CPU instructions
85 PROVIDES
:=libwolfssl libcyassl
86 DEPENDS
:=@
((aarch64||x86_64
)&&(m||
!TARGET_bcm27xx
))
87 ABI_VERSION
:=$(PKG_ABI_VERSION
)
91 define Package
/libwolfssl-benchmark
92 $(call Package
/libwolfssl
/Default
)
93 TITLE
:=wolfSSL Benchmark Utility
97 define Package
/libwolfsslcpu-crypto
/description
98 $(call Package
/libwolfssl
/description
)
99 This variant uses AES CPU instructions
(Intel AESNI or ARMv8 Crypto Extension
)
102 define Package
/libwolfsslcpu-crypto
/config
103 if TARGET_armvirt
&& PACKAGE_libwolfsslcpu-crypto
= y
104 comment
"You are about to build libwolfsslcpu-crypto into an armvirt_64 image."
105 comment
"Ensure all of your installation targets support the Crypto Extension. "
106 comment
"Look for the 'aes' feature in /proc/cpuinfo. This library does not do "
107 comment
"run-time detection and will crash if the CPU does not support it. "
109 if TARGET_bcm27xx
&& PACKAGE_libwolfsslcpu-crypto
110 comment
"Beware that libwolfsslcpu-crypto will not run in a bcm27xx target. "
114 define Package
/libwolfssl-benchmark
/description
115 This is the wolfssl benchmark utility.
120 -fomit-frame-pointer \
122 $(if
$(CONFIG_WOLFSSL_ALT_NAMES
),-DWOLFSSL_ALT_NAMES
)
124 # --enable-stunnel needed for OpenSSL API compatibility bits
126 --enable-reproducible-build \
128 --enable-opensslall \
129 --enable-opensslextra \
132 --enable-altcertchains \
133 --$(if
$(CONFIG_PACKAGE_libwolfssl-benchmark
),enable
,disable
)-crypttests \
135 --disable-jobserver \
136 --$(if
$(CONFIG_IPV6
),enable
,disable
)-ipv6 \
137 --$(if
$(CONFIG_WOLFSSL_HAS_AES_CCM
),enable
,disable
)-aesccm \
138 --$(if
$(CONFIG_WOLFSSL_HAS_CERTGEN
),enable
,disable
)-certgen \
139 --$(if
$(CONFIG_WOLFSSL_HAS_CHACHA_POLY
),enable
,disable
)-chacha \
140 --$(if
$(CONFIG_WOLFSSL_HAS_CHACHA_POLY
),enable
,disable
)-poly1305 \
141 --$(if
$(CONFIG_WOLFSSL_HAS_DH
),enable
,disable
)-dh \
142 --$(if
$(CONFIG_WOLFSSL_HAS_ARC4
),enable
,disable
)-arc4 \
143 --$(if
$(CONFIG_WOLFSSL_HAS_TLSV10
),enable
,disable
)-tlsv10 \
144 --$(if
$(CONFIG_WOLFSSL_HAS_TLSV13
),enable
,disable
)-tls13 \
145 --$(if
$(CONFIG_WOLFSSL_HAS_SESSION_TICKET
),enable
,disable
)-session-ticket \
146 --$(if
$(CONFIG_WOLFSSL_HAS_DTLS
),enable
,disable
)-dtls \
147 --$(if
$(CONFIG_WOLFSSL_HAS_ECC25519
),enable
,disable
)-curve25519 \
148 --$(if
$(CONFIG_WOLFSSL_HAS_ECC448
),enable
,disable
)-curve448 \
149 --$(if
$(CONFIG_WOLFSSL_HAS_OPENVPN
),enable
,disable
)-openvpn
151 define Package
/libwolfsslcpu-crypto
/preinst-aarch64
154 printf
"[libwolfsslcpu-crypto] Checking for Arm v8-A Cryptographic Extension support: "
155 if
[ -n
"$${IPKG_INSTROOT}" ]; then
156 printf
"...[offline]... "
157 eval
"$$(grep '^DISTRIB_TARGET=' "$${IPKG_INSTROOT}/etc
/openwrt_release
")"
158 echo
"$${DISTRIB_TARGET}" | grep
'^bcm27xx/.*' > /dev
/null
&& {
160 echo
"Error: Target $${DISTRIB_TARGET} does not support Arm Cryptographic Extension."
161 echo
"Install the regular libwolfssl package instead of libwolfsslcpu-crypto."
165 grep
-q
'^Features.*\baes\b' /proc
/cpuinfo ||
{
167 echo
"Error: Arm v8-A Cryptographic Extension not supported."
168 echo
"Install the regular libwolfssl package instead of libwolfsslcpu-crypto."
169 echo
"Contents of /proc/cpuinfo:"
178 ifeq ($(BUILD_VARIANT
),regular
)
180 --$(if
$(CONFIG_WOLFSSL_HAS_AFALG
),enable
,disable
)-afalg \
181 --enable-devcrypto
=$(if
$(CONFIG_WOLFSSL_HAS_DEVCRYPTO_CBC
),cbc\
182 ,$(if
$(CONFIG_WOLFSSL_HAS_DEVCRYPTO_AES
),aes\
183 ,$(if
$(CONFIG_WOLFSSL_HAS_DEVCRYPTO_FULL
),yes
,no
)))
184 else ifdef CONFIG_aarch64
185 CONFIGURE_ARGS
+= --enable-armasm
186 TARGET_CFLAGS
:=$(TARGET_CFLAGS
:-mcpu
%=-mcpu
%+crypto
)
187 Package
/libwolfsslcpu-crypto
/preinst
=$(Package
/libwolfsslcpu-crypto
/preinst-aarch64
)
188 else ifdef CONFIG_TARGET_x86_64
189 CONFIGURE_ARGS
+= --enable-intelasm
192 ifeq ($(CONFIG_WOLFSSL_HAS_OCSP
),y
)
194 --enable-ocsp
--enable-ocspstapling
--enable-ocspstapling2
197 ifeq ($(CONFIG_WOLFSSL_HAS_WPAS
),y
)
199 --enable-wpas
--enable-fortress
--enable-fastmath
202 define Build
/InstallDev
203 $(INSTALL_DIR
) $(1)/usr
/include $(1)/usr
/lib
/pkgconfig
204 $(CP
) $(PKG_INSTALL_DIR
)/usr
/include/* $(1)/usr
/include/
206 $(INSTALL_DIR
) $(1)/usr
/lib
207 $(CP
) $(PKG_INSTALL_DIR
)/usr
/lib
/libwolfssl.
{so
*,la
} $(1)/usr
/lib
/
208 ln
-s libwolfssl.so
$(1)/usr
/lib
/libcyassl.so
209 ln
-s libwolfssl.la
$(1)/usr
/lib
/libcyassl.la
211 $(CP
) $(PKG_INSTALL_DIR
)/usr
/lib
/pkgconfig
/*.
pc $(1)/usr
/lib
/pkgconfig
214 define Package
/libwolfssl
/install
215 $(INSTALL_DIR
) $(1)/usr
/lib
216 $(CP
) $(PKG_INSTALL_DIR
)/usr
/lib
/libwolfssl.so.
* $(1)/usr
/lib
/
219 Package
/libwolfsslcpu-crypto
/install=$(Package
/libwolfssl
/install)
221 define Package
/libwolfssl-benchmark
/install
222 $(INSTALL_DIR
) $(1)/usr
/bin
223 $(CP
) $(PKG_BUILD_DIR
)/wolfcrypt
/benchmark
/.libs
/benchmark
$(1)/usr
/bin
/wolfssl-benchmark
226 $(eval
$(call BuildPackage
,libwolfssl
))
227 $(eval
$(call BuildPackage
,libwolfsslcpu-crypto
))
228 $(eval
$(call BuildPackage
,libwolfssl-benchmark
))