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