libopenssl.mk 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. ################################################################################
  2. #
  3. # libopenssl
  4. #
  5. ################################################################################
  6. LIBOPENSSL_VERSION = 3.2.3
  7. LIBOPENSSL_SITE = https://github.com/openssl/openssl/releases/download/openssl-$(LIBOPENSSL_VERSION)
  8. LIBOPENSSL_SOURCE = openssl-$(LIBOPENSSL_VERSION).tar.gz
  9. LIBOPENSSL_LICENSE = Apache-2.0
  10. LIBOPENSSL_LICENSE_FILES = LICENSE.txt
  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 -DHAVE_MADVISE=0
  27. endif
  28. ifeq ($(BR2_PACKAGE_CRYPTODEV_LINUX),y)
  29. LIBOPENSSL_DEPENDENCIES += cryptodev-linux
  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-docs \
  54. no-tests \
  55. no-fuzz-libfuzzer \
  56. no-fuzz-afl \
  57. shared \
  58. zlib-dynamic
  59. endef
  60. define LIBOPENSSL_CONFIGURE_CMDS
  61. cd $(@D); \
  62. $(TARGET_CONFIGURE_ARGS) \
  63. $(TARGET_CONFIGURE_OPTS) \
  64. CFLAGS="$(LIBOPENSSL_CFLAGS)" \
  65. ./Configure \
  66. $(LIBOPENSSL_TARGET_ARCH) \
  67. --prefix=/usr \
  68. --openssldir=/etc/ssl \
  69. $(if $(BR2_TOOLCHAIN_HAS_THREADS),threads,no-threads) \
  70. $(if $(BR2_STATIC_LIBS),no-shared,shared) \
  71. $(if $(BR2_PACKAGE_CRYPTODEV_LINUX),enable-devcryptoeng) \
  72. no-rc5 \
  73. enable-camellia \
  74. no-docs \
  75. no-tests \
  76. no-fuzz-libfuzzer \
  77. no-fuzz-afl \
  78. no-afalgeng \
  79. $(if $(BR2_PACKAGE_LIBOPENSSL_BIN),,no-apps) \
  80. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA),,no-chacha) \
  81. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2),,no-rc2) \
  82. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4),,no-rc4) \
  83. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2),,no-md2) \
  84. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4),,no-md4) \
  85. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2),,no-mdc2) \
  86. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2),,no-blake2) \
  87. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA),,no-idea) \
  88. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED),,no-seed) \
  89. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_DES),,no-des) \
  90. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160),,no-rmd160) \
  91. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL),,no-whirlpool) \
  92. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH),,no-bf) \
  93. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL),,no-ssl) \
  94. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3),,no-ssl3) \
  95. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL),,no-weak-ssl-ciphers) \
  96. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK),,no-psk) \
  97. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST),,no-cast) \
  98. $(if $(BR2_PACKAGE_LIBOPENSSL_UNSECURE),,no-unit-test no-crypto-mdebug no-autoerrinit) \
  99. $(if $(BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE),,no-dynamic-engine ) \
  100. $(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP),,no-comp) \
  101. $(if $(BR2_STATIC_LIBS),zlib,zlib-dynamic) \
  102. $(if $(BR2_STATIC_LIBS),no-dso)
  103. endef
  104. # libdl is not available in a static build, and this is not implied by no-dso
  105. ifeq ($(BR2_STATIC_LIBS),y)
  106. define LIBOPENSSL_FIXUP_STATIC_MAKEFILE
  107. $(SED) 's#-ldl##g' $(@D)/Makefile
  108. endef
  109. LIBOPENSSL_POST_CONFIGURE_HOOKS += LIBOPENSSL_FIXUP_STATIC_MAKEFILE
  110. endif
  111. define HOST_LIBOPENSSL_BUILD_CMDS
  112. $(HOST_MAKE_ENV) $(MAKE) -C $(@D)
  113. endef
  114. define LIBOPENSSL_BUILD_CMDS
  115. $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
  116. endef
  117. define LIBOPENSSL_INSTALL_STAGING_CMDS
  118. $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install
  119. endef
  120. define HOST_LIBOPENSSL_INSTALL_CMDS
  121. $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install
  122. endef
  123. define LIBOPENSSL_INSTALL_TARGET_CMDS
  124. $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
  125. $(RM) -rf $(TARGET_DIR)/usr/lib/ssl
  126. $(RM) -f $(TARGET_DIR)/usr/bin/c_rehash
  127. endef
  128. # libdl has no business in a static build
  129. ifeq ($(BR2_STATIC_LIBS),y)
  130. define LIBOPENSSL_FIXUP_STATIC_PKGCONFIG
  131. $(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/libcrypto.pc
  132. $(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/libssl.pc
  133. $(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/openssl.pc
  134. endef
  135. LIBOPENSSL_POST_INSTALL_STAGING_HOOKS += LIBOPENSSL_FIXUP_STATIC_PKGCONFIG
  136. endif
  137. ifeq ($(BR2_PACKAGE_PERL),)
  138. define LIBOPENSSL_REMOVE_PERL_SCRIPTS
  139. $(RM) -f $(TARGET_DIR)/etc/ssl/misc/{CA.pl,tsget}
  140. endef
  141. LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_PERL_SCRIPTS
  142. endif
  143. ifeq ($(BR2_PACKAGE_LIBOPENSSL_ENGINES),)
  144. define LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES
  145. $(RM) -rf $(TARGET_DIR)/usr/lib/engines-3
  146. endef
  147. LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES
  148. endif
  149. $(eval $(generic-package))
  150. $(eval $(host-generic-package))