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>
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
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
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.
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
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
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
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
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"
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
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
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
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
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.