This commit is contained in:
TriForceX
2019-09-25 20:51:37 -03:00
commit 6203ff3e7c
11215 changed files with 428258 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
From 439fa2eae78a8900bda120072335be19d626498c Mon Sep 17 00:00:00 2001
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
Date: Sun, 28 Dec 2014 23:39:40 +0100
Subject: [PATCH] erts/ethread: instruct libatomic_ops we do require CAS
We do require compare-and-swap (CAS), so we must instruct libatomic_ops
to provide it, even if the architecture does not have instructions for
it.
For example, on ARM, LDREX is required for fast CAS. But LDREX is only
available on ARMv6, so by default libatomic_ops will not have CAS for
anything below, like ARMv5. But ARMv5 is always UP, so using an
emulated CAS (that is signal-asyn-safe) is still possible (albeit much
slower).
Tell libatomic_ops to provide CAS, even if the hardware is not capable
of it, by using emulated CAS, as per libatomic_ops dosc:
https://github.com/ivmai/libatomic_ops/blob/master/doc/README.txt#L28
If this is included after defining AO_REQUIRE_CAS, then the package
will make an attempt to emulate compare-and-swap in a way that (at
least on Linux) should still be async-signal-safe.
Thanks go to Thomas for all this insight! :-)
Thanks go to Frank for reporting the issue! :-)
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Frank Hunleth <fhunleth@troodon-software.com>
---
erts/include/internal/libatomic_ops/ethread.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/erts/include/internal/libatomic_ops/ethread.h b/erts/include/internal/libatomic_ops/ethread.h
index d65ee19..71d3598 100644
--- a/erts/include/internal/libatomic_ops/ethread.h
+++ b/erts/include/internal/libatomic_ops/ethread.h
@@ -35,6 +35,7 @@
#define ETHR_NATIVE_IMPL__ "libatomic_ops"
+#define AO_REQUIRE_CAS
#include "atomic_ops.h"
#include "ethr_membar.h"
#include "ethr_atomic.h"
diff --git a/erts/aclocal.m4 b/erts/aclocal.m4
index d65ee19..71d3598 100644
--- a/erts/aclocal.m4
+++ b/erts/aclocal.m4
@@ -1414,7 +1414,8 @@
fi;;
esac
ethr_have_libatomic_ops=no
- AC_TRY_LINK([#include "atomic_ops.h"],
+ AC_TRY_LINK([#define AO_REQUIRE_CAS
+ #include "atomic_ops.h"],
[
volatile AO_t x;
AO_t y;
@@ -1455,6 +1455,7 @@
AC_CHECK_SIZEOF(AO_t, ,
[
#include <stdio.h>
+ #define AO_REQUIRE_CAS
#include "atomic_ops.h"
])
AC_DEFINE_UNQUOTED(ETHR_SIZEOF_AO_T, $ac_cv_sizeof_AO_t, [Define to the size of AO_t if libatomic_ops is used])
--
1.9.1

View File

@@ -0,0 +1,46 @@
From 85a3e5b4f65e5284e59dcdd90e92ea7d50ef6907 Mon Sep 17 00:00:00 2001
From: Romain Naour <romain.naour@openwide.fr>
Date: Sun, 8 Feb 2015 17:23:13 +0100
Subject: [PATCH] erts/emulator: reorder inclued headers paths
If the Perl Compatible Regular Expressions is installed on the
host and the path to the headers is added to the CFLAGS, the
pcre.h from the host is used instead of the one provided by
erlang.
Erlang use an old version of this file which is incompatible
with the upstream one.
Move INCLUDES before CFLAGS to use pcre.h from erlang.
http://autobuild.buildroot.net/results/cbd/cbd8b54eef535f19d7d400fd269af1b3571d6143/build-end.log
Signed-off-by: Romain Naour <romain.naour@openwide.fr>
[Bernd: rebased for erlang-21.0]
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
erts/emulator/Makefile.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in
index 7145824..d079487 100644
--- a/erts/emulator/Makefile.in
+++ b/erts/emulator/Makefile.in
@@ -712,7 +712,7 @@
# Usually the same as the default rule, but certain platforms (e.g. win32) mix
# different compilers
$(OBJDIR)/beam_emu.o: beam/beam_emu.c
- $(V_EMU_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
+ $(V_EMU_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
$(OBJDIR)/beam_emu.S: beam/beam_emu.c
$(V_EMU_CC) -S -fverbose-asm $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
@@ -765,7 +765,7 @@
# General targets
#
$(OBJDIR)/%.o: beam/%.c
- $(V_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
+ $(V_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
$(OBJDIR)/%.o: $(TARGET)/%.c
$(V_CC) $(CFLAGS) $(INCLUDES) -Idrivers/common -c $< -o $@

View File

@@ -0,0 +1,42 @@
From 011752ec7b31e3dde376270fc65c7ee70644f6e7 Mon Sep 17 00:00:00 2001
From: Johan Oudinet <johan.oudinet@gmail.com>
Date: Wed, 6 Dec 2017 15:01:17 +0100
Subject: [PATCH] Link with LDLIBS instead of LIBS for DED
Fix ERL-529 by avoiding to link with libz for no reason.
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
---
lib/asn1/c_src/Makefile | 2 +-
lib/runtime_tools/c_src/Makefile.in | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/asn1/c_src/Makefile b/lib/asn1/c_src/Makefile
index 1f714df357..f7c6b8b9bc 100644
--- a/lib/asn1/c_src/Makefile
+++ b/lib/asn1/c_src/Makefile
@@ -126,7 +126,7 @@ $(NIF_LIB_FILE): $(NIF_STATIC_OBJ_FILES)
$(V_RANLIB) $@
$(NIF_SHARED_OBJ_FILE): $(NIF_OBJ_FILES)
- $(V_LD) $(LDFLAGS) -o $(NIF_SHARED_OBJ_FILE) $(NIF_OBJ_FILES) $(CLIB_FLAGS) $(LIBS)
+ $(V_LD) $(LDFLAGS) -o $(NIF_SHARED_OBJ_FILE) $(NIF_OBJ_FILES) $(CLIB_FLAGS) $(LDLIBS)
# ----------------------------------------------------
# Release Target
diff --git a/lib/runtime_tools/c_src/Makefile.in b/lib/runtime_tools/c_src/Makefile.in
index 4530a83aee..4e13e0d789 100644
--- a/lib/runtime_tools/c_src/Makefile.in
+++ b/lib/runtime_tools/c_src/Makefile.in
@@ -95,7 +95,7 @@ $(OBJDIR)/%$(TYPEMARKER).o: %.c dyntrace_lttng.h
$(V_CC) -c -o $@ $(ALL_CFLAGS) $<
$(LIBDIR)/%$(TYPEMARKER).@DED_EXT@: $(OBJDIR)/%$(TYPEMARKER).o
- $(V_LD) $(LDFLAGS) -o $@ $^ $(LIBS)
+ $(V_LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
clean:
rm -f $(TRACE_LIBS)
--
2.14.1

47
package/erlang/Config.in Normal file
View File

@@ -0,0 +1,47 @@
config BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS
bool
default y if BR2_HOSTARCH = "x86_64"
default y if BR2_HOSTARCH = "x86"
config BR2_PACKAGE_ERLANG_ARCH_SUPPORTS
bool
# see HOWTO/INSTALL.md for Erlang's supported platforms
# when using its native atomic ops implementation
default y if BR2_i386 || BR2_x86_64 || BR2_powerpc || \
BR2_sparc_v9 || BR2_arm || BR2_aarch64 || BR2_mipsel
# erlang needs host-erlang
depends on BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS
comment "erlang needs a toolchain w/ dynamic library, threads"
depends on BR2_USE_MMU # fork()
depends on BR2_PACKAGE_ERLANG_ARCH_SUPPORTS
depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS
config BR2_PACKAGE_ERLANG
bool "erlang"
depends on BR2_USE_MMU # fork()
depends on !BR2_STATIC_LIBS
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_PACKAGE_ERLANG_ARCH_SUPPORTS
select BR2_PACKAGE_ZLIB
help
Erlang is a programming language used to build massively
scalable soft real-time systems with requirements on high
availability. Some of its uses are in telecoms, banking,
e-commerce, computer telephony and instant messaging.
Erlang's runtime system has built-in support for
concurrency, distribution and fault tolerance.
http://www.erlang.org
if BR2_PACKAGE_ERLANG
config BR2_PACKAGE_ERLANG_MEGACO
bool "install megaco application"
help
The Megaco application is a framework for building
applications on top of the Megaco/H.248 protocol. It is
approximately 14MB in size so if you do not need it then
it is recommended not to enable it.
endif # BR2_PACKAGE_ERLANG

View File

@@ -0,0 +1,4 @@
# md5 from http://www.erlang.org/download/MD5, sha256 locally computed
md5 350988f024f88e9839c3715b35e7e27a otp_src_21.0.tar.gz
sha256 c7d247c0cad2d2e718eaca2e2dff051136a1347a92097abf19ebf65ea2870131 otp_src_21.0.tar.gz
sha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0 LICENSE.txt

96
package/erlang/erlang.mk vendored Normal file
View File

@@ -0,0 +1,96 @@
################################################################################
#
# erlang
#
################################################################################
# See note below when updating Erlang
ERLANG_VERSION = 21.0
ERLANG_SITE = http://www.erlang.org/download
ERLANG_SOURCE = otp_src_$(ERLANG_VERSION).tar.gz
ERLANG_DEPENDENCIES = host-erlang
ERLANG_LICENSE = Apache-2.0
ERLANG_LICENSE_FILES = LICENSE.txt
ERLANG_INSTALL_STAGING = YES
# Patched erts/aclocal.m4
ERLANG_AUTORECONF = YES
# Whenever updating Erlang, this value should be updated as well, to the
# value of EI_VSN in the file lib/erl_interface/vsn.mk
ERLANG_EI_VSN = 3.10.3
# The configure checks for these functions fail incorrectly
ERLANG_CONF_ENV = ac_cv_func_isnan=yes ac_cv_func_isinf=yes
# Set erl_xcomp variables. See xcomp/erl-xcomp.conf.template
# for documentation.
ERLANG_CONF_ENV += erl_xcomp_sysroot=$(STAGING_DIR)
ERLANG_CONF_OPTS = --without-javac
# Force ERL_TOP to the downloaded source directory. This prevents
# Erlang's configure script from inadvertantly using files from
# a version of Erlang installed on the host.
ERLANG_CONF_ENV += ERL_TOP=$(@D)
HOST_ERLANG_CONF_ENV += ERL_TOP=$(@D)
# erlang uses openssl for all things crypto. Since the host tools (such as
# rebar) uses crypto, we need to build host-erlang with support for openssl.
HOST_ERLANG_DEPENDENCIES = host-openssl
HOST_ERLANG_CONF_OPTS = --without-javac --with-ssl=$(HOST_DIR)
HOST_ERLANG_CONF_OPTS += --without-termcap
ifeq ($(BR2_PACKAGE_NCURSES),y)
ERLANG_CONF_OPTS += --with-termcap
ERLANG_DEPENDENCIES += ncurses
else
ERLANG_CONF_OPTS += --without-termcap
endif
ifeq ($(BR2_PACKAGE_OPENSSL),y)
ERLANG_CONF_OPTS += --with-ssl
ERLANG_DEPENDENCIES += openssl
else
ERLANG_CONF_OPTS += --without-ssl
endif
ifeq ($(BR2_PACKAGE_UNIXODBC),y)
ERLANG_DEPENDENCIES += unixodbc
ERLANG_CONF_OPTS += --with-odbc
else
ERLANG_CONF_OPTS += --without-odbc
endif
# Always use Buildroot's zlib
ERLANG_CONF_OPTS += --enable-shared-zlib
ERLANG_DEPENDENCIES += zlib
# Remove source, example, gs and wx files from staging and target.
ERLANG_REMOVE_PACKAGES = gs wx
ifneq ($(BR2_PACKAGE_ERLANG_MEGACO),y)
ERLANG_REMOVE_PACKAGES += megaco
endif
define ERLANG_REMOVE_STAGING_UNUSED
for package in $(ERLANG_REMOVE_PACKAGES); do \
rm -rf $(STAGING_DIR)/usr/lib/erlang/lib/$${package}-*; \
done
endef
define ERLANG_REMOVE_TARGET_UNUSED
find $(TARGET_DIR)/usr/lib/erlang -type d -name src -prune -exec rm -rf {} \;
find $(TARGET_DIR)/usr/lib/erlang -type d -name examples -prune -exec rm -rf {} \;
for package in $(ERLANG_REMOVE_PACKAGES); do \
rm -rf $(TARGET_DIR)/usr/lib/erlang/lib/$${package}-*; \
done
endef
ERLANG_POST_INSTALL_STAGING_HOOKS += ERLANG_REMOVE_STAGING_UNUSED
ERLANG_POST_INSTALL_TARGET_HOOKS += ERLANG_REMOVE_TARGET_UNUSED
$(eval $(autotools-package))
$(eval $(host-autotools-package))