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