libopenssl.mk 5.6 KB

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