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