2014-11-22 17:54:10 +01:00
|
|
|
comment "erlang needs a toolchain w/ threads, shared library"
|
2015-01-04 21:28:21 +01:00
|
|
|
depends on BR2_USE_MMU # fork()
|
package/erlang: fix detection of libatomic_ops
For some platforms, hardware-assisted compare-and-swap may not be
available, so libatomic_ops will not provide it.
However, libatomic_ops can provide a purely software CAS emulation, but
must be instructed to do so. erlang just forgot to tell libatomic_ops
that it does require CAS.
Fix that by defining AO_REQUIRE_CAS before including atmoic_ops.h, like
is done in libunwind, as pointed out by Thomas.
Also, erlang has a convoluted, mind-alterating set on aclocal.m4 macros,
that just forgets to link against -latomic_ops when checking CAS is
available, so that even if CAS is available, configure chokes.
Since I would like to keep the little sanity I still have, just force
linking with -latomic_ops. This is useless when the check is natrally
sucessful (i.e. on platforms where CAS is available in HW), but we
would eventually link with -latomic_ops there, too; it's just redundant.
Overall, just consider that erlang requires libatomic_ops, so forcibly
depend on it, it is easier than trying to disable it. We can revisit
that whenever someone wants to run erlang on a platform for which there
is no libatomic_ops support.
Fixes a slew of autobuild ARM failures:
http://autobuild.buildroot.org/results/e7b/e7bfc4893dea6b133f0794ef44d50ad89bcb6662/
http://autobuild.buildroot.org/results/3e9/3e9c307f1ec6536482641019dcaa94677f7267a3/
http://autobuild.buildroot.org/results/a85/a85ca414e5b67af46510abd7b610eb5ae8661de4/
[...]
[Thomas: fix minor typos in commit log, add dependency on
BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS to the Erlang comment about thread
and shared library dependency.]
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>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-01-04 15:17:14 +01:00
|
|
|
depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS
|
2015-01-04 21:28:21 +01:00
|
|
|
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
|
2014-09-11 23:36:03 +02:00
|
|
|
|
2012-08-24 23:39:26 +02:00
|
|
|
config BR2_PACKAGE_ERLANG
|
|
|
|
bool "erlang"
|
2013-05-06 07:28:19 +02:00
|
|
|
depends on BR2_USE_MMU # fork()
|
2014-09-11 23:36:03 +02:00
|
|
|
depends on BR2_TOOLCHAIN_HAS_THREADS
|
2014-12-03 22:41:29 +01:00
|
|
|
depends on !BR2_STATIC_LIBS
|
package/erlang: fix detection of libatomic_ops
For some platforms, hardware-assisted compare-and-swap may not be
available, so libatomic_ops will not provide it.
However, libatomic_ops can provide a purely software CAS emulation, but
must be instructed to do so. erlang just forgot to tell libatomic_ops
that it does require CAS.
Fix that by defining AO_REQUIRE_CAS before including atmoic_ops.h, like
is done in libunwind, as pointed out by Thomas.
Also, erlang has a convoluted, mind-alterating set on aclocal.m4 macros,
that just forgets to link against -latomic_ops when checking CAS is
available, so that even if CAS is available, configure chokes.
Since I would like to keep the little sanity I still have, just force
linking with -latomic_ops. This is useless when the check is natrally
sucessful (i.e. on platforms where CAS is available in HW), but we
would eventually link with -latomic_ops there, too; it's just redundant.
Overall, just consider that erlang requires libatomic_ops, so forcibly
depend on it, it is easier than trying to disable it. We can revisit
that whenever someone wants to run erlang on a platform for which there
is no libatomic_ops support.
Fixes a slew of autobuild ARM failures:
http://autobuild.buildroot.org/results/e7b/e7bfc4893dea6b133f0794ef44d50ad89bcb6662/
http://autobuild.buildroot.org/results/3e9/3e9c307f1ec6536482641019dcaa94677f7267a3/
http://autobuild.buildroot.org/results/a85/a85ca414e5b67af46510abd7b610eb5ae8661de4/
[...]
[Thomas: fix minor typos in commit log, add dependency on
BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS to the Erlang comment about thread
and shared library dependency.]
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>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-01-04 15:17:14 +01:00
|
|
|
depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS
|
|
|
|
select BR2_PACKAGE_LIBATOMIC_OPS
|
2012-08-24 23:39:26 +02:00
|
|
|
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.
|
|
|
|
|
2013-07-12 10:26:11 +02:00
|
|
|
http://www.erlang.org
|
|
|
|
|
2013-12-13 15:56:11 +01:00
|
|
|
if BR2_PACKAGE_ERLANG
|
|
|
|
|
|
|
|
config BR2_PACKAGE_ERLANG_SMP
|
|
|
|
bool "enable SMP support"
|
|
|
|
help
|
|
|
|
Erlang provides both a UP and an SMP emulator. The UP emulator
|
|
|
|
is always built, and this option enables compilation of the SMP
|
|
|
|
emulator. The choice of which emulator to use is made at runtime.
|
|
|
|
If you do not need SMP support, turning this option off reduces
|
|
|
|
compile time and the size of the Erlang installation.
|
|
|
|
|
2012-08-24 23:39:26 +02:00
|
|
|
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.
|
2013-12-13 15:56:11 +01:00
|
|
|
|
|
|
|
endif # BR2_PACKAGE_ERLANG
|