rbnacl-libsodium 1.0.10 → 1.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +6 -2
  3. data/lib/rbnacl/libsodium/version.rb +1 -1
  4. data/vendor/libsodium/ChangeLog +24 -0
  5. data/vendor/libsodium/LICENSE +2 -0
  6. data/vendor/libsodium/Makefile.in +6 -1
  7. data/vendor/libsodium/aclocal.m4 +1 -0
  8. data/vendor/libsodium/autom4te.cache/output.1 +1896 -1136
  9. data/vendor/libsodium/autom4te.cache/output.7 +19837 -0
  10. data/vendor/libsodium/autom4te.cache/requests +1271 -1031
  11. data/vendor/libsodium/autom4te.cache/traces.1 +532 -491
  12. data/vendor/libsodium/autom4te.cache/traces.7 +3614 -0
  13. data/vendor/libsodium/builds/msvc/version.h +2 -2
  14. data/vendor/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj +22 -1
  15. data/vendor/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters +23 -20
  16. data/vendor/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj +13 -2
  17. data/vendor/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters +12 -9
  18. data/vendor/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj +12 -1
  19. data/vendor/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters +3 -0
  20. data/vendor/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj +2 -1
  21. data/vendor/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters +14 -11
  22. data/vendor/libsodium/configure +1887 -1127
  23. data/vendor/libsodium/configure.ac +44 -11
  24. data/vendor/libsodium/dist-build/Makefile.am +4 -2
  25. data/vendor/libsodium/dist-build/Makefile.in +9 -2
  26. data/vendor/libsodium/dist-build/android-armv8-a.sh +1 -1
  27. data/vendor/libsodium/dist-build/android-build.sh +40 -3
  28. data/vendor/libsodium/dist-build/android-mips64.sh +1 -1
  29. data/vendor/libsodium/dist-build/android-x86_64.sh +4 -0
  30. data/vendor/libsodium/dist-build/emscripten-symbols.def +25 -25
  31. data/vendor/libsodium/dist-build/emscripten.sh +69 -35
  32. data/vendor/libsodium/dist-build/msys2-win32.sh +8 -2
  33. data/vendor/libsodium/dist-build/msys2-win64.sh +8 -2
  34. data/vendor/libsodium/dist-build/{nativeclient.sh → nativeclient-pnacl.sh} +3 -4
  35. data/vendor/libsodium/dist-build/nativeclient-x86.sh +19 -0
  36. data/vendor/libsodium/dist-build/nativeclient-x86_64.sh +19 -0
  37. data/vendor/libsodium/logo.png +0 -0
  38. data/vendor/libsodium/m4/ax_pthread.m4 +485 -0
  39. data/vendor/libsodium/msvc-scripts/Makefile.in +5 -0
  40. data/vendor/libsodium/msvc-scripts/process.bat +2 -2
  41. data/vendor/libsodium/packaging/nuget/package.bat +3 -3
  42. data/vendor/libsodium/src/Makefile.in +5 -0
  43. data/vendor/libsodium/src/libsodium/Makefile.am +2 -1
  44. data/vendor/libsodium/src/libsodium/Makefile.in +13 -8
  45. data/vendor/libsodium/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c +70 -87
  46. data/vendor/libsodium/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c +6 -0
  47. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2b-compress-avx2.c +1 -1
  48. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2b-ref.c +9 -1
  49. data/vendor/libsodium/src/libsodium/crypto_hash/sha256/cp/hash_sha256.c +11 -4
  50. data/vendor/libsodium/src/libsodium/crypto_hash/sha512/cp/hash_sha512.c +14 -8
  51. data/vendor/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-encoding.c +0 -1
  52. data/vendor/libsodium/src/libsodium/crypto_pwhash/argon2/argon2.c +10 -6
  53. data/vendor/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse/pwhash_scryptsalsa208sha256_sse.c +2 -1
  54. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/curve25519_donna_c64.c +1 -1
  55. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c +11 -11
  56. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.h +2 -2
  57. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S +3 -0
  58. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S +3 -0
  59. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.S +830 -826
  60. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_base.S +732 -728
  61. data/vendor/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox_easy.c +3 -0
  62. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/int128.h +1 -1
  63. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S +8 -0
  64. data/vendor/libsodium/src/libsodium/include/Makefile.in +5 -0
  65. data/vendor/libsodium/src/libsodium/include/sodium/crypto_aead_aes256gcm.h +1 -1
  66. data/vendor/libsodium/src/libsodium/include/sodium/crypto_aead_chacha20poly1305.h +1 -1
  67. data/vendor/libsodium/src/libsodium/include/sodium/crypto_auth.h +1 -1
  68. data/vendor/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h +1 -1
  69. data/vendor/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512.h +1 -1
  70. data/vendor/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h +1 -1
  71. data/vendor/libsodium/src/libsodium/include/sodium/crypto_box.h +3 -3
  72. data/vendor/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h +1 -1
  73. data/vendor/libsodium/src/libsodium/include/sodium/crypto_generichash.h +1 -1
  74. data/vendor/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h +1 -1
  75. data/vendor/libsodium/src/libsodium/include/sodium/crypto_hash.h +1 -1
  76. data/vendor/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h +1 -1
  77. data/vendor/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h +1 -1
  78. data/vendor/libsodium/src/libsodium/include/sodium/crypto_onetimeauth.h +1 -1
  79. data/vendor/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h +1 -1
  80. data/vendor/libsodium/src/libsodium/include/sodium/crypto_pwhash.h +1 -1
  81. data/vendor/libsodium/src/libsodium/include/sodium/crypto_pwhash_argon2i.h +1 -1
  82. data/vendor/libsodium/src/libsodium/include/sodium/crypto_pwhash_scryptsalsa208sha256.h +1 -1
  83. data/vendor/libsodium/src/libsodium/include/sodium/crypto_secretbox.h +1 -1
  84. data/vendor/libsodium/src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h +1 -1
  85. data/vendor/libsodium/src/libsodium/include/sodium/crypto_shorthash.h +1 -1
  86. data/vendor/libsodium/src/libsodium/include/sodium/crypto_shorthash_siphash24.h +1 -1
  87. data/vendor/libsodium/src/libsodium/include/sodium/crypto_sign.h +3 -3
  88. data/vendor/libsodium/src/libsodium/include/sodium/crypto_sign_ed25519.h +1 -1
  89. data/vendor/libsodium/src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h +1 -1
  90. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream.h +1 -1
  91. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_aes128ctr.h +1 -1
  92. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_chacha20.h +1 -1
  93. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h +1 -1
  94. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_salsa2012.h +1 -1
  95. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_salsa208.h +1 -1
  96. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_xsalsa20.h +1 -1
  97. data/vendor/libsodium/src/libsodium/include/sodium/private/curve25519_ref10.h +2 -2
  98. data/vendor/libsodium/src/libsodium/include/sodium/private/mutex.h +7 -0
  99. data/vendor/libsodium/src/libsodium/include/sodium/randombytes.h +1 -1
  100. data/vendor/libsodium/src/libsodium/randombytes/nativeclient/randombytes_nativeclient.c +15 -4
  101. data/vendor/libsodium/src/libsodium/randombytes/randombytes.c +25 -15
  102. data/vendor/libsodium/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c +72 -15
  103. data/vendor/libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c +43 -4
  104. data/vendor/libsodium/src/libsodium/sodium/core.c +131 -2
  105. data/vendor/libsodium/src/libsodium/sodium/runtime.c +5 -2
  106. data/vendor/libsodium/src/libsodium/sodium/utils.c +16 -8
  107. data/vendor/libsodium/test/Makefile.in +5 -0
  108. data/vendor/libsodium/test/default/Makefile.in +5 -0
  109. data/vendor/libsodium/test/default/generichash2.c +8 -2
  110. data/vendor/libsodium/test/default/nacl-test-wrapper.sh +19 -17
  111. data/vendor/libsodium/test/default/randombytes.c +4 -2
  112. data/vendor/libsodium/test/quirks/quirks.h +23 -2
  113. metadata +11 -15
  114. data/vendor/libsodium/README +0 -1
  115. data/vendor/libsodium/dist-build/android-x86-64.sh +0 -4
  116. data/vendor/libsodium/examples/Makefile +0 -21
  117. data/vendor/libsodium/examples/auth.c +0 -68
  118. data/vendor/libsodium/examples/box.c +0 -135
  119. data/vendor/libsodium/examples/box_detached.c +0 -134
  120. data/vendor/libsodium/examples/generichash.c +0 -80
  121. data/vendor/libsodium/examples/generichash_stream.c +0 -58
  122. data/vendor/libsodium/examples/shorthash.c +0 -58
  123. data/vendor/libsodium/examples/sign.c +0 -78
  124. data/vendor/libsodium/examples/utils.h +0 -110
@@ -1,12 +1,18 @@
1
1
  #! /bin/sh
2
2
 
3
- export CFLAGS="-O3 -fomit-frame-pointer -m32 -march=pentium2 -mtune=nocona"
3
+ export CFLAGS="-O3 -fomit-frame-pointer -m32 -march=pentium3 -mtune=westmere"
4
4
  export PREFIX="$(pwd)/libsodium-win32"
5
5
 
6
- make distclean > /dev/null
6
+ if (i686-w64-mingw32-gcc --version > /dev/null 2>&1) then
7
+ echo MinGW found
8
+ else
9
+ echo Please install mingw-w64-i686-gcc >&2
10
+ exit
11
+ fi
7
12
 
8
13
  ./configure --prefix="$PREFIX" --exec-prefix="$PREFIX" \
9
14
  --host=i686-w64-mingw32 && \
15
+ make clean && \
10
16
  make && \
11
17
  make check && \
12
18
  make install
@@ -1,12 +1,18 @@
1
1
  #! /bin/sh
2
2
 
3
- export CFLAGS="-O3 -fomit-frame-pointer -m64 -mtune=nocona"
3
+ export CFLAGS="-O3 -fomit-frame-pointer -m64 -mtune=westmere"
4
4
  export PREFIX="$(pwd)/libsodium-win64"
5
5
 
6
- make distclean > /dev/null
6
+ if (x86_64-w64-mingw32-gcc --version > /dev/null 2>&1) then
7
+ echo MinGW found
8
+ else
9
+ echo Please install mingw-w64-x86_64-gcc >&2
10
+ exit
11
+ fi
7
12
 
8
13
  ./configure --prefix="$PREFIX" --exec-prefix="$PREFIX" \
9
14
  --host=x86_64-w64-mingw32 && \
15
+ make clean && \
10
16
  make && \
11
17
  make check && \
12
18
  make install
@@ -1,6 +1,6 @@
1
1
  #! /bin/sh
2
2
 
3
- export NACL_SDK_ROOT=${NACL_SDK_ROOT-"/opt/nacl_sdk/pepper_45"}
3
+ export NACL_SDK_ROOT=${NACL_SDK_ROOT-"/opt/nacl_sdk/pepper_49"}
4
4
  export NACL_TOOLCHAIN=${NACL_TOOLCHAIN-"${NACL_SDK_ROOT}/toolchain/mac_pnacl"}
5
5
  export NACL_BIN=${NACL_BIN-"${NACL_TOOLCHAIN}/bin"}
6
6
  export PREFIX="$(pwd)/libsodium-nativeclient"
@@ -13,6 +13,7 @@ export NM=${NM-"pnacl-nm"}
13
13
  export RANLIB=${RANLIB-"pnacl-ranlib"}
14
14
  export PNACL_FINALIZE=${PNACL_FINALIZE-"pnacl-finalize"}
15
15
  export PNACL_TRANSLATE=${PNACL_TRANSLATE-"pnacl-translate"}
16
+ export CFLAGS="-O3 -fomit-frame-pointer -fforce-addr"
16
17
 
17
18
  mkdir -p $PREFIX || exit 1
18
19
 
@@ -20,9 +21,7 @@ make distclean > /dev/null
20
21
 
21
22
  ./configure --enable-minimal \
22
23
  --host=nacl \
24
+ --disable-ssp --without-pthreads \
23
25
  --prefix="$PREFIX" || exit 1
24
26
 
25
27
  make -j3 check && make -j3 install || exit 1
26
-
27
- # Cleanup
28
- make distclean > /dev/null
@@ -0,0 +1,19 @@
1
+ #! /bin/sh
2
+
3
+ export NACL_SDK_ROOT=${NACL_SDK_ROOT-"/opt/nacl_sdk/pepper_49"}
4
+ export NACL_TOOLCHAIN=${NACL_TOOLCHAIN-"${NACL_SDK_ROOT}/toolchain/mac_x86_glibc"}
5
+ export NACL_BIN=${NACL_BIN-"${NACL_TOOLCHAIN}/bin"}
6
+ export PREFIX="$(pwd)/libsodium-nativeclient-x86"
7
+ export PATH="${NACL_BIN}:$PATH"
8
+ export CFLAGS="-O3 -fomit-frame-pointer -fforce-addr"
9
+
10
+ mkdir -p $PREFIX || exit 1
11
+
12
+ make distclean > /dev/null
13
+
14
+ ./configure --enable-minimal \
15
+ --host=i686-nacl \
16
+ --disable-ssp --without-pthreads \
17
+ --prefix="$PREFIX" || exit 1
18
+
19
+ make -j3 check && make -j3 install || exit 1
@@ -0,0 +1,19 @@
1
+ #! /bin/sh
2
+
3
+ export NACL_SDK_ROOT=${NACL_SDK_ROOT-"/opt/nacl_sdk/pepper_49"}
4
+ export NACL_TOOLCHAIN=${NACL_TOOLCHAIN-"${NACL_SDK_ROOT}/toolchain/mac_x86_glibc"}
5
+ export NACL_BIN=${NACL_BIN-"${NACL_TOOLCHAIN}/bin"}
6
+ export PREFIX="$(pwd)/libsodium-nativeclient-x86_64"
7
+ export PATH="${NACL_BIN}:$PATH"
8
+ export CFLAGS="-O3 -fomit-frame-pointer -fforce-addr"
9
+
10
+ mkdir -p $PREFIX || exit 1
11
+
12
+ make distclean > /dev/null
13
+
14
+ ./configure --enable-minimal \
15
+ --host=x86_64-nacl \
16
+ --disable-ssp --without-pthreads \
17
+ --prefix="$PREFIX" || exit 1
18
+
19
+ make -j3 check && make -j3 install || exit 1
Binary file
@@ -0,0 +1,485 @@
1
+ # ===========================================================================
2
+ # http://www.gnu.org/software/autoconf-archive/ax_pthread.html
3
+ # ===========================================================================
4
+ #
5
+ # SYNOPSIS
6
+ #
7
+ # AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
8
+ #
9
+ # DESCRIPTION
10
+ #
11
+ # This macro figures out how to build C programs using POSIX threads. It
12
+ # sets the PTHREAD_LIBS output variable to the threads library and linker
13
+ # flags, and the PTHREAD_CFLAGS output variable to any special C compiler
14
+ # flags that are needed. (The user can also force certain compiler
15
+ # flags/libs to be tested by setting these environment variables.)
16
+ #
17
+ # Also sets PTHREAD_CC to any special C compiler that is needed for
18
+ # multi-threaded programs (defaults to the value of CC otherwise). (This
19
+ # is necessary on AIX to use the special cc_r compiler alias.)
20
+ #
21
+ # NOTE: You are assumed to not only compile your program with these flags,
22
+ # but also to link with them as well. For example, you might link with
23
+ # $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
24
+ #
25
+ # If you are only building threaded programs, you may wish to use these
26
+ # variables in your default LIBS, CFLAGS, and CC:
27
+ #
28
+ # LIBS="$PTHREAD_LIBS $LIBS"
29
+ # CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
30
+ # CC="$PTHREAD_CC"
31
+ #
32
+ # In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
33
+ # has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
34
+ # that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
35
+ #
36
+ # Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
37
+ # PTHREAD_PRIO_INHERIT symbol is defined when compiling with
38
+ # PTHREAD_CFLAGS.
39
+ #
40
+ # ACTION-IF-FOUND is a list of shell commands to run if a threads library
41
+ # is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
42
+ # is not found. If ACTION-IF-FOUND is not specified, the default action
43
+ # will define HAVE_PTHREAD.
44
+ #
45
+ # Please let the authors know if this macro fails on any platform, or if
46
+ # you have any other suggestions or comments. This macro was based on work
47
+ # by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
48
+ # from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
49
+ # Alejandro Forero Cuervo to the autoconf macro repository. We are also
50
+ # grateful for the helpful feedback of numerous users.
51
+ #
52
+ # Updated for Autoconf 2.68 by Daniel Richard G.
53
+ #
54
+ # LICENSE
55
+ #
56
+ # Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
57
+ # Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
58
+ #
59
+ # This program is free software: you can redistribute it and/or modify it
60
+ # under the terms of the GNU General Public License as published by the
61
+ # Free Software Foundation, either version 3 of the License, or (at your
62
+ # option) any later version.
63
+ #
64
+ # This program is distributed in the hope that it will be useful, but
65
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
66
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
67
+ # Public License for more details.
68
+ #
69
+ # You should have received a copy of the GNU General Public License along
70
+ # with this program. If not, see <http://www.gnu.org/licenses/>.
71
+ #
72
+ # As a special exception, the respective Autoconf Macro's copyright owner
73
+ # gives unlimited permission to copy, distribute and modify the configure
74
+ # scripts that are the output of Autoconf when processing the Macro. You
75
+ # need not follow the terms of the GNU General Public License when using
76
+ # or distributing such scripts, even though portions of the text of the
77
+ # Macro appear in them. The GNU General Public License (GPL) does govern
78
+ # all other use of the material that constitutes the Autoconf Macro.
79
+ #
80
+ # This special exception to the GPL applies to versions of the Autoconf
81
+ # Macro released by the Autoconf Archive. When you make and distribute a
82
+ # modified version of the Autoconf Macro, you may extend this special
83
+ # exception to the GPL to apply to your modified version as well.
84
+
85
+ #serial 22
86
+
87
+ AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
88
+ AC_DEFUN([AX_PTHREAD], [
89
+ AC_REQUIRE([AC_CANONICAL_HOST])
90
+ AC_REQUIRE([AC_PROG_CC])
91
+ AC_REQUIRE([AC_PROG_SED])
92
+ AC_LANG_PUSH([C])
93
+ ax_pthread_ok=no
94
+
95
+ # We used to check for pthread.h first, but this fails if pthread.h
96
+ # requires special compiler flags (e.g. on Tru64 or Sequent).
97
+ # It gets checked for in the link test anyway.
98
+
99
+ # First of all, check if the user has set any of the PTHREAD_LIBS,
100
+ # etcetera environment variables, and if threads linking works using
101
+ # them:
102
+ if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
103
+ ax_pthread_save_CC="$CC"
104
+ ax_pthread_save_CFLAGS="$CFLAGS"
105
+ ax_pthread_save_LIBS="$LIBS"
106
+ AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
107
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
108
+ LIBS="$PTHREAD_LIBS $LIBS"
109
+ AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
110
+ AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
111
+ AC_MSG_RESULT([$ax_pthread_ok])
112
+ if test "x$ax_pthread_ok" = "xno"; then
113
+ PTHREAD_LIBS=""
114
+ PTHREAD_CFLAGS=""
115
+ fi
116
+ CC="$ax_pthread_save_CC"
117
+ CFLAGS="$ax_pthread_save_CFLAGS"
118
+ LIBS="$ax_pthread_save_LIBS"
119
+ fi
120
+
121
+ # We must check for the threads library under a number of different
122
+ # names; the ordering is very important because some systems
123
+ # (e.g. DEC) have both -lpthread and -lpthreads, where one of the
124
+ # libraries is broken (non-POSIX).
125
+
126
+ # Create a list of thread flags to try. Items starting with a "-" are
127
+ # C compiler flags, and other items are library names, except for "none"
128
+ # which indicates that we try without any flags at all, and "pthread-config"
129
+ # which is a program returning the flags for the Pth emulation library.
130
+
131
+ ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
132
+
133
+ # The ordering *is* (sometimes) important. Some notes on the
134
+ # individual items follow:
135
+
136
+ # pthreads: AIX (must check this before -lpthread)
137
+ # none: in case threads are in libc; should be tried before -Kthread and
138
+ # other compiler flags to prevent continual compiler warnings
139
+ # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
140
+ # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
141
+ # (Note: HP C rejects this with "bad form for `-t' option")
142
+ # -pthreads: Solaris/gcc (Note: HP C also rejects)
143
+ # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
144
+ # doesn't hurt to check since this sometimes defines pthreads and
145
+ # -D_REENTRANT too), HP C (must be checked before -lpthread, which
146
+ # is present but should not be used directly; and before -mthreads,
147
+ # because the compiler interprets this as "-mt" + "-hreads")
148
+ # -mthreads: Mingw32/gcc, Lynx/gcc
149
+ # pthread: Linux, etcetera
150
+ # --thread-safe: KAI C++
151
+ # pthread-config: use pthread-config program (for GNU Pth library)
152
+
153
+ case $host_os in
154
+
155
+ freebsd*)
156
+
157
+ # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
158
+ # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
159
+
160
+ ax_pthread_flags="-kthread lthread $ax_pthread_flags"
161
+ ;;
162
+
163
+ hpux*)
164
+
165
+ # From the cc(1) man page: "[-mt] Sets various -D flags to enable
166
+ # multi-threading and also sets -lpthread."
167
+
168
+ ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
169
+ ;;
170
+
171
+ openedition*)
172
+
173
+ # IBM z/OS requires a feature-test macro to be defined in order to
174
+ # enable POSIX threads at all, so give the user a hint if this is
175
+ # not set. (We don't define these ourselves, as they can affect
176
+ # other portions of the system API in unpredictable ways.)
177
+
178
+ AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
179
+ [
180
+ # if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
181
+ AX_PTHREAD_ZOS_MISSING
182
+ # endif
183
+ ],
184
+ [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
185
+ ;;
186
+
187
+ solaris*)
188
+
189
+ # On Solaris (at least, for some versions), libc contains stubbed
190
+ # (non-functional) versions of the pthreads routines, so link-based
191
+ # tests will erroneously succeed. (N.B.: The stubs are missing
192
+ # pthread_cleanup_push, or rather a function called by this macro,
193
+ # so we could check for that, but who knows whether they'll stub
194
+ # that too in a future libc.) So we'll check first for the
195
+ # standard Solaris way of linking pthreads (-mt -lpthread).
196
+
197
+ ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
198
+ ;;
199
+ esac
200
+
201
+ # GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
202
+
203
+ AS_IF([test "x$GCC" = "xyes"],
204
+ [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
205
+
206
+ # The presence of a feature test macro requesting re-entrant function
207
+ # definitions is, on some systems, a strong hint that pthreads support is
208
+ # correctly enabled
209
+
210
+ case $host_os in
211
+ darwin* | hpux* | linux* | osf* | solaris*)
212
+ ax_pthread_check_macro="_REENTRANT"
213
+ ;;
214
+
215
+ aix* | freebsd*)
216
+ ax_pthread_check_macro="_THREAD_SAFE"
217
+ ;;
218
+
219
+ *)
220
+ ax_pthread_check_macro="--"
221
+ ;;
222
+ esac
223
+ AS_IF([test "x$ax_pthread_check_macro" = "x--"],
224
+ [ax_pthread_check_cond=0],
225
+ [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
226
+
227
+ # Are we compiling with Clang?
228
+
229
+ AC_CACHE_CHECK([whether $CC is Clang],
230
+ [ax_cv_PTHREAD_CLANG],
231
+ [ax_cv_PTHREAD_CLANG=no
232
+ # Note that Autoconf sets GCC=yes for Clang as well as GCC
233
+ if test "x$GCC" = "xyes"; then
234
+ AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
235
+ [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
236
+ # if defined(__clang__) && defined(__llvm__)
237
+ AX_PTHREAD_CC_IS_CLANG
238
+ # endif
239
+ ],
240
+ [ax_cv_PTHREAD_CLANG=yes])
241
+ fi
242
+ ])
243
+ ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
244
+
245
+ ax_pthread_clang_warning=no
246
+
247
+ # Clang needs special handling, because older versions handle the -pthread
248
+ # option in a rather... idiosyncratic way
249
+
250
+ if test "x$ax_pthread_clang" = "xyes"; then
251
+
252
+ # Clang takes -pthread; it has never supported any other flag
253
+
254
+ # (Note 1: This will need to be revisited if a system that Clang
255
+ # supports has POSIX threads in a separate library. This tends not
256
+ # to be the way of modern systems, but it's conceivable.)
257
+
258
+ # (Note 2: On some systems, notably Darwin, -pthread is not needed
259
+ # to get POSIX threads support; the API is always present and
260
+ # active. We could reasonably leave PTHREAD_CFLAGS empty. But
261
+ # -pthread does define _REENTRANT, and while the Darwin headers
262
+ # ignore this macro, third-party headers might not.)
263
+
264
+ PTHREAD_CFLAGS="-pthread"
265
+ PTHREAD_LIBS=
266
+
267
+ ax_pthread_ok=yes
268
+
269
+ # However, older versions of Clang make a point of warning the user
270
+ # that, in an invocation where only linking and no compilation is
271
+ # taking place, the -pthread option has no effect ("argument unused
272
+ # during compilation"). They expect -pthread to be passed in only
273
+ # when source code is being compiled.
274
+ #
275
+ # Problem is, this is at odds with the way Automake and most other
276
+ # C build frameworks function, which is that the same flags used in
277
+ # compilation (CFLAGS) are also used in linking. Many systems
278
+ # supported by AX_PTHREAD require exactly this for POSIX threads
279
+ # support, and in fact it is often not straightforward to specify a
280
+ # flag that is used only in the compilation phase and not in
281
+ # linking. Such a scenario is extremely rare in practice.
282
+ #
283
+ # Even though use of the -pthread flag in linking would only print
284
+ # a warning, this can be a nuisance for well-run software projects
285
+ # that build with -Werror. So if the active version of Clang has
286
+ # this misfeature, we search for an option to squash it.
287
+
288
+ AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
289
+ [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
290
+ [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
291
+ # Create an alternate version of $ac_link that compiles and
292
+ # links in two steps (.c -> .o, .o -> exe) instead of one
293
+ # (.c -> exe), because the warning occurs only in the second
294
+ # step
295
+ ax_pthread_save_ac_link="$ac_link"
296
+ ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
297
+ ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
298
+ ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
299
+ ax_pthread_save_CFLAGS="$CFLAGS"
300
+ for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
301
+ AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
302
+ CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
303
+ ac_link="$ax_pthread_save_ac_link"
304
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
305
+ [ac_link="$ax_pthread_2step_ac_link"
306
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
307
+ [break])
308
+ ])
309
+ done
310
+ ac_link="$ax_pthread_save_ac_link"
311
+ CFLAGS="$ax_pthread_save_CFLAGS"
312
+ AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
313
+ ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
314
+ ])
315
+
316
+ case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
317
+ no | unknown) ;;
318
+ *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
319
+ esac
320
+
321
+ fi # $ax_pthread_clang = yes
322
+
323
+ if test "x$ax_pthread_ok" = "xno"; then
324
+ for ax_pthread_try_flag in $ax_pthread_flags; do
325
+
326
+ case $ax_pthread_try_flag in
327
+ none)
328
+ AC_MSG_CHECKING([whether pthreads work without any flags])
329
+ ;;
330
+
331
+ -mt,pthread)
332
+ AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])
333
+ PTHREAD_CFLAGS="-mt"
334
+ PTHREAD_LIBS="-lpthread"
335
+ ;;
336
+
337
+ -*)
338
+ AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
339
+ PTHREAD_CFLAGS="$ax_pthread_try_flag"
340
+ ;;
341
+
342
+ pthread-config)
343
+ AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
344
+ AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
345
+ PTHREAD_CFLAGS="`pthread-config --cflags`"
346
+ PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
347
+ ;;
348
+
349
+ *)
350
+ AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
351
+ PTHREAD_LIBS="-l$ax_pthread_try_flag"
352
+ ;;
353
+ esac
354
+
355
+ ax_pthread_save_CFLAGS="$CFLAGS"
356
+ ax_pthread_save_LIBS="$LIBS"
357
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
358
+ LIBS="$PTHREAD_LIBS $LIBS"
359
+
360
+ # Check for various functions. We must include pthread.h,
361
+ # since some functions may be macros. (On the Sequent, we
362
+ # need a special flag -Kthread to make this header compile.)
363
+ # We check for pthread_join because it is in -lpthread on IRIX
364
+ # while pthread_create is in libc. We check for pthread_attr_init
365
+ # due to DEC craziness with -lpthreads. We check for
366
+ # pthread_cleanup_push because it is one of the few pthread
367
+ # functions on Solaris that doesn't have a non-functional libc stub.
368
+ # We try pthread_create on general principles.
369
+
370
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
371
+ # if $ax_pthread_check_cond
372
+ # error "$ax_pthread_check_macro must be defined"
373
+ # endif
374
+ static void routine(void *a) { a = 0; }
375
+ static void *start_routine(void *a) { return a; }],
376
+ [pthread_t th; pthread_attr_t attr;
377
+ pthread_create(&th, 0, start_routine, 0);
378
+ pthread_join(th, 0);
379
+ pthread_attr_init(&attr);
380
+ pthread_cleanup_push(routine, 0);
381
+ pthread_cleanup_pop(0) /* ; */])],
382
+ [ax_pthread_ok=yes],
383
+ [])
384
+
385
+ CFLAGS="$ax_pthread_save_CFLAGS"
386
+ LIBS="$ax_pthread_save_LIBS"
387
+
388
+ AC_MSG_RESULT([$ax_pthread_ok])
389
+ AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
390
+
391
+ PTHREAD_LIBS=""
392
+ PTHREAD_CFLAGS=""
393
+ done
394
+ fi
395
+
396
+ # Various other checks:
397
+ if test "x$ax_pthread_ok" = "xyes"; then
398
+ ax_pthread_save_CFLAGS="$CFLAGS"
399
+ ax_pthread_save_LIBS="$LIBS"
400
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
401
+ LIBS="$PTHREAD_LIBS $LIBS"
402
+
403
+ # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
404
+ AC_CACHE_CHECK([for joinable pthread attribute],
405
+ [ax_cv_PTHREAD_JOINABLE_ATTR],
406
+ [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
407
+ for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
408
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
409
+ [int attr = $ax_pthread_attr; return attr /* ; */])],
410
+ [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
411
+ [])
412
+ done
413
+ ])
414
+ AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
415
+ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
416
+ test "x$ax_pthread_joinable_attr_defined" != "xyes"],
417
+ [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
418
+ [$ax_cv_PTHREAD_JOINABLE_ATTR],
419
+ [Define to necessary symbol if this constant
420
+ uses a non-standard name on your system.])
421
+ ax_pthread_joinable_attr_defined=yes
422
+ ])
423
+
424
+ AC_CACHE_CHECK([whether more special flags are required for pthreads],
425
+ [ax_cv_PTHREAD_SPECIAL_FLAGS],
426
+ [ax_cv_PTHREAD_SPECIAL_FLAGS=no
427
+ case $host_os in
428
+ solaris*)
429
+ ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
430
+ ;;
431
+ esac
432
+ ])
433
+ AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
434
+ test "x$ax_pthread_special_flags_added" != "xyes"],
435
+ [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
436
+ ax_pthread_special_flags_added=yes])
437
+
438
+ AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
439
+ [ax_cv_PTHREAD_PRIO_INHERIT],
440
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
441
+ [[int i = PTHREAD_PRIO_INHERIT;]])],
442
+ [ax_cv_PTHREAD_PRIO_INHERIT=yes],
443
+ [ax_cv_PTHREAD_PRIO_INHERIT=no])
444
+ ])
445
+ AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
446
+ test "x$ax_pthread_prio_inherit_defined" != "xyes"],
447
+ [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
448
+ ax_pthread_prio_inherit_defined=yes
449
+ ])
450
+
451
+ CFLAGS="$ax_pthread_save_CFLAGS"
452
+ LIBS="$ax_pthread_save_LIBS"
453
+
454
+ # More AIX lossage: compile with *_r variant
455
+ if test "x$GCC" != "xyes"; then
456
+ case $host_os in
457
+ aix*)
458
+ AS_CASE(["x/$CC"],
459
+ [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
460
+ [#handle absolute path differently from PATH based program lookup
461
+ AS_CASE(["x$CC"],
462
+ [x/*],
463
+ [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
464
+ [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
465
+ ;;
466
+ esac
467
+ fi
468
+ fi
469
+
470
+ test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
471
+
472
+ AC_SUBST([PTHREAD_LIBS])
473
+ AC_SUBST([PTHREAD_CFLAGS])
474
+ AC_SUBST([PTHREAD_CC])
475
+
476
+ # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
477
+ if test "x$ax_pthread_ok" = "xyes"; then
478
+ ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
479
+ :
480
+ else
481
+ ax_pthread_ok=no
482
+ $2
483
+ fi
484
+ AC_LANG_POP
485
+ ])dnl AX_PTHREAD