xref: /OK3568_Linux_fs/buildroot/package/erlang/erlang.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun################################################################################
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# erlang
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun################################################################################
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun# See note below when updating Erlang
8*4882a593SmuzhiyunERLANG_VERSION = 22.2
9*4882a593SmuzhiyunERLANG_SITE = http://www.erlang.org/download
10*4882a593SmuzhiyunERLANG_SOURCE = otp_src_$(ERLANG_VERSION).tar.gz
11*4882a593SmuzhiyunERLANG_DEPENDENCIES = host-erlang
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunERLANG_LICENSE = Apache-2.0
14*4882a593SmuzhiyunERLANG_LICENSE_FILES = LICENSE.txt
15*4882a593SmuzhiyunERLANG_CPE_ID_VENDOR = erlang
16*4882a593SmuzhiyunERLANG_CPE_ID_PRODUCT = erlang\/otp
17*4882a593SmuzhiyunERLANG_INSTALL_STAGING = YES
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun# windows specific issue: https://nvd.nist.gov/vuln/detail/CVE-2021-29221
20*4882a593SmuzhiyunERLANG_IGNORE_CVES += CVE-2021-29221
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun# Remove the leftover deps directory from the ssl app
23*4882a593Smuzhiyun# See https://bugs.erlang.org/browse/ERL-1168
24*4882a593Smuzhiyundefine ERLANG_REMOVE_SSL_DEPS
25*4882a593Smuzhiyun	rm -rf $(@D)/lib/ssl/src/deps
26*4882a593Smuzhiyunendef
27*4882a593SmuzhiyunERLANG_POST_PATCH_HOOKS += ERLANG_REMOVE_SSL_DEPS
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun# Patched erts/aclocal.m4
30*4882a593Smuzhiyundefine ERLANG_RUN_AUTOCONF
31*4882a593Smuzhiyun	cd $(@D) && PATH=$(BR_PATH) ./otp_build autoconf
32*4882a593Smuzhiyunendef
33*4882a593SmuzhiyunERLANG_DEPENDENCIES += host-autoconf
34*4882a593SmuzhiyunERLANG_PRE_CONFIGURE_HOOKS += ERLANG_RUN_AUTOCONF
35*4882a593SmuzhiyunHOST_ERLANG_DEPENDENCIES += host-autoconf
36*4882a593SmuzhiyunHOST_ERLANG_PRE_CONFIGURE_HOOKS += ERLANG_RUN_AUTOCONF
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun# Whenever updating Erlang, this value should be updated as well, to the
39*4882a593Smuzhiyun# value of EI_VSN in the file lib/erl_interface/vsn.mk
40*4882a593SmuzhiyunERLANG_EI_VSN = 3.13.1
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun# The configure checks for these functions fail incorrectly
43*4882a593SmuzhiyunERLANG_CONF_ENV = ac_cv_func_isnan=yes ac_cv_func_isinf=yes
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun# Set erl_xcomp variables. See xcomp/erl-xcomp.conf.template
46*4882a593Smuzhiyun# for documentation.
47*4882a593SmuzhiyunERLANG_CONF_ENV += erl_xcomp_sysroot=$(STAGING_DIR)
48*4882a593Smuzhiyun
49*4882a593SmuzhiyunERLANG_CONF_OPTS = --without-javac
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun# Force ERL_TOP to the downloaded source directory. This prevents
52*4882a593Smuzhiyun# Erlang's configure script from inadvertantly using files from
53*4882a593Smuzhiyun# a version of Erlang installed on the host.
54*4882a593SmuzhiyunERLANG_CONF_ENV += ERL_TOP=$(@D)
55*4882a593SmuzhiyunHOST_ERLANG_CONF_ENV += ERL_TOP=$(@D)
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun# erlang uses openssl for all things crypto. Since the host tools (such as
58*4882a593Smuzhiyun# rebar) uses crypto, we need to build host-erlang with support for openssl.
59*4882a593SmuzhiyunHOST_ERLANG_DEPENDENCIES += host-openssl
60*4882a593SmuzhiyunHOST_ERLANG_CONF_OPTS = --without-javac --with-ssl=$(HOST_DIR)
61*4882a593Smuzhiyun
62*4882a593SmuzhiyunHOST_ERLANG_CONF_OPTS += --without-termcap
63*4882a593Smuzhiyun
64*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_NCURSES),y)
65*4882a593SmuzhiyunERLANG_CONF_OPTS += --with-termcap
66*4882a593SmuzhiyunERLANG_DEPENDENCIES += ncurses
67*4882a593Smuzhiyunelse
68*4882a593SmuzhiyunERLANG_CONF_OPTS += --without-termcap
69*4882a593Smuzhiyunendif
70*4882a593Smuzhiyun
71*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_OPENSSL),y)
72*4882a593SmuzhiyunERLANG_CONF_OPTS += --with-ssl
73*4882a593SmuzhiyunERLANG_DEPENDENCIES += openssl
74*4882a593Smuzhiyunelse
75*4882a593SmuzhiyunERLANG_CONF_OPTS += --without-ssl
76*4882a593Smuzhiyunendif
77*4882a593Smuzhiyun
78*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_UNIXODBC),y)
79*4882a593SmuzhiyunERLANG_DEPENDENCIES += unixodbc
80*4882a593SmuzhiyunERLANG_CONF_OPTS += --with-odbc
81*4882a593Smuzhiyunelse
82*4882a593SmuzhiyunERLANG_CONF_OPTS += --without-odbc
83*4882a593Smuzhiyunendif
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun# Always use Buildroot's zlib
86*4882a593SmuzhiyunERLANG_CONF_OPTS += --disable-builtin-zlib
87*4882a593SmuzhiyunERLANG_DEPENDENCIES += zlib
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun# Remove source, example, gs and wx files from staging and target.
90*4882a593SmuzhiyunERLANG_REMOVE_PACKAGES = gs wx
91*4882a593Smuzhiyun
92*4882a593Smuzhiyunifneq ($(BR2_PACKAGE_ERLANG_MEGACO),y)
93*4882a593SmuzhiyunERLANG_REMOVE_PACKAGES += megaco
94*4882a593Smuzhiyunendif
95*4882a593Smuzhiyun
96*4882a593Smuzhiyundefine ERLANG_REMOVE_STAGING_UNUSED
97*4882a593Smuzhiyun	for package in $(ERLANG_REMOVE_PACKAGES); do \
98*4882a593Smuzhiyun		rm -rf $(STAGING_DIR)/usr/lib/erlang/lib/$${package}-*; \
99*4882a593Smuzhiyun	done
100*4882a593Smuzhiyunendef
101*4882a593Smuzhiyun
102*4882a593Smuzhiyundefine ERLANG_REMOVE_TARGET_UNUSED
103*4882a593Smuzhiyun	find $(TARGET_DIR)/usr/lib/erlang -type d -name src -prune -exec rm -rf {} \;
104*4882a593Smuzhiyun	find $(TARGET_DIR)/usr/lib/erlang -type d -name examples -prune -exec rm -rf {} \;
105*4882a593Smuzhiyun	for package in $(ERLANG_REMOVE_PACKAGES); do \
106*4882a593Smuzhiyun		rm -rf $(TARGET_DIR)/usr/lib/erlang/lib/$${package}-*; \
107*4882a593Smuzhiyun	done
108*4882a593Smuzhiyunendef
109*4882a593Smuzhiyun
110*4882a593SmuzhiyunERLANG_POST_INSTALL_STAGING_HOOKS += ERLANG_REMOVE_STAGING_UNUSED
111*4882a593SmuzhiyunERLANG_POST_INSTALL_TARGET_HOOKS += ERLANG_REMOVE_TARGET_UNUSED
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun$(eval $(autotools-package))
114*4882a593Smuzhiyun$(eval $(host-autotools-package))
115