Skip to content
  • Thomas Petazzoni's avatar
    toolchain: introduce BR2_TOOLCHAIN_HAS_LIBATOMIC · 42735cb9
    Thomas Petazzoni authored
    
    
    Until now, we were assuming that whenever you have gcc 4.8, libatomic
    is available. It turns out that this is not correct, since libatomic
    will not be available if thread support is disabled in the toolchain.
    
    Therefore, __atomic_*() intrinsics may not be available even if the
    toolchain uses gcc 4.8.
    
    To solve this problem, we introduce a BR2_TOOLCHAIN_HAS_LIBATOMIC
    boolean, which indicates whether the toolchain has libatomic. It is
    the case when you are using gcc >= 4.8 *and* thread support is
    enabled. We then use this new BR2_TOOLCHAIN_HAS_LIBATOMIC to define
    BR2_TOOLCHAIN_HAS_ATOMIC.
    
    As explained in the comment, on certain architectures, libatomic is
    technically not needed to provide the __atomic_*() intrinsics since
    they might be all built-in. However, since libatomic is only absent in
    non-thread capable toolchains, it is not worth making things more
    complex for such seldomly used configuration.
    
    Note that we are introducing the intermediate
    BR2_TOOLCHAIN_HAS_LIBATOMIC option because it will be useful on its
    own for certain packages.
    
    Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
    [Thomas: improve Config.in comment using a suggestion from Yann.]
    42735cb9