1# 2# Copyright (C) 2006-2016 OpenWrt.org 3# 4# This is free software, licensed under the GNU General Public License v2. 5# See /LICENSE for more information. 6# 7 8include $(TOPDIR)/rules.mk 9 10PKG_NAME:=openssl 11PKG_BASE:=1.0.2 12PKG_BUGFIX:=m 13PKG_VERSION:=$(PKG_BASE)$(PKG_BUGFIX) 14PKG_RELEASE:=1 15PKG_USE_MIPS16:=0 16 17PKG_BUILD_PARALLEL:=0 18 19PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz 20PKG_SOURCE_URL:=http://www.openssl.org/source/ \ 21 ftp://ftp.openssl.org/source/ \ 22 http://www.openssl.org/source/old/$(PKG_BASE)/ \ 23 ftp://ftp.funet.fi/pub/crypt/mirrors/ftp.openssl.org/source \ 24 ftp://ftp.sunet.se/pub/security/tools/net/openssl/source/ 25PKG_MD5SUM:=10e9e37f492094b9ef296f68f24a7666 26 27PKG_LICENSE:=OpenSSL 28PKG_LICENSE_FILES:=LICENSE 29PKG_CONFIG_DEPENDS:= \ 30 CONFIG_OPENSSL_ENGINE_CRYPTO \ 31 CONFIG_OPENSSL_ENGINE_DIGEST \ 32 CONFIG_OPENSSL_WITH_EC \ 33 CONFIG_OPENSSL_WITH_EC2M \ 34 CONFIG_OPENSSL_WITH_SSL3 \ 35 CONFIG_OPENSSL_HARDWARE_SUPPORT 36 37include $(INCLUDE_DIR)/package.mk 38 39ifneq ($(CONFIG_CCACHE),) 40HOSTCC=$(HOSTCC_NOCACHE) 41HOSTCXX=$(HOSTCXX_NOCACHE) 42endif 43 44define Package/openssl/Default 45 TITLE:=Open source SSL toolkit 46 URL:=http://www.openssl.org/ 47endef 48 49define Package/libopenssl/config 50source "$(SOURCE)/Config.in" 51endef 52 53define Package/openssl/Default/description 54The OpenSSL Project is a collaborative effort to develop a robust, 55commercial-grade, full-featured, and Open Source toolkit implementing the Secure 56Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well 57as a full-strength general purpose cryptography library. 58endef 59 60define Package/libopenssl 61$(call Package/openssl/Default) 62 SECTION:=libs 63 SUBMENU:=SSL 64 CATEGORY:=Libraries 65 DEPENDS:=+zlib 66 TITLE+= (libraries) 67 ABI_VERSION:=$(PKG_VERSION) 68 MENU:=1 69endef 70 71define Package/libopenssl/description 72$(call Package/openssl/Default/description) 73This package contains the OpenSSL shared libraries, needed by other programs. 74endef 75 76define Package/openssl-util 77 $(call Package/openssl/Default) 78 SECTION:=utils 79 CATEGORY:=Utilities 80 DEPENDS:=+libopenssl 81 TITLE+= (utility) 82endef 83 84define Package/openssl-util/conffiles 85/etc/ssl/openssl.cnf 86endef 87 88define Package/openssl-util/description 89$(call Package/openssl/Default/description) 90This package contains the OpenSSL command-line utility. 91endef 92 93 94OPENSSL_NO_CIPHERS:= no-idea no-md2 no-mdc2 no-rc5 no-sha0 no-camellia no-krb5 95OPENSSL_OPTIONS:= shared no-err zlib-dynamic no-sse2 no-ssl2 96 97ifdef CONFIG_OPENSSL_ENGINE_CRYPTO 98 OPENSSL_OPTIONS += -DHAVE_CRYPTODEV 99 ifdef CONFIG_OPENSSL_ENGINE_DIGEST 100 OPENSSL_OPTIONS += -DUSE_CRYPTODEV_DIGESTS 101 endif 102else 103 OPENSSL_OPTIONS += no-engines 104endif 105 106ifndef CONFIG_OPENSSL_WITH_EC 107 OPENSSL_OPTIONS += no-ec 108endif 109 110ifndef CONFIG_OPENSSL_WITH_EC2M 111 OPENSSL_OPTIONS += no-ec2m 112endif 113 114ifndef CONFIG_OPENSSL_WITH_SSL3 115 OPENSSL_OPTIONS += no-ssl3 116endif 117 118ifndef CONFIG_OPENSSL_HARDWARE_SUPPORT 119 OPENSSL_OPTIONS += no-hw 120endif 121 122ifeq ($(CONFIG_x86_64),y) 123 OPENSSL_TARGET:=linux-x86_64-openwrt 124 OPENSSL_MAKEFLAGS += LIBDIR=lib 125else 126 OPENSSL_OPTIONS+=no-sse2 127 ifeq ($(CONFIG_mips)$(CONFIG_mipsel),y) 128 OPENSSL_TARGET:=linux-mips-openwrt 129# else ifeq ($(CONFIG_arm)$(CONFIG_armeb),y) 130# OPENSSL_TARGET:=linux-armv4-openwrt 131 else 132 OPENSSL_TARGET:=linux-generic-openwrt 133 OPENSSL_OPTIONS+=no-perlasm 134 endif 135endif 136 137STAMP_CONFIGURED := $(STAMP_CONFIGURED)_$(subst $(space),_,$(OPENSSL_OPTIONS)) 138 139define Build/Configure 140 [ -f $(STAMP_CONFIGURED) ] || { \ 141 rm -f $(PKG_BUILD_DIR)/*.so.* $(PKG_BUILD_DIR)/*.a; \ 142 find $(PKG_BUILD_DIR) -name \*.o | xargs rm -f; \ 143 } 144 (cd $(PKG_BUILD_DIR); \ 145 ./Configure $(OPENSSL_TARGET) \ 146 --prefix=/usr \ 147 --openssldir=/etc/ssl \ 148 $(TARGET_CPPFLAGS) \ 149 $(TARGET_LDFLAGS) -ldl \ 150 -DOPENSSL_SMALL_FOOTPRINT \ 151 $(OPENSSL_NO_CIPHERS) \ 152 $(OPENSSL_OPTIONS) \ 153 ) 154 # XXX: OpenSSL "make depend" will look for installed headers before its own, 155 # so remove installed stuff first 156 -$(SUBMAKE) -j1 clean-staging 157 +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ 158 MAKEDEPPROG="$(TARGET_CROSS)gcc" \ 159 OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \ 160 $(OPENSSL_MAKEFLAGS) \ 161 depend 162endef 163 164TARGET_CFLAGS += $(FPIC) -I$(CURDIR)/include 165 166define Build/Compile 167 +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ 168 CC="$(TARGET_CC)" \ 169 ASFLAGS="$(TARGET_ASFLAGS) -I$(PKG_BUILD_DIR)/crypto -c" \ 170 AR="$(TARGET_CROSS)ar r" \ 171 RANLIB="$(TARGET_CROSS)ranlib" \ 172 OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \ 173 $(OPENSSL_MAKEFLAGS) \ 174 all 175 +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ 176 CC="$(TARGET_CC)" \ 177 ASFLAGS="$(TARGET_ASFLAGS) -I$(PKG_BUILD_DIR)/crypto -c" \ 178 AR="$(TARGET_CROSS)ar r" \ 179 RANLIB="$(TARGET_CROSS)ranlib" \ 180 OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \ 181 $(OPENSSL_MAKEFLAGS) \ 182 build-shared 183 # Work around openssl build bug to link libssl.so with libcrypto.so. 184 -rm $(PKG_BUILD_DIR)/libssl.so.*.*.* 185 +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ 186 CC="$(TARGET_CC)" \ 187 OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \ 188 $(OPENSSL_MAKEFLAGS) \ 189 do_linux-shared 190 $(MAKE) -C $(PKG_BUILD_DIR) \ 191 CC="$(TARGET_CC)" \ 192 INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \ 193 $(OPENSSL_MAKEFLAGS) \ 194 install 195endef 196 197define Build/InstallDev 198 $(INSTALL_DIR) $(1)/usr/include 199 $(CP) $(PKG_INSTALL_DIR)/usr/include/openssl $(1)/usr/include/ 200 $(INSTALL_DIR) $(1)/usr/lib/ 201 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{crypto,ssl}.{a,so*} $(1)/usr/lib/ 202 $(INSTALL_DIR) $(1)/usr/lib/pkgconfig 203 $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/{openssl,libcrypto,libssl}.pc $(1)/usr/lib/pkgconfig/ 204 [ -n "$(TARGET_LDFLAGS)" ] && $(SED) 's#$(TARGET_LDFLAGS)##g' $(1)/usr/lib/pkgconfig/{openssl,libcrypto,libssl}.pc || true 205endef 206 207define Package/libopenssl/install 208 $(INSTALL_DIR) $(1)/usr/lib 209 $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libcrypto.so.* $(1)/usr/lib/ 210 $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libssl.so.* $(1)/usr/lib/ 211endef 212 213define Package/openssl-util/install 214 $(INSTALL_DIR) $(1)/etc/ssl 215 $(CP) $(PKG_INSTALL_DIR)/etc/ssl/openssl.cnf $(1)/etc/ssl/ 216 $(INSTALL_DIR) $(1)/etc/ssl/certs 217 $(INSTALL_DIR) $(1)/etc/ssl/private 218 chmod 0700 $(1)/etc/ssl/private 219 $(INSTALL_DIR) $(1)/usr/bin 220 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/openssl $(1)/usr/bin/ 221endef 222 223$(eval $(call BuildPackage,libopenssl)) 224$(eval $(call BuildPackage,openssl-util)) 225