docker-engine: new package
[buildroot-gz.git] / package / libfastjson / 0002-m4-fix-detection-of-atomics.patch
blob1fdbf1923f42d39dfa38776333e69710d9c0aff8
1 From df087711cf7be55268a55e7820f4d928cb34c078 Mon Sep 17 00:00:00 2001
2 From: "Yann E. MORIN" <yann.morin.1998@free.fr>
3 Date: Sat, 9 Jul 2016 20:44:36 +0200
4 Subject: [PATCH] m4: fix detection of atomics
6 In cross-compilation, it is impossible to run code at configure time to
7 detect the target specifics.
9 As such, AC_TRY_RUN fails miserably to detect reliably that atomic
10 intrisics are present in a toolchain, and decides they are not just
11 because this is cross-compilation.
13 Instead of AC_TRY_RUN, use AC_LINK_IFELSE that does not need to actually
14 run code, since all we're interested in is whether the intrisics are
15 present (or not). Fix both the 32- and 64-bit variants, even if the
16 latter is not used currently.
18 Fixes build failures detected by the Buildroot autobuilders, like:
19 http://autobuild.buildroot.org/results/23a/23ac0e742ed3a70ae4d038f8c9eadc23e708f671/build-end.log
20 http://autobuild.buildroot.org/results/192/1923d0b570adba494f83747a9610ea6ec35f5223/build-end.log
22 and many other cases, espcially on architectures where such intrisics are
23 present, but where the toolchain does not have threads (and anyway, it
24 is much more efficient to use the intrisics rather than use mutexes).
26 Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
27 ---
28 Patch sent upstream:
29 https://github.com/rsyslog/libfastjson/pull/109
31 ---
32 m4/atomic_operations.m4 | 6 ++----
33 m4/atomic_operations_64bit.m4 | 6 ++----
34 2 files changed, 4 insertions(+), 8 deletions(-)
36 diff --git a/m4/atomic_operations.m4 b/m4/atomic_operations.m4
37 index ad0ee60..7d2bca6 100644
38 --- a/m4/atomic_operations.m4
39 +++ b/m4/atomic_operations.m4
40 @@ -9,9 +9,7 @@
42 AC_DEFUN([RS_ATOMIC_OPERATIONS],
43 [AC_CACHE_CHECK([whether the compiler provides atomic builtins], [ap_cv_atomic_builtins],
44 -[AC_TRY_RUN([
45 -int main()
47 +[AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[
48 unsigned long val = 1010, tmp, *mem = &val;
50 if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020)
51 @@ -44,7 +42,7 @@ int main()
52 return 1;
54 return 0;
55 -}], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no], [ap_cv_atomic_builtins=no])])
56 +]])], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no])])
58 if test "$ap_cv_atomic_builtins" = "yes"; then
59 AC_DEFINE(HAVE_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
60 diff --git a/m4/atomic_operations_64bit.m4 b/m4/atomic_operations_64bit.m4
61 index 9fbef0a..d01a977 100644
62 --- a/m4/atomic_operations_64bit.m4
63 +++ b/m4/atomic_operations_64bit.m4
64 @@ -9,9 +9,7 @@
66 AC_DEFUN([RS_ATOMIC_OPERATIONS_64BIT],
67 [AC_CACHE_CHECK([whether the compiler provides atomic builtins for 64 bit data types], [ap_cv_atomic_builtins_64],
68 -[AC_TRY_RUN([
69 -int main()
71 +[AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[
72 unsigned long long val = 1010, tmp, *mem = &val;
74 if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020)
75 @@ -44,7 +42,7 @@ int main()
76 return 1;
78 return 0;
79 -}], [ap_cv_atomic_builtins_64=yes], [ap_cv_atomic_builtins_64=no], [ap_cv_atomic_builtins_64=no])])
80 +]])], [ap_cv_atomic_builtins_64=yes], [ap_cv_atomic_builtins_64=no])])
82 if test "$ap_cv_atomic_builtins_64" = "yes"; then
83 AC_DEFINE(HAVE_ATOMIC_BUILTINS64, 1, [Define if compiler provides 64 bit atomic builtins])
84 --
85 2.7.4