1################################################################################ 2# 3# libopenssl 4# 5################################################################################ 6 7LIBOPENSSL_VERSION = 1.1.1l 8LIBOPENSSL_SITE = https://www.openssl.org/source 9LIBOPENSSL_SOURCE = openssl-$(LIBOPENSSL_VERSION).tar.gz 10LIBOPENSSL_LICENSE = OpenSSL or SSLeay 11LIBOPENSSL_LICENSE_FILES = LICENSE 12LIBOPENSSL_INSTALL_STAGING = YES 13LIBOPENSSL_DEPENDENCIES = zlib 14HOST_LIBOPENSSL_DEPENDENCIES = host-zlib 15LIBOPENSSL_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH)) 16LIBOPENSSL_CFLAGS = $(TARGET_CFLAGS) 17LIBOPENSSL_PROVIDES = openssl 18LIBOPENSSL_CPE_ID_VENDOR = $(LIBOPENSSL_PROVIDES) 19LIBOPENSSL_CPE_ID_PRODUCT = $(LIBOPENSSL_PROVIDES) 20 21ifeq ($(BR2_m68k_cf),y) 22# relocation truncated to fit: R_68K_GOT16O 23LIBOPENSSL_CFLAGS += -mxgot 24# resolves an assembler "out of range error" with blake2 and sha512 algorithms 25LIBOPENSSL_CFLAGS += -DOPENSSL_SMALL_FOOTPRINT 26endif 27 28ifeq ($(BR2_USE_MMU),) 29LIBOPENSSL_CFLAGS += -DHAVE_FORK=0 -DOPENSSL_NO_MADVISE 30endif 31 32ifeq ($(BR2_PACKAGE_HAS_CRYPTODEV),y) 33LIBOPENSSL_DEPENDENCIES += cryptodev 34endif 35 36# fixes the following build failures: 37# 38# - musl 39# ./libcrypto.so: undefined reference to `getcontext' 40# ./libcrypto.so: undefined reference to `setcontext' 41# ./libcrypto.so: undefined reference to `makecontext' 42# 43# - uclibc: 44# crypto/async/arch/../arch/async_posix.h:32:5: error: unknown type name 'ucontext_t' 45# 46 47ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) 48LIBOPENSSL_CFLAGS += -DOPENSSL_NO_ASYNC 49endif 50ifeq ($(BR2_TOOLCHAIN_HAS_UCONTEXT),) 51LIBOPENSSL_CFLAGS += -DOPENSSL_NO_ASYNC 52endif 53 54define HOST_LIBOPENSSL_CONFIGURE_CMDS 55 (cd $(@D); \ 56 $(HOST_CONFIGURE_OPTS) \ 57 ./config \ 58 --prefix=$(HOST_DIR) \ 59 --openssldir=$(HOST_DIR)/etc/ssl \ 60 no-tests \ 61 no-fuzz-libfuzzer \ 62 no-fuzz-afl \ 63 shared \ 64 zlib-dynamic \ 65 ) 66 $(SED) "s#-O[0-9sg]#$(HOST_CFLAGS)#" $(@D)/Makefile 67endef 68 69define LIBOPENSSL_CONFIGURE_CMDS 70 (cd $(@D); \ 71 $(TARGET_CONFIGURE_ARGS) \ 72 $(TARGET_CONFIGURE_OPTS) \ 73 ./Configure \ 74 $(LIBOPENSSL_TARGET_ARCH) \ 75 --prefix=/usr \ 76 --openssldir=/etc/ssl \ 77 $(if $(BR2_TOOLCHAIN_HAS_LIBATOMIC),-latomic) \ 78 $(if $(BR2_TOOLCHAIN_HAS_THREADS),threads,no-threads) \ 79 $(if $(BR2_STATIC_LIBS),no-shared,shared) \ 80 $(if $(BR2_PACKAGE_HAS_CRYPTODEV),enable-devcryptoeng) \ 81 no-rc5 \ 82 enable-camellia \ 83 enable-mdc2 \ 84 no-tests \ 85 no-fuzz-libfuzzer \ 86 no-fuzz-afl \ 87 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA),,no-chacha) \ 88 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5),,no-rc5) \ 89 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2),,no-rc2) \ 90 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4),,no-rc4) \ 91 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2),,no-md2) \ 92 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4),,no-md4) \ 93 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2),,no-mdc2) \ 94 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2),,no-blake2) \ 95 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA),,no-idea) \ 96 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED),,no-seed) \ 97 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_DES),,no-des) \ 98 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160),,no-rmd160) \ 99 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL),,no-whirlpool) \ 100 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH),,no-bf) \ 101 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL),,no-ssl) \ 102 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL2),,no-ssl2) \ 103 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3),,no-ssl3) \ 104 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL),,no-weak-ssl-ciphers) \ 105 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK),,no-psk) \ 106 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST),,no-cast) \ 107 $(if $(BR2_PACKAGE_LIBOPENSSL_UNSECURE),,no-unit-test no-crypto-mdebug-backtrace no-crypto-mdebug no-autoerrinit) \ 108 $(if $(BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE),,no-dynamic-engine ) \ 109 $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP),,no-comp) \ 110 $(if $(BR2_STATIC_LIBS),zlib,zlib-dynamic) \ 111 $(if $(BR2_STATIC_LIBS),no-dso) \ 112 ) 113 $(SED) "s#-march=[-a-z0-9] ##" -e "s#-mcpu=[-a-z0-9] ##g" $(@D)/Makefile 114 $(SED) "s#-O[0-9sg]#$(LIBOPENSSL_CFLAGS)#" $(@D)/Makefile 115 $(SED) "s# build_tests##" $(@D)/Makefile 116endef 117 118# libdl is not available in a static build, and this is not implied by no-dso 119ifeq ($(BR2_STATIC_LIBS),y) 120define LIBOPENSSL_FIXUP_STATIC_MAKEFILE 121 $(SED) 's#-ldl##g' $(@D)/Makefile 122endef 123LIBOPENSSL_POST_CONFIGURE_HOOKS += LIBOPENSSL_FIXUP_STATIC_MAKEFILE 124endif 125 126define HOST_LIBOPENSSL_BUILD_CMDS 127 $(HOST_MAKE_ENV) $(MAKE) -C $(@D) 128endef 129 130define LIBOPENSSL_BUILD_CMDS 131 $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) 132endef 133 134define LIBOPENSSL_INSTALL_STAGING_CMDS 135 $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install 136endef 137 138define HOST_LIBOPENSSL_INSTALL_CMDS 139 $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install 140endef 141 142define LIBOPENSSL_INSTALL_TARGET_CMDS 143 $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install 144 rm -rf $(TARGET_DIR)/usr/lib/ssl 145 rm -f $(TARGET_DIR)/usr/bin/c_rehash 146endef 147 148# libdl has no business in a static build 149ifeq ($(BR2_STATIC_LIBS),y) 150define LIBOPENSSL_FIXUP_STATIC_PKGCONFIG 151 $(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/libcrypto.pc 152 $(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/libssl.pc 153 $(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/openssl.pc 154endef 155LIBOPENSSL_POST_INSTALL_STAGING_HOOKS += LIBOPENSSL_FIXUP_STATIC_PKGCONFIG 156endif 157 158ifeq ($(BR2_PACKAGE_PERL),) 159define LIBOPENSSL_REMOVE_PERL_SCRIPTS 160 $(RM) -f $(TARGET_DIR)/etc/ssl/misc/{CA.pl,tsget} 161endef 162LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_PERL_SCRIPTS 163endif 164 165ifeq ($(BR2_PACKAGE_LIBOPENSSL_BIN),) 166define LIBOPENSSL_REMOVE_BIN 167 $(RM) -f $(TARGET_DIR)/usr/bin/openssl 168 $(RM) -f $(TARGET_DIR)/etc/ssl/misc/{CA.*,c_*} 169endef 170LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_BIN 171endif 172 173ifneq ($(BR2_PACKAGE_LIBOPENSSL_ENGINES),y) 174define LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES 175 rm -rf $(TARGET_DIR)/usr/lib/engines-1.1 176endef 177LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES 178endif 179 180$(eval $(generic-package)) 181$(eval $(host-generic-package)) 182