kumquat-buildroot/package/erlang/Config.in
Yann E. MORIN 4a9df29424 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 21:26:07 +01:00

41 lines
1.5 KiB
Plaintext

comment "erlang needs a toolchain w/ threads, shared library"
depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS
depends on !BR2_TOOLCHAIN_HAS_THREADS && BR2_STATIC_LIBS
config BR2_PACKAGE_ERLANG
bool "erlang"
depends on BR2_USE_MMU # fork()
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on !BR2_STATIC_LIBS
depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS
select BR2_PACKAGE_LIBATOMIC_OPS
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_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.
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