libopenssl.mk 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. ################################################################################
  2. #
  3. # libopenssl
  4. #
  5. ################################################################################
  6. LIBOPENSSL_VERSION = 1.1.1i
  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. ifeq ($(BR2_m68k_cf),y)
  18. # relocation truncated to fit: R_68K_GOT16O
  19. LIBOPENSSL_CFLAGS += -mxgot
  20. # resolves an assembler "out of range error" with blake2 and sha512 algorithms
  21. LIBOPENSSL_CFLAGS += -DOPENSSL_SMALL_FOOTPRINT
  22. endif
  23. ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
  24. LIBOPENSSL_CFLAGS += -DOPENSSL_THREADS
  25. endif
  26. ifeq ($(BR2_USE_MMU),)
  27. LIBOPENSSL_CFLAGS += -DHAVE_FORK=0 -DOPENSSL_NO_MADVISE
  28. endif
  29. ifeq ($(BR2_PACKAGE_HAS_CRYPTODEV),y)
  30. LIBOPENSSL_DEPENDENCIES += cryptodev
  31. endif
  32. # fixes the following build failures:
  33. #
  34. # - musl
  35. # ./libcrypto.so: undefined reference to `getcontext'
  36. # ./libcrypto.so: undefined reference to `setcontext'
  37. # ./libcrypto.so: undefined reference to `makecontext'
  38. #
  39. # - uclibc:
  40. # crypto/async/arch/../arch/async_posix.h:32:5: error: unknown type name 'ucontext_t'
  41. #
  42. ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
  43. LIBOPENSSL_CFLAGS += -DOPENSSL_NO_ASYNC
  44. endif
  45. ifeq ($(BR2_TOOLCHAIN_HAS_UCONTEXT),)
  46. LIBOPENSSL_CFLAGS += -DOPENSSL_NO_ASYNC
  47. endif
  48. define HOST_LIBOPENSSL_CONFIGURE_CMDS
  49. (cd $(@D); \
  50. $(HOST_CONFIGURE_OPTS) \
  51. ./config \
  52. --prefix=$(HOST_DIR) \
  53. --openssldir=$(HOST_DIR)/etc/ssl \
  54. no-tests \
  55. no-fuzz-libfuzzer \
  56. no-fuzz-afl \
  57. shared \
  58. zlib-dynamic \
  59. )
  60. $(SED) "s#-O[0-9s]#$(HOST_CFLAGS)#" $(@D)/Makefile
  61. endef
  62. define LIBOPENSSL_CONFIGURE_CMDS
  63. (cd $(@D); \
  64. $(TARGET_CONFIGURE_ARGS) \
  65. $(TARGET_CONFIGURE_OPTS) \
  66. ./Configure \
  67. $(LIBOPENSSL_TARGET_ARCH) \
  68. --prefix=/usr \
  69. --openssldir=/etc/ssl \
  70. $(if $(BR2_TOOLCHAIN_HAS_LIBATOMIC),-latomic) \
  71. $(if $(BR2_TOOLCHAIN_HAS_THREADS),-lpthread threads, no-threads) \
  72. $(if $(BR2_STATIC_LIBS),no-shared,shared) \
  73. $(if $(BR2_PACKAGE_HAS_CRYPTODEV),enable-devcryptoeng) \
  74. no-rc5 \
  75. enable-camellia \
  76. enable-mdc2 \
  77. no-tests \
  78. no-fuzz-libfuzzer \
  79. no-fuzz-afl \
  80. $(if $(BR2_STATIC_LIBS),zlib,zlib-dynamic) \
  81. )
  82. $(SED) "s#-march=[-a-z0-9] ##" -e "s#-mcpu=[-a-z0-9] ##g" $(@D)/Makefile
  83. $(SED) "s#-O[0-9s]#$(LIBOPENSSL_CFLAGS)#" $(@D)/Makefile
  84. $(SED) "s# build_tests##" $(@D)/Makefile
  85. endef
  86. define HOST_LIBOPENSSL_BUILD_CMDS
  87. $(HOST_MAKE_ENV) $(MAKE) -C $(@D)
  88. endef
  89. define LIBOPENSSL_BUILD_CMDS
  90. $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
  91. endef
  92. define LIBOPENSSL_INSTALL_STAGING_CMDS
  93. $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install
  94. endef
  95. define HOST_LIBOPENSSL_INSTALL_CMDS
  96. $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install
  97. endef
  98. define LIBOPENSSL_INSTALL_TARGET_CMDS
  99. $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
  100. rm -rf $(TARGET_DIR)/usr/lib/ssl
  101. rm -f $(TARGET_DIR)/usr/bin/c_rehash
  102. endef
  103. ifeq ($(BR2_PACKAGE_PERL),)
  104. define LIBOPENSSL_REMOVE_PERL_SCRIPTS
  105. $(RM) -f $(TARGET_DIR)/etc/ssl/misc/{CA.pl,tsget}
  106. endef
  107. LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_PERL_SCRIPTS
  108. endif
  109. ifeq ($(BR2_PACKAGE_LIBOPENSSL_BIN),)
  110. define LIBOPENSSL_REMOVE_BIN
  111. $(RM) -f $(TARGET_DIR)/usr/bin/openssl
  112. $(RM) -f $(TARGET_DIR)/etc/ssl/misc/{CA.*,c_*}
  113. endef
  114. LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_BIN
  115. endif
  116. ifneq ($(BR2_PACKAGE_LIBOPENSSL_ENGINES),y)
  117. define LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES
  118. rm -rf $(TARGET_DIR)/usr/lib/engines-1.1
  119. endef
  120. LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES
  121. endif
  122. $(eval $(generic-package))
  123. $(eval $(host-generic-package))