Makefile 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  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. include $(TOPDIR)/rules.mk
  8. PKG_NAME:=openssl
  9. PKG_BASE:=1.1.1
  10. PKG_BUGFIX:=b
  11. PKG_VERSION:=$(PKG_BASE)$(PKG_BUGFIX)
  12. PKG_RELEASE:=1
  13. PKG_USE_MIPS16:=0
  14. ENGINES_DIR=engines-1.1
  15. PKG_BUILD_PARALLEL:=0
  16. PKG_BUILD_DEPENDS:=cryptodev-linux
  17. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
  18. PKG_SOURCE_URL:= \
  19. http://ftp.fi.muni.cz/pub/openssl/source/ \
  20. http://ftp.linux.hr/pub/openssl/source/ \
  21. ftp://ftp.pca.dfn.de/pub/tools/net/openssl/source/ \
  22. http://www.openssl.org/source/ \
  23. http://www.openssl.org/source/old/$(PKG_BASE)/
  24. PKG_HASH:=5c557b023230413dfb0756f3137a13e6d726838ccd1430888ad15bfb2b43ea4b
  25. PKG_LICENSE:=OpenSSL
  26. PKG_LICENSE_FILES:=LICENSE
  27. PKG_CPE_ID:=cpe:/a:openssl:openssl
  28. PKG_CONFIG_DEPENDS:= \
  29. CONFIG_OPENSSL_ENGINE \
  30. CONFIG_OPENSSL_ENGINE_CRYPTO \
  31. CONFIG_OPENSSL_NO_DEPRECATED \
  32. CONFIG_OPENSSL_OPTIMIZE_SPEED \
  33. CONFIG_OPENSSL_PREFER_CHACHA_OVER_GCM \
  34. CONFIG_OPENSSL_WITH_ARIA \
  35. CONFIG_OPENSSL_WITH_ASM \
  36. CONFIG_OPENSSL_WITH_ASYNC \
  37. CONFIG_OPENSSL_WITH_BLAKE2 \
  38. CONFIG_OPENSSL_WITH_CAMELLIA \
  39. CONFIG_OPENSSL_WITH_CHACHA_POLY1305 \
  40. CONFIG_OPENSSL_WITH_CMS \
  41. CONFIG_OPENSSL_WITH_COMPRESSION \
  42. CONFIG_OPENSSL_WITH_DTLS \
  43. CONFIG_OPENSSL_WITH_EC \
  44. CONFIG_OPENSSL_WITH_EC2M \
  45. CONFIG_OPENSSL_WITH_ERROR_MESSAGES \
  46. CONFIG_OPENSSL_WITH_GOST \
  47. CONFIG_OPENSSL_WITH_IDEA \
  48. CONFIG_OPENSSL_WITH_MDC2 \
  49. CONFIG_OPENSSL_WITH_NPN \
  50. CONFIG_OPENSSL_WITH_PSK \
  51. CONFIG_OPENSSL_WITH_RFC3779 \
  52. CONFIG_OPENSSL_WITH_SEED \
  53. CONFIG_OPENSSL_WITH_SM234 \
  54. CONFIG_OPENSSL_WITH_SRP \
  55. CONFIG_OPENSSL_WITH_SSE2 \
  56. CONFIG_OPENSSL_WITH_TLS13 \
  57. CONFIG_OPENSSL_WITH_WHIRLPOOL
  58. include $(INCLUDE_DIR)/package.mk
  59. ifneq ($(CONFIG_CCACHE),)
  60. HOSTCC=$(HOSTCC_NOCACHE)
  61. HOSTCXX=$(HOSTCXX_NOCACHE)
  62. endif
  63. define Package/openssl/Default
  64. TITLE:=Open source SSL toolkit
  65. URL:=http://www.openssl.org/
  66. SECTION:=libs
  67. CATEGORY:=Libraries
  68. endef
  69. define Package/libopenssl/config
  70. source "$(SOURCE)/Config.in"
  71. endef
  72. define Package/openssl/Default/description
  73. The OpenSSL Project is a collaborative effort to develop a robust,
  74. commercial-grade, full-featured, and Open Source toolkit implementing the
  75. Transport Layer Security (TLS) protocol as well as a full-strength
  76. general-purpose cryptography library.
  77. endef
  78. define Package/libopenssl
  79. $(call Package/openssl/Default)
  80. SUBMENU:=SSL
  81. DEPENDS:=+OPENSSL_WITH_COMPRESSION:zlib
  82. TITLE+= (libraries)
  83. ABI_VERSION:=1.1
  84. MENU:=1
  85. endef
  86. define Package/libopenssl/description
  87. $(call Package/openssl/Default/description)
  88. This package contains the OpenSSL shared libraries, needed by other programs.
  89. endef
  90. define Package/openssl-util
  91. $(call Package/openssl/Default)
  92. SECTION:=utils
  93. CATEGORY:=Utilities
  94. DEPENDS:=+libopenssl +libopenssl-conf
  95. TITLE+= (utility)
  96. endef
  97. define Package/openssl-util/description
  98. $(call Package/openssl/Default/description)
  99. This package contains the OpenSSL command-line utility.
  100. endef
  101. define Package/libopenssl-conf
  102. $(call Package/openssl/Default)
  103. SUBMENU:=SSL
  104. TITLE:=/etc/ssl/openssl.cnf config file
  105. DEPENDS:=libopenssl
  106. endef
  107. define Package/libopenssl-conf/conffiles
  108. /etc/ssl/openssl.cnf
  109. endef
  110. define Package/libopenssl-conf/description
  111. $(call Package/openssl/Default/description)
  112. This package installs the OpenSSL configuration file /etc/ssl/openssl.cnf.
  113. endef
  114. define Package/libopenssl-afalg
  115. $(call Package/openssl/Default)
  116. SUBMENU:=SSL
  117. TITLE:=AFALG hardware acceleration engine
  118. DEPENDS:=libopenssl @OPENSSL_ENGINE @KERNEL_AIO @!LINUX_3_18 +kmod-crypto-user \
  119. +libopenssl-conf
  120. endef
  121. define Package/libopenssl-afalg/description
  122. This package adds an engine that enables hardware acceleration
  123. through the AF_ALG kernel interface.
  124. To use it, you need to configure the engine in /etc/ssl/openssl.cnf
  125. See https://www.openssl.org/docs/man1.1.1/man5/config.html#Engine-Configuration-Module
  126. The engine_id is "afalg"
  127. endef
  128. define Package/libopenssl-padlock
  129. $(call Package/openssl/Default)
  130. SUBMENU:=SSL
  131. TITLE:=VIA Padlock hardware acceleration engine
  132. DEPENDS:=libopenssl @OPENSSL_ENGINE @TARGET_x86 +kmod-crypto-hw-padlock \
  133. +libopenssl-conf
  134. endef
  135. define Package/libopenssl-padlock/description
  136. This package adds an engine that enables VIA Padlock hardware acceleration.
  137. To use it, you need to configure it in /etc/ssl/openssl.cnf.
  138. See https://www.openssl.org/docs/man1.1.1/man5/config.html#Engine-Configuration-Module
  139. The engine_id is "padlock"
  140. endef
  141. OPENSSL_OPTIONS:= shared
  142. ifndef CONFIG_OPENSSL_WITH_BLAKE2
  143. OPENSSL_OPTIONS += no-blake2
  144. endif
  145. ifndef CONFIG_OPENSSL_WITH_CHACHA_POLY1305
  146. OPENSSL_OPTIONS += no-chacha no-poly1305
  147. else
  148. ifdef CONFIG_OPENSSL_PREFER_CHACHA_OVER_GCM
  149. OPENSSL_OPTIONS += -DOPENSSL_PREFER_CHACHA_OVER_GCM
  150. endif
  151. endif
  152. ifndef CONFIG_OPENSSL_WITH_ASYNC
  153. OPENSSL_OPTIONS += no-async
  154. endif
  155. ifndef CONFIG_OPENSSL_WITH_EC
  156. OPENSSL_OPTIONS += no-ec
  157. endif
  158. ifndef CONFIG_OPENSSL_WITH_EC2M
  159. OPENSSL_OPTIONS += no-ec2m
  160. endif
  161. ifndef CONFIG_OPENSSL_WITH_ERROR_MESSAGES
  162. OPENSSL_OPTIONS += no-err
  163. endif
  164. ifndef CONFIG_OPENSSL_WITH_TLS13
  165. OPENSSL_OPTIONS += no-tls1_3
  166. endif
  167. ifndef CONFIG_OPENSSL_WITH_ARIA
  168. OPENSSL_OPTIONS += no-aria
  169. endif
  170. ifndef CONFIG_OPENSSL_WITH_SM234
  171. OPENSSL_OPTIONS += no-sm2 no-sm3 no-sm4
  172. endif
  173. ifndef CONFIG_OPENSSL_WITH_CAMELLIA
  174. OPENSSL_OPTIONS += no-camellia
  175. endif
  176. ifndef CONFIG_OPENSSL_WITH_IDEA
  177. OPENSSL_OPTIONS += no-idea
  178. endif
  179. ifndef CONFIG_OPENSSL_WITH_SEED
  180. OPENSSL_OPTIONS += no-seed
  181. endif
  182. ifndef CONFIG_OPENSSL_WITH_MDC2
  183. OPENSSL_OPTIONS += no-mdc2
  184. endif
  185. ifndef CONFIG_OPENSSL_WITH_WHIRLPOOL
  186. OPENSSL_OPTIONS += no-whirlpool
  187. endif
  188. ifndef CONFIG_OPENSSL_WITH_CMS
  189. OPENSSL_OPTIONS += no-cms
  190. endif
  191. ifndef CONFIG_OPENSSL_WITH_RFC3779
  192. OPENSSL_OPTIONS += no-rfc3779
  193. endif
  194. ifdef CONFIG_OPENSSL_NO_DEPRECATED
  195. OPENSSL_OPTIONS += no-deprecated
  196. endif
  197. ifeq ($(CONFIG_OPENSSL_OPTIMIZE_SPEED),y)
  198. TARGET_CFLAGS := $(filter-out -O%,$(TARGET_CFLAGS)) -O3
  199. else
  200. OPENSSL_OPTIONS += -DOPENSSL_SMALL_FOOTPRINT
  201. endif
  202. ifdef CONFIG_OPENSSL_ENGINE
  203. ifdef CONFIG_OPENSSL_ENGINE_CRYPTO
  204. OPENSSL_OPTIONS += enable-devcryptoeng
  205. endif
  206. ifndef CONFIG_PACKAGE_libopenssl-afalg
  207. OPENSSL_OPTIONS += no-afalgeng
  208. endif
  209. ifndef CONFIG_PACKAGE_libopenssl-padlock
  210. OPENSSL_OPTIONS += no-hw-padlock
  211. endif
  212. else
  213. OPENSSL_OPTIONS += no-engine
  214. endif
  215. ifndef CONFIG_OPENSSL_WITH_GOST
  216. OPENSSL_OPTIONS += no-gost
  217. endif
  218. ifndef CONFIG_OPENSSL_WITH_DTLS
  219. OPENSSL_OPTIONS += no-dtls
  220. endif
  221. ifdef CONFIG_OPENSSL_WITH_COMPRESSION
  222. OPENSSL_OPTIONS += zlib-dynamic
  223. else
  224. OPENSSL_OPTIONS += no-comp
  225. endif
  226. ifndef CONFIG_OPENSSL_WITH_NPN
  227. OPENSSL_OPTIONS += no-nextprotoneg
  228. endif
  229. ifndef CONFIG_OPENSSL_WITH_PSK
  230. OPENSSL_OPTIONS += no-psk
  231. endif
  232. ifndef CONFIG_OPENSSL_WITH_SRP
  233. OPENSSL_OPTIONS += no-srp
  234. endif
  235. ifndef CONFIG_OPENSSL_WITH_ASM
  236. OPENSSL_OPTIONS += no-asm
  237. endif
  238. ifdef CONFIG_i386
  239. ifndef CONFIG_OPENSSL_WITH_SSE2
  240. OPENSSL_OPTIONS += no-sse2
  241. endif
  242. endif
  243. OPENSSL_TARGET:=linux-$(call qstrip,$(CONFIG_ARCH))-librecmc
  244. STAMP_CONFIGURED := $(STAMP_CONFIGURED)_$(shell echo $(OPENSSL_OPTIONS) | mkhash md5)
  245. define Build/Configure
  246. (cd $(PKG_BUILD_DIR); \
  247. ./Configure $(OPENSSL_TARGET) \
  248. --prefix=/usr \
  249. --libdir=lib \
  250. --openssldir=/etc/ssl \
  251. $(TARGET_CPPFLAGS) \
  252. $(TARGET_LDFLAGS) \
  253. $(OPENSSL_OPTIONS) && \
  254. { [ -f $(STAMP_CONFIGURED) ] || make clean; } \
  255. )
  256. endef
  257. TARGET_CFLAGS += $(FPIC) -ffunction-sections -fdata-sections
  258. TARGET_LDFLAGS += -Wl,--gc-sections
  259. define Build/Compile
  260. +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
  261. CROSS_COMPILE="$(TARGET_CROSS)" \
  262. CC="$(TARGET_CC)" \
  263. SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \
  264. LIBRECMC_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
  265. $(OPENSSL_MAKEFLAGS) \
  266. all
  267. $(MAKE) -C $(PKG_BUILD_DIR) \
  268. CROSS_COMPILE="$(TARGET_CROSS)" \
  269. CC="$(TARGET_CC)" \
  270. DESTDIR="$(PKG_INSTALL_DIR)" \
  271. $(OPENSSL_MAKEFLAGS) \
  272. install_sw install_ssldirs
  273. endef
  274. define Build/InstallDev
  275. $(INSTALL_DIR) $(1)/usr/include
  276. $(CP) $(PKG_INSTALL_DIR)/usr/include/openssl $(1)/usr/include/
  277. $(INSTALL_DIR) $(1)/usr/lib/
  278. $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{crypto,ssl}.{a,so*} $(1)/usr/lib/
  279. $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
  280. $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/{openssl,libcrypto,libssl}.pc $(1)/usr/lib/pkgconfig/
  281. [ -n "$(TARGET_LDFLAGS)" ] && $(SED) 's#$(TARGET_LDFLAGS)##g' $(1)/usr/lib/pkgconfig/{openssl,libcrypto,libssl}.pc || true
  282. endef
  283. define Package/libopenssl/install
  284. $(INSTALL_DIR) $(1)/etc/ssl/certs
  285. $(INSTALL_DIR) $(1)/etc/ssl/private
  286. chmod 0700 $(1)/etc/ssl/private
  287. $(INSTALL_DIR) $(1)/usr/lib
  288. $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libcrypto.so.* $(1)/usr/lib/
  289. $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libssl.so.* $(1)/usr/lib/
  290. $(if $(CONFIG_OPENSSL_ENGINE),$(INSTALL_DIR) $(1)/usr/lib/$(ENGINES_DIR))
  291. endef
  292. define Package/libopenssl-conf/install
  293. $(INSTALL_DIR) $(1)/etc/ssl
  294. $(CP) $(PKG_INSTALL_DIR)/etc/ssl/openssl.cnf $(1)/etc/ssl/
  295. endef
  296. define Package/openssl-util/install
  297. $(INSTALL_DIR) $(1)/usr/bin
  298. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/openssl $(1)/usr/bin/
  299. endef
  300. define Package/libopenssl-afalg/install
  301. $(INSTALL_DIR) $(1)/usr/lib/$(ENGINES_DIR)
  302. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/afalg.so $(1)/usr/lib/$(ENGINES_DIR)
  303. endef
  304. define Package/libopenssl-padlock/install
  305. $(INSTALL_DIR) $(1)/usr/lib/$(ENGINES_DIR)
  306. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/*padlock.so $(1)/usr/lib/$(ENGINES_DIR)
  307. endef
  308. $(eval $(call BuildPackage,libopenssl))
  309. $(eval $(call BuildPackage,libopenssl-conf))
  310. $(eval $(call BuildPackage,libopenssl-afalg))
  311. $(eval $(call BuildPackage,libopenssl-padlock))
  312. $(eval $(call BuildPackage,openssl-util))