From 6b6655e0f529b363a9c56695b9ea1efe0be54cba Mon Sep 17 00:00:00 2001
From: Frank Hunleth <fhunleth@troodon-software.com>
Date: Fri, 7 Jul 2017 18:23:51 -0400
Subject: [PATCH] erlang: bump to 21.0

---
 ...truct-libatomic_ops-we-do-require-CA.patch | 37 ++++++++++---------
 ...ulator-reorder-inclued-headers-paths.patch | 14 ++++---
 ...-with-LDLIBS-instead-of-LIBS-for-DED.patch |  8 ++--
 package/erlang/erlang.hash                    |  6 +--
 package/erlang/erlang.mk                      | 22 +++++++----
 5 files changed, 48 insertions(+), 39 deletions(-)

diff --git a/package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch b/package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
index 8e401430fe..ccb1e8432f 100644
--- a/package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
+++ b/package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
@@ -1,4 +1,4 @@
-From 439fa2eae78a8900bda120072335be19d626498c Mon Sep 17 00:00:00 2001
+From f6217a2d195359a1956c20d2600b59d61be8f848 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
@@ -28,26 +28,15 @@ 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/aclocal.m4                               | 4 +++-
  erts/include/internal/libatomic_ops/ethread.h | 1 +
- 1 file changed, 1 insertion(+)
+ 2 files changed, 4 insertions(+), 1 deletion(-)
 
-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
+index 80bf236..56d9dee 100644
 --- a/erts/aclocal.m4
 +++ b/erts/aclocal.m4
-@@ -1414,7 +1414,8 @@
+@@ -1973,7 +1973,8 @@ case "$THR_LIB_NAME" in
  	    	    fi;;
  	    esac
  	    ethr_have_libatomic_ops=no
@@ -57,7 +46,7 @@ index d65ee19..71d3598 100644
  	    	        [
  	    	    	    volatile AO_t x;
  	    	    	    AO_t y;
-@@ -1455,6 +1455,7 @@
+@@ -2014,6 +2015,7 @@ case "$THR_LIB_NAME" in
  	        AC_CHECK_SIZEOF(AO_t, ,
  	    	    	        [
  	    	    	    	    #include <stdio.h>
@@ -65,6 +54,18 @@ index d65ee19..71d3598 100644
  	    	    	    	    #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])
+diff --git a/erts/include/internal/libatomic_ops/ethread.h b/erts/include/internal/libatomic_ops/ethread.h
+index 4adc31e..18cc22a 100644
+--- a/erts/include/internal/libatomic_ops/ethread.h
++++ b/erts/include/internal/libatomic_ops/ethread.h
+@@ -36,6 +36,7 @@
+ 
+ #define ETHR_NATIVE_IMPL__ "libatomic_ops"
+ 
++#define AO_REQUIRE_CAS
+ #include "atomic_ops.h"
+ #include "ethr_membar.h"
+ #include "ethr_atomic.h"
 -- 
-1.9.1
+2.7.4
 
diff --git a/package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch b/package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch
index c17eefc2a1..a2cecfbad2 100644
--- a/package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch
+++ b/package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch
@@ -1,4 +1,4 @@
-From 85a3e5b4f65e5284e59dcdd90e92ea7d50ef6907 Mon Sep 17 00:00:00 2001
+From 09b88921b947836834b62da41b18212cb92dc076 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
@@ -21,17 +21,21 @@ Signed-off-by: Romain Naour <romain.naour@openwide.fr>
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in
-index 7145824..d079487 100644
+index 0546928..38c2f05 100644
 --- a/erts/emulator/Makefile.in
 +++ b/erts/emulator/Makefile.in
-@@ -678,11 +678,11 @@ else
+@@ -712,7 +712,7 @@ endif
  # 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 $@
- endif
  
+ $(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 @@ endif
+ # 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 $@
@@ -39,5 +43,5 @@ index 7145824..d079487 100644
  $(OBJDIR)/%.o: $(TARGET)/%.c
  	$(V_CC) $(CFLAGS) $(INCLUDES) -Idrivers/common -c $< -o $@
 -- 
-1.9.3
+2.7.4
 
diff --git a/package/erlang/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch b/package/erlang/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
index ad0bb6b453..391b6ebac2 100644
--- a/package/erlang/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
+++ b/package/erlang/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
@@ -1,4 +1,4 @@
-From 011752ec7b31e3dde376270fc65c7ee70644f6e7 Mon Sep 17 00:00:00 2001
+From 7baac8804d9441c1bc5db1115eccd290c8b99eda 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
@@ -12,7 +12,7 @@ Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
  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
+index 1f714df..f7c6b8b 100644
 --- a/lib/asn1/c_src/Makefile
 +++ b/lib/asn1/c_src/Makefile
 @@ -126,7 +126,7 @@ $(NIF_LIB_FILE): $(NIF_STATIC_OBJ_FILES)
@@ -25,7 +25,7 @@ index 1f714df357..f7c6b8b9bc 100644
  # ----------------------------------------------------
  # Release Target
 diff --git a/lib/runtime_tools/c_src/Makefile.in b/lib/runtime_tools/c_src/Makefile.in
-index 4530a83aee..4e13e0d789 100644
+index 4530a83..4e13e0d 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
@@ -38,5 +38,5 @@ index 4530a83aee..4e13e0d789 100644
  clean:
  	rm -f $(TRACE_LIBS)
 -- 
-2.14.1
+2.7.4
 
diff --git a/package/erlang/erlang.hash b/package/erlang/erlang.hash
index f5ff74022c..e5efbf821b 100644
--- a/package/erlang/erlang.hash
+++ b/package/erlang/erlang.hash
@@ -1,4 +1,2 @@
-# md5 from http://www.erlang.org/download/MD5, sha256 locally computed
-md5 a683c8c0aacfe0305c4bf47b3abfde6a  otp_src_20.3.tar.gz
-sha256 4e19e6c403d5255531c0b870f19511c8b8e3b080618e4f9efcb44d905935b2a1  otp_src_20.3.tar.gz
-sha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0  LICENSE.txt
+# sha256 locally computed
+sha256  8830c81042835070d72130a0df78058a5ccb8db9f93829310d93ed6e2e323e0d  OTP-21.0.4.tar.gz
diff --git a/package/erlang/erlang.mk b/package/erlang/erlang.mk
index b992d1c6c6..904f6358ef 100644
--- a/package/erlang/erlang.mk
+++ b/package/erlang/erlang.mk
@@ -5,21 +5,18 @@
 ################################################################################
 
 # See note below when updating Erlang
-ERLANG_VERSION = 20.3
-ERLANG_SITE = http://www.erlang.org/download
-ERLANG_SOURCE = otp_src_$(ERLANG_VERSION).tar.gz
-ERLANG_DEPENDENCIES = host-erlang
+ERLANG_VERSION = 21.0.4
+ERLANG_SITE = https://github.com/erlang/otp/archive
+ERLANG_SOURCE = OTP-$(ERLANG_VERSION).tar.gz
+ERLANG_DEPENDENCIES = host-erlang host-autoconf
 
 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.1
+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 \
@@ -87,6 +84,12 @@ ifneq ($(BR2_PACKAGE_ERLANG_MEGACO),y)
 ERLANG_REMOVE_PACKAGES += megaco
 endif
 
+define ERLANG_RUN_OTP_BUILD
+	# otp_build runs autoconf and autoheader across several Erlang
+	# directories. Running autoreconf is insufficient.
+	ERL_TOP=$(@D) $(HOST_MAKE_ENV) $(@D)/otp_build autoconf
+endef
+
 define ERLANG_REMOVE_STAGING_UNUSED
 	# Remove intermediate build products that can get copied Erlang
 	# release tools.
@@ -128,8 +131,11 @@ define ERLANG_REMOVE_TARGET_UNUSED
 	find $(TARGET_DIR)/usr/lib/erlang -type d -empty -delete
 endef
 
+ERLANG_PRE_CONFIGURE_HOOKS += ERLANG_RUN_OTP_BUILD
 ERLANG_POST_INSTALL_STAGING_HOOKS += ERLANG_REMOVE_STAGING_UNUSED
 ERLANG_POST_INSTALL_TARGET_HOOKS += ERLANG_REMOVE_TARGET_UNUSED
 
+HOST_ERLANG_PRE_CONFIGURE_HOOKS += ERLANG_RUN_OTP_BUILD
+
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))
-- 
2.17.1

