icu: remove BR2_ARCH_HAS_ATOMICS dependency
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 24 Jan 2016 23:07:51 +0000 (00:07 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tue, 26 Jan 2016 20:26:08 +0000 (21:26 +0100)
commit9f99ec21e51e4a9a47d7383dcd7391d2a9aa5050
tree0e0b5ecc84cb0a1669d65a5413ea5e85e0f4b251
parent1e1333fd8f1aa53b90f28187ad811f32bb0e79f4
icu: remove BR2_ARCH_HAS_ATOMICS dependency

The BR2_ARCH_HAS_ATOMICS was added because on ARC, atomic instructions
may not be provided by the architecture and therefore the compiler
does not provide the __sync_*() built-ins.

However, since then, icu was changed and is now able to use C++11
atomics, or even no atomic operations at all. In fact, icu will:

 * If possible, it will use C++11 atomics, which internally rely on
   the __atomic built-ins. These are available since gcc 4.7, and all
   architectures provide it. On some architectures, you *must* link
   with libatomic, on some other architectures, they are available
   built-in, but in all cases, linking against libatomic does not
   harm. Thanks to this, even ARC with no atomic support (which was
   the original reason for adding the BR2_ARCH_HAS_ATOMICS) dependency
   builds fine, provided -latomic is added to LIBS.

 * If C++11 atomics are not available, then it falls back to
   __sync_*() built-ins, which allows compilers older than 4.7 to be
   supported.

 * If really no atomic mechanism is available, then it falls back to a
   basic implementation based on a mutex.

Conclusion:

 - The BR2_ARCH_HAS_ATOMICS dependency is no longer needed.

 - We need to link with -latomic when gcc >= 4.7 is used.

Note that reverse dependencies of icu are also changed accordingly.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/beecrypt/Config.in
package/cppcms/Config.in
package/icu/Config.in
package/icu/icu.mk
package/php/Config.ext
package/qt-webkit-kiosk/Config.in
package/qt5/qt5base/Config.in
package/qt5/qt5webkit/Config.in