2 # Copyright (C) 2006-2014 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
17 PKG_SOURCE
:=$(PKG_NAME
)-$(PKG_VERSION
).
tar.gz
18 PKG_SOURCE_URL
:=http
://www.openssl.org
/source
/ \
19 ftp
://ftp.funet.fi
/pub
/crypt
/mirrors
/ftp.openssl.org
/source \
20 ftp
://ftp.sunet.se
/pub
/security
/tools
/net
/openssl
/source
/
21 PKG_MD5SUM
:=f7175c9cd3c39bb1907ac8bba9df8ed3
23 PKG_LICENSE
:=SSLEAY OPENSSL
24 PKG_LICENSE_FILES
:=LICENSE
25 PKG_BUILD_DEPENDS
:=ocf-crypto-headers
26 PKG_CONFIG_DEPENDS
:=CONFIG_OPENSSL_ENGINE_CRYPTO CONFIG_OPENSSL_ENGINE_DIGEST \
27 CONFIG_OPENSSL_WITH_EC CONFIG_OPENSSL_WITH_EC2M
29 include $(INCLUDE_DIR
)/package.mk
30 include $(INCLUDE_DIR
)/host.mk
31 include $(INCLUDE_DIR
)/host-build.mk
33 define Package
/openssl
/Default
34 TITLE
:=Open source SSL toolkit
35 URL
:=http
://www.openssl.org
/
38 define Package
/libopenssl
/config
39 source
"$(SOURCE)/Config.in"
42 define Package
/openssl
/Default
/description
43 The OpenSSL Project is a collaborative effort to develop a robust
,
44 commercial-grade
, full-featured
, and Open Source toolkit implementing the Secure
45 Sockets Layer
(SSL v2
/v3
) and Transport Layer Security
(TLS v1
) protocols
as well
46 as a full-strength general purpose cryptography library.
49 define Package
/libopenssl
50 $(call Package
/openssl
/Default
)
56 ABI_VERSION
:=$(PKG_VERSION
)
60 define Package
/libopenssl
/description
61 $(call Package
/openssl
/Default
/description
)
62 This package contains the OpenSSL shared libraries
, needed by other programs.
65 define Package
/openssl-util
66 $(call Package
/openssl
/Default
)
73 define Package
/openssl-util
/conffiles
77 define Package
/openssl-util
/description
78 $(call Package
/openssl
/Default
/description
)
79 This package contains the OpenSSL command-line utility.
83 OPENSSL_NO_CIPHERS
:= no-idea no-md2 no-mdc2 no-rc5 no-sha0 no-smime \
84 no-aes192 no-camellia no-ans1 no-krb5
85 OPENSSL_OPTIONS
:= shared no-err no-hw zlib-dynamic no-sse2
87 ifdef CONFIG_OPENSSL_ENGINE_CRYPTO
88 OPENSSL_OPTIONS
+= -DHAVE_CRYPTODEV
89 ifdef CONFIG_OPENSSL_ENGINE_DIGEST
90 OPENSSL_OPTIONS
+= -DUSE_CRYPTODEV_DIGESTS
93 OPENSSL_OPTIONS
+= no-engines
96 ifndef CONFIG_OPENSSL_WITH_EC
97 OPENSSL_OPTIONS
+= no-ec
100 ifndef CONFIG_OPENSSL_WITH_EC2M
101 OPENSSL_OPTIONS
+= no-ec2m
104 ifeq ($(CONFIG_x86_64
),y
)
105 OPENSSL_TARGET
:=linux-x86_64
106 OPENSSL_MAKEFLAGS
+= LIBDIR
=lib
108 OPENSSL_OPTIONS
+=no-sse2
109 ifeq ($(CONFIG_mips
)$(CONFIG_mipsel
),y
)
110 OPENSSL_TARGET
:=linux-mips-openwrt
112 OPENSSL_TARGET
:=linux-generic-openwrt
113 OPENSSL_OPTIONS
+=no-perlasm
117 STAMP_CONFIGURED
:= $(STAMP_CONFIGURED
)_
$(subst $(space
),_
,$(OPENSSL_OPTIONS
))
119 define Build
/Configure
120 [ -f
$(STAMP_CONFIGURED
) ] ||
{ \
121 rm -f
$(PKG_BUILD_DIR
)/*.so.
* $(PKG_BUILD_DIR
)/*.a
; \
122 find
$(PKG_BUILD_DIR
) -name \
*.o | xargs
rm -f
; \
124 (cd
$(PKG_BUILD_DIR
); \
125 .
/Configure
$(OPENSSL_TARGET
) \
127 --openssldir
=/etc
/ssl \
129 $(TARGET_LDFLAGS
) -ldl \
130 -DOPENSSL_SMALL_FOOTPRINT \
131 $(OPENSSL_NO_CIPHERS
) \
134 # XXX: OpenSSL "make depend" will look for installed headers before its own,
135 # so remove installed stuff first
136 -$(SUBMAKE
) -j1 clean-staging
137 +$(MAKE
) $(PKG_JOBS
) -C
$(PKG_BUILD_DIR
) \
138 MAKEDEPPROG
="$(TARGET_CROSS)gcc" \
139 OPENWRT_OPTIMIZATION_FLAGS
="$(TARGET_CFLAGS)" \
140 $(OPENSSL_MAKEFLAGS
) \
144 TARGET_CFLAGS
+= $(FPIC
)
147 +$(MAKE
) $(PKG_JOBS
) -C
$(PKG_BUILD_DIR
) \
149 ASFLAGS
="$(TARGET_ASFLAGS) -c" \
150 AR
="$(TARGET_CROSS)ar r" \
151 RANLIB
="$(TARGET_CROSS)ranlib" \
152 OPENWRT_OPTIMIZATION_FLAGS
="$(TARGET_CFLAGS)" \
153 $(OPENSSL_MAKEFLAGS
) \
155 +$(MAKE
) $(PKG_JOBS
) -C
$(PKG_BUILD_DIR
) \
157 ASFLAGS
="$(TARGET_ASFLAGS) -c" \
158 AR
="$(TARGET_CROSS)ar r" \
159 RANLIB
="$(TARGET_CROSS)ranlib" \
160 OPENWRT_OPTIMIZATION_FLAGS
="$(TARGET_CFLAGS)" \
161 $(OPENSSL_MAKEFLAGS
) \
163 # Work around openssl build bug to link libssl.so with libcrypto.so.
164 -rm $(PKG_BUILD_DIR
)/libssl.so.
*.
*.
*
165 +$(MAKE
) $(PKG_JOBS
) -C
$(PKG_BUILD_DIR
) \
167 OPENWRT_OPTIMIZATION_FLAGS
="$(TARGET_CFLAGS)" \
168 $(OPENSSL_MAKEFLAGS
) \
170 $(MAKE
) -C
$(PKG_BUILD_DIR
) \
172 INSTALL_PREFIX
="$(PKG_INSTALL_DIR)" \
173 $(OPENSSL_MAKEFLAGS
) \
177 define Build
/InstallDev
178 $(INSTALL_DIR
) $(1)/usr
/include
179 $(CP
) $(PKG_INSTALL_DIR
)/usr
/include/openssl
$(1)/usr
/include/
180 $(INSTALL_DIR
) $(1)/usr
/lib
/
181 $(CP
) $(PKG_INSTALL_DIR
)/usr
/lib
/lib
{crypto
,ssl
}.
{a
,so
*} $(1)/usr
/lib
/
182 $(INSTALL_DIR
) $(1)/usr
/lib
/pkgconfig
183 $(CP
) $(PKG_INSTALL_DIR
)/usr
/lib
/pkgconfig
/{openssl
,libcrypto
,libssl
}.
pc $(1)/usr
/lib
/pkgconfig
/
184 [ -n
"$(TARGET_LDFLAGS)" ] && $(SED
) 's#$(TARGET_LDFLAGS)##g' $(1)/usr
/lib
/pkgconfig
/{openssl
,libcrypto
,libssl
}.
pc || true
187 define Package
/libopenssl
/install
188 $(INSTALL_DIR
) $(1)/usr
/lib
189 $(INSTALL_DATA
) $(PKG_INSTALL_DIR
)/usr
/lib
/libcrypto.so.
* $(1)/usr
/lib
/
190 $(INSTALL_DATA
) $(PKG_INSTALL_DIR
)/usr
/lib
/libssl.so.
* $(1)/usr
/lib
/
193 define Package
/openssl-util
/install
194 $(INSTALL_DIR
) $(1)/etc
/ssl
195 $(CP
) $(PKG_INSTALL_DIR
)/etc
/ssl
/openssl.cnf
$(1)/etc
/ssl
/
196 $(INSTALL_DIR
) $(1)/etc
/ssl
/certs
197 $(INSTALL_DIR
) $(1)/etc
/ssl
/private
198 chmod
0700 $(1)/etc
/ssl
/private
199 $(INSTALL_DIR
) $(1)/usr
/bin
200 $(INSTALL_BIN
) $(PKG_INSTALL_DIR
)/usr
/bin
/openssl
$(1)/usr
/bin
/
204 HOST_CPPFLAGS
+= $(HOST_FPIC
)
206 ifeq ($(HOST_ARCH
),x86_64
)
207 OPENSSL_HOST_TARGET
:=linux-x86_64
209 OPENSSL_HOST_TARGET
:=linux-generic32
212 define Host
/Configure
213 [ -f
$(HOST_STAMP_CONFIGURED
) ] ||
{ \
214 rm -f
$(HOST_BUILD_DIR
)/*.so.
* $(HOST_BUILD_DIR
)/*.a
; \
215 find
$(HOST_BUILD_DIR
) -name \
*.o | xargs
rm -f
; \
217 (cd
$(HOST_BUILD_DIR
); \
218 .
/Configure
"$(OPENSSL_HOST_TARGET)" \
220 --openssldir
=/etc
/ssl \
222 $(HOST_LDFLAGS
) -ldl \
223 $(OPENSSL_NO_CIPHERS
) \
224 shared zlib-dynamic \
226 # XXX: OpenSSL "make depend" will look for installed headers before its own,
227 # so remove installed stuff first
228 -$(SUBMAKE
) -j1 clean-staging
229 +$(MAKE
) $(PKG_JOBS
) -C
$(HOST_BUILD_DIR
) \
230 MAKEDEPPROG
="$(HOSTCC)" \
235 +$(MAKE
) $(PKG_JOBS
) -C
$(HOST_BUILD_DIR
) \
238 +$(MAKE
) $(PKG_JOBS
) -C
$(HOST_BUILD_DIR
) \
241 # Work around openssl build bug to link libssl.so with libcrypto.so.
242 -rm $(HOST_BUILD_DIR
)/libssl.so.
*.
*.
*
243 +$(MAKE
) $(PKG_JOBS
) -C
$(HOST_BUILD_DIR
) \
249 $(MAKE
) -C
$(HOST_BUILD_DIR
) \
251 INSTALL_PREFIX
="$(STAGING_DIR_HOST)" \
256 $(eval
$(call BuildPackage
,libopenssl
))
257 $(eval
$(call BuildPackage
,openssl-util
))
258 $(eval
$(call HostBuild
))