xref: /OK3568_Linux_fs/buildroot/package/libopenssl/libopenssl.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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