json-c: needs __sync_val_compare_and_swap_4
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tue, 2 Feb 2016 15:31:22 +0000 (16:31 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sat, 6 Feb 2016 10:16:00 +0000 (11:16 +0100)
While json-c itself builds fine on platforms that don't provide the
__sync atomic built-ins, it does use them. json-c doesn't fail to
build because only a library is built, so such function calls are left
unresolved. But as soon as it gets used in another package linked in a
program, linking will fail due to the missing
__sync_val_compare_and_swap_4() function.

To fix this, we make json-c depend on BR2_TOOLCHAIN_HAS_SYNC_4, and
propagate to the reverse dependencies:

 - json-c
   - fastd
   - pulseaudio
     - efl
     - espeak
     - gst-plugins-good
     - gst1-plugins-good
     - mpd
   - rsyslog
   - ubus

Note that pulseaudio already had a BR2_ARCH_HAS_ATOMICS dependency,
which we are keeping for the moment, and will clean-up in a subsequent
commit.

This commit will also fix packages that could optionally use json-c,
and therefore fixes build failures like:

  http://autobuild.buildroot.org/results/4fe/4feaa9089ee9a183c5086b791bea35c0156945af/

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
package/efl/Config.in
package/espeak/Config.in
package/fastd/Config.in
package/gstreamer/gst-plugins-good/Config.in
package/gstreamer1/gst1-plugins-good/Config.in
package/json-c/Config.in
package/mpd/Config.in
package/pulseaudio/Config.in
package/rsyslog/Config.in
package/ubus/Config.in

index 85e46b1a6d94eedde4094c882112d607e953ba0c..21cbf5fe10e9fa4b9610650419890d6fd3ad0069 100644 (file)
@@ -82,6 +82,7 @@ config BR2_PACKAGE_EFL_LIBSNDFILE
 config BR2_PACKAGE_EFL_PULSEAUDIO
        bool "Enable pulseaudio support (recommended)"
        depends on BR2_ARCH_HAS_ATOMICS # pulseaudio
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pulseaudio -> json-c
        select BR2_PACKAGE_PULSEAUDIO
        default y
        help
index 94e281663cc02396f675c842380fec8fb7159c99..eebaf6fb64168b65c8805a8b9d3319a85c94d3c7 100644 (file)
@@ -33,6 +33,7 @@ config BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_ALSA
 config BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_PULSEAUDIO
        bool "pulseaudio"
        depends on BR2_ARCH_HAS_ATOMICS # pulseaudio
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pulseaudio -> json-c
        select BR2_PACKAGE_PULSEAUDIO
 
 endchoice
index f753ce481768bfa1663f55392e5b576ffc0c9b59..55bdbd632f8ba9438dff1242bfb26be22951ce75 100644 (file)
@@ -18,6 +18,7 @@ config BR2_PACKAGE_FASTD_STATUS_SOCKET
        bool "status socket support"
        default y
        select BR2_PACKAGE_JSON_C
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c
        help
          Enable support for a socket to get fastd's status.
 
index 0544b7cc0421827031f9bcf8736424d381d8de48..f1694350624c7e40c6234b89d43b3284ab96804b 100644 (file)
@@ -206,12 +206,14 @@ config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_PULSE
        depends on BR2_USE_MMU # pulseaudio
        depends on BR2_ARCH_HAS_ATOMICS # pulseaudio
        depends on !BR2_STATIC_LIBS # pulseaudio
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pulseaudio -> json-c
        select BR2_PACKAGE_PULSEAUDIO
        bool "pulseaudio"
 
 comment "pulseaudio support needs a toolchain w/ threads, dynamic library"
        depends on BR2_USE_MMU
        depends on BR2_ARCH_HAS_ATOMICS
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4
        depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
 
 config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_SOUPHTTPSRC
index a8cdde2edfed8f73090bb73a364cb6a22b0bc40d..6855c4ba58b89f08c16ad125b518eebaa4e0382f 100644 (file)
@@ -313,6 +313,7 @@ config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE
        depends on BR2_USE_MMU # pulseaudio
        depends on BR2_ARCH_HAS_ATOMICS # pulseaudio
        depends on !BR2_STATIC_LIBS # pulseaudio
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pulseaudio -> json-c
        select BR2_PACKAGE_PULSEAUDIO
        bool "pulseaudio"
        help
@@ -321,6 +322,7 @@ config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE
 comment "pulseaudio support needs a toolchain w/ threads, dynamic library"
        depends on BR2_USE_MMU
        depends on BR2_ARCH_HAS_ATOMICS
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4
        depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
 
 config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SOUPHTTPSRC
index 67348fb51c746b5d944b797abcd91af90496772b..4df44a96ab66dcf8ad66390c95832fb025cf37e2 100644 (file)
@@ -1,5 +1,7 @@
 config BR2_PACKAGE_JSON_C
        bool "json-c"
+       # uses __sync_val_compare_and_swap_4
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4
        help
          JSON-C - A JSON implementation in C
 
index db79b0859da4c31265b5176358ea8d34b0f5a03d..17f8e961194c56a8f8e5f2370249401c534ede93 100644 (file)
@@ -252,11 +252,13 @@ config BR2_PACKAGE_MPD_PULSEAUDIO
        bool "pulseaudio"
        depends on BR2_ARCH_HAS_ATOMICS # pulseaudio
        depends on !BR2_STATIC_LIBS # pulseaudio
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pulseaudio -> json-c
        select BR2_PACKAGE_PULSEAUDIO
        help
          Enable pulseaudio output support.
 
 comment "pulseaudio support needs a toolchain w/ dynamic library"
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4
        depends on BR2_STATIC_LIBS
 
 comment "Miscellaneous plugins"
index 63c8ca4b2e6dd7848f2e392488c83647b028f5ef..4583d229554809d01980382a4bcc8dfeceed7708 100644 (file)
@@ -3,6 +3,7 @@ config BR2_PACKAGE_PULSEAUDIO
        depends on BR2_USE_WCHAR
        depends on BR2_TOOLCHAIN_HAS_THREADS
        depends on !BR2_STATIC_LIBS
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c
        select BR2_PACKAGE_LIBTOOL
        select BR2_PACKAGE_JSON_C
        select BR2_PACKAGE_LIBSNDFILE
@@ -34,4 +35,5 @@ endif
 comment "pulseaudio needs a toolchain w/ wchar, threads, dynamic library"
        depends on BR2_USE_MMU
        depends on BR2_ARCH_HAS_ATOMICS
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4
        depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
index d66132f374d8948932412a581b7421c9a681c606..35992077a4a33501d217fd6414d295b144ce1472 100644 (file)
@@ -7,6 +7,7 @@ config BR2_PACKAGE_RSYSLOG
        depends on BR2_TOOLCHAIN_HAS_THREADS
        depends on BR2_USE_MMU # fork()
        depends on !BR2_STATIC_LIBS # modules
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c
        help
          Rsyslog is a powerful and flexible syslog implementation
 
@@ -14,4 +15,5 @@ config BR2_PACKAGE_RSYSLOG
 
 comment "rsyslog needs a toolchain w/ threads, dynamic library"
        depends on BR2_USE_MMU
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4
        depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
index 8567321876fa87e808ea1281e14ab8a6d78a4356..391fc8d92cc218aa27a7ced23ebe19de74fbe2d3 100644 (file)
@@ -1,10 +1,12 @@
 comment "ubus needs a toolchain w/ dynamic library"
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4
         depends on BR2_STATIC_LIBS
 
 config BR2_PACKAGE_UBUS
        bool "ubus"
        select BR2_PACKAGE_LIBUBOX
        select BR2_PACKAGE_JSON_C
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c
        depends on !BR2_STATIC_LIBS # libubox
        help
          IPC/RPC bus that allows communication between processes.