[Buildroot] [PATCH 00/21] Rework atomic handling

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Sun Jan 24 23:07:46 UTC 2016


Hello,

As many of you are aware, we have a number of build failures related
to __sync_*() atomic operations, which we can't really solve properly
today with our single BR2_ARCH_HAS_ATOMICS boolean option.

This patch series aims at reworking our atomic operation handling, by
introducing four options: BR2_TOOLCHAIN_HAS_SYNC_1,
BR2_TOOLCHAIN_HAS_SYNC_2, BR2_TOOLCHAIN_HAS_SYNC_4,
BR2_TOOLCHAIN_HAS_SYNC_8, to indicate which variants of atomic
operations are available, depending on the architecture/toolchain. The
full details are explained in PATCH 3.

The overall direction of the series is:

 - PATCH 1 and 2 are preparation patches on libftdi, to remove the
   BR2_ARCH_HAS_ATOMICS dependency which is not needed.

 - PATCH 3 introduces the BR2_TOOLCHAIN_HAS_SYNC_x options, and has
   all the explanations about why we're doing this.

 - PATCH 4 updates the manual about the BR2_TOOLCHAIN_HAS_SYNC_x
   options.

 - PATCH 5-16 aim at replacing the BR2_ARCH_HAS_ATOMICS usage by the
   appropriate BR2_TOOLCHAIN_HAS_SYNC_x options. Note that in some
   cases, BR2_ARCH_HAS_ATOMICS can be removed completely.

   Along the way, we found that json-c was using some __sync_*()
   built-ins, so we added this dependency, which fixes some build
   failure.

 - PATCH 17 removes the BR2_ARCH_HAS_ATOMICS option, which has become
   no longer used.

 - PATCH 18-21 use the new BR2_TOOLCHAIN_HAS_SYNC_x options to fix
   numerous outstanding build failures related to atomic operations.

Those interested can also find this series in the Git branch at:

  http://git.free-electrons.com/users/thomas-petazzoni/buildroot/log/?h=atomic-rework

Thanks in advance for your review and comments!

Thomas

Thomas Petazzoni (21):
  libftdi: C++ bindings need boost
  libftdi: remove BR2_ARCH_HAS_ATOMICS dependency
  toolchain: add BR2_TOOLCHAIN_HAS_SYNC_x hidden booleans
  docs/manual: document usage of BR2_TOOLCHAIN_HAS_SYNC_x
  icu: remove BR2_ARCH_HAS_ATOMICS dependency
  json-c: needs __sync_val_compare_and_swap_4
  pulseaudio: remove BR2_ARCH_HAS_ATOMICS dependency
  apache, apr: fix atomic handling
  jack2: use the proper BR2_TOOLCHAIN_HAS_SYNC_x symbol
  libtorrent: use the proper BR2_TOOLCHAIN_HAS_SYNC_x symbols
  gauche: disable on SPARC(64), remove atomics dependency
  cairo, harfbuzz: rework atomic dependencies
  openocd: remove BR2_ARCH_HAS_ATOMICS dependency
  squid: rework atomic handling
  thrift: remove BR2_ARCH_HAS_ATOMICS dependency
  msgpack: rework BR2_ARCH_HAS_ATOMICS dependency
  arch: remove BR2_ARCH_HAS_ATOMICS option
  glog: fix atomic built-in problem
  openal: add missing BR2_TOOLCHAIN_HAS_SYNC_4 dependency
  freerdp: add missing BR2_TOOLCHAIN_HAS_SYNC_4 dependency
  neard: add missing BR2_TOOLCHAIN_HAS_SYNC_4 dependency

 arch/Config.in                                 |  4 --
 arch/Config.in.aarch64                         |  3 --
 arch/Config.in.arc                             |  3 --
 arch/Config.in.arm                             |  3 --
 arch/Config.in.bfin                            |  3 --
 arch/Config.in.m68k                            |  3 --
 arch/Config.in.microblaze                      |  3 --
 arch/Config.in.mips                            |  3 --
 arch/Config.in.nios2                           |  3 --
 arch/Config.in.powerpc                         |  3 --
 arch/Config.in.sh                              |  3 --
 arch/Config.in.x86                             |  3 --
 arch/Config.in.xtensa                          |  3 --
 docs/manual/adding-packages-directory.txt      | 14 +++++--
 package/apache/apache.mk                       |  4 --
 package/apr/apr.mk                             | 17 ++++++++
 package/beecrypt/Config.in                     |  2 -
 package/cairo/Config.in                        |  1 -
 package/cairo/cairo.mk                         |  6 +++
 package/cairomm/Config.in                      |  2 -
 package/connman/Config.in                      |  1 +
 package/cppcms/Config.in                       |  1 -
 package/cwiid/Config.in                        |  2 +-
 package/directfb/Config.in                     |  5 +--
 package/efl/Config.in                          |  2 +-
 package/enlightenment/Config.in                |  6 +--
 package/espeak/Config.in                       |  2 +-
 package/fastd/Config.in                        |  1 +
 package/flashrom/Config.in                     |  2 -
 package/freerdp/Config.in                      |  2 +
 package/gauche/Config.in                       |  5 +--
 package/glog/glog.mk                           | 11 ++++++
 package/gstreamer/gst-plugins-bad/Config.in    |  4 +-
 package/gstreamer/gst-plugins-base/Config.in   |  4 +-
 package/gstreamer/gst-plugins-good/Config.in   |  5 +--
 package/gstreamer1/gst1-plugins-bad/Config.in  |  6 ++-
 package/gstreamer1/gst1-plugins-base/Config.in |  4 +-
 package/gstreamer1/gst1-plugins-good/Config.in |  5 +--
 package/gtkmm3/Config.in                       |  4 +-
 package/harfbuzz/Config.in                     |  2 +
 package/icu/Config.in                          |  2 -
 package/icu/icu.mk                             |  8 ++++
 package/jack2/Config.in                        |  4 +-
 package/json-c/Config.in                       |  2 +
 package/libevas-generic-loaders/Config.in      |  4 +-
 package/libfm/Config.in                        |  4 +-
 package/libftdi/Config.in                      | 11 ++++--
 package/libftdi/libftdi.mk                     |  1 +
 package/libgail/Config.in                      |  4 +-
 package/libgdiplus/Config.in                   |  2 -
 package/libgtk2/Config.in                      |  4 +-
 package/libgtk3/Config.in                      |  4 +-
 package/librsvg/Config.in                      |  4 +-
 package/libsvg-cairo/Config.in                 |  1 -
 package/libtorrent/Config.in                   |  4 +-
 package/mpd/Config.in                          |  6 ++-
 package/msgpack/Config.in                      |  4 +-
 package/neard/Config.in                        |  2 +
 package/openal/Config.in                       |  2 +
 package/openbox/Config.in                      |  4 +-
 package/opencv/Config.in                       |  2 +-
 package/opencv3/Config.in                      |  4 +-
 package/openocd/Config.in                      |  4 --
 package/pango/Config.in                        |  4 +-
 package/pangomm/Config.in                      |  4 +-
 package/pcmanfm/Config.in                      |  4 +-
 package/php/Config.ext                         |  2 -
 package/pinentry/Config.in                     |  4 +-
 package/pulseaudio/Config.in                   |  4 +-
 package/pulseaudio/pulseaudio.mk               |  7 +++-
 package/python-msgpack/Config.in               |  4 +-
 package/qt-webkit-kiosk/Config.in              |  1 -
 package/qt5/qt5base/Config.in                  |  1 -
 package/qt5/qt5webkit/Config.in                |  1 -
 package/rrdtool/Config.in                      |  2 +-
 package/rsyslog/Config.in                      |  2 +
 package/rtorrent/Config.in                     |  4 +-
 package/squid/squid.mk                         | 10 ++---
 package/thrift/Config.in                       |  2 -
 package/ubus/Config.in                         |  1 +
 package/webkit/Config.in                       |  4 +-
 package/webkitgtk24/Config.in                  |  4 +-
 package/weston/Config.in                       |  4 +-
 package/xscreensaver/Config.in                 |  4 +-
 toolchain/toolchain-common.in                  | 54 ++++++++++++++++++++++++++
 85 files changed, 216 insertions(+), 158 deletions(-)

-- 
2.6.4



More information about the buildroot mailing list