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.
- checksums.yaml +4 -4
- data/CHANGES.md +6 -2
- data/lib/rbnacl/libsodium/version.rb +1 -1
- data/vendor/libsodium/ChangeLog +24 -0
- data/vendor/libsodium/LICENSE +2 -0
- data/vendor/libsodium/Makefile.in +6 -1
- data/vendor/libsodium/aclocal.m4 +1 -0
- data/vendor/libsodium/autom4te.cache/output.1 +1896 -1136
- data/vendor/libsodium/autom4te.cache/output.7 +19837 -0
- data/vendor/libsodium/autom4te.cache/requests +1271 -1031
- data/vendor/libsodium/autom4te.cache/traces.1 +532 -491
- data/vendor/libsodium/autom4te.cache/traces.7 +3614 -0
- data/vendor/libsodium/builds/msvc/version.h +2 -2
- data/vendor/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj +22 -1
- data/vendor/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters +23 -20
- data/vendor/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj +13 -2
- data/vendor/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters +12 -9
- data/vendor/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj +12 -1
- data/vendor/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters +3 -0
- data/vendor/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj +2 -1
- data/vendor/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters +14 -11
- data/vendor/libsodium/configure +1887 -1127
- data/vendor/libsodium/configure.ac +44 -11
- data/vendor/libsodium/dist-build/Makefile.am +4 -2
- data/vendor/libsodium/dist-build/Makefile.in +9 -2
- data/vendor/libsodium/dist-build/android-armv8-a.sh +1 -1
- data/vendor/libsodium/dist-build/android-build.sh +40 -3
- data/vendor/libsodium/dist-build/android-mips64.sh +1 -1
- data/vendor/libsodium/dist-build/android-x86_64.sh +4 -0
- data/vendor/libsodium/dist-build/emscripten-symbols.def +25 -25
- data/vendor/libsodium/dist-build/emscripten.sh +69 -35
- data/vendor/libsodium/dist-build/msys2-win32.sh +8 -2
- data/vendor/libsodium/dist-build/msys2-win64.sh +8 -2
- data/vendor/libsodium/dist-build/{nativeclient.sh → nativeclient-pnacl.sh} +3 -4
- data/vendor/libsodium/dist-build/nativeclient-x86.sh +19 -0
- data/vendor/libsodium/dist-build/nativeclient-x86_64.sh +19 -0
- data/vendor/libsodium/logo.png +0 -0
- data/vendor/libsodium/m4/ax_pthread.m4 +485 -0
- data/vendor/libsodium/msvc-scripts/Makefile.in +5 -0
- data/vendor/libsodium/msvc-scripts/process.bat +2 -2
- data/vendor/libsodium/packaging/nuget/package.bat +3 -3
- data/vendor/libsodium/src/Makefile.in +5 -0
- data/vendor/libsodium/src/libsodium/Makefile.am +2 -1
- data/vendor/libsodium/src/libsodium/Makefile.in +13 -8
- data/vendor/libsodium/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c +70 -87
- data/vendor/libsodium/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c +6 -0
- data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2b-compress-avx2.c +1 -1
- data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2b-ref.c +9 -1
- data/vendor/libsodium/src/libsodium/crypto_hash/sha256/cp/hash_sha256.c +11 -4
- data/vendor/libsodium/src/libsodium/crypto_hash/sha512/cp/hash_sha512.c +14 -8
- data/vendor/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-encoding.c +0 -1
- data/vendor/libsodium/src/libsodium/crypto_pwhash/argon2/argon2.c +10 -6
- data/vendor/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse/pwhash_scryptsalsa208sha256_sse.c +2 -1
- data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/curve25519_donna_c64.c +1 -1
- data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c +11 -11
- data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.h +2 -2
- data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S +3 -0
- data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S +3 -0
- data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.S +830 -826
- data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_base.S +732 -728
- data/vendor/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox_easy.c +3 -0
- data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/int128.h +1 -1
- data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S +8 -0
- data/vendor/libsodium/src/libsodium/include/Makefile.in +5 -0
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_aead_aes256gcm.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_aead_chacha20poly1305.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_auth.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_box.h +3 -3
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_generichash.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_hash.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_onetimeauth.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_pwhash.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_pwhash_argon2i.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_pwhash_scryptsalsa208sha256.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_secretbox.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_shorthash.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_shorthash_siphash24.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_sign.h +3 -3
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_sign_ed25519.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_aes128ctr.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_chacha20.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_salsa2012.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_salsa208.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_xsalsa20.h +1 -1
- data/vendor/libsodium/src/libsodium/include/sodium/private/curve25519_ref10.h +2 -2
- data/vendor/libsodium/src/libsodium/include/sodium/private/mutex.h +7 -0
- data/vendor/libsodium/src/libsodium/include/sodium/randombytes.h +1 -1
- data/vendor/libsodium/src/libsodium/randombytes/nativeclient/randombytes_nativeclient.c +15 -4
- data/vendor/libsodium/src/libsodium/randombytes/randombytes.c +25 -15
- data/vendor/libsodium/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c +72 -15
- data/vendor/libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c +43 -4
- data/vendor/libsodium/src/libsodium/sodium/core.c +131 -2
- data/vendor/libsodium/src/libsodium/sodium/runtime.c +5 -2
- data/vendor/libsodium/src/libsodium/sodium/utils.c +16 -8
- data/vendor/libsodium/test/Makefile.in +5 -0
- data/vendor/libsodium/test/default/Makefile.in +5 -0
- data/vendor/libsodium/test/default/generichash2.c +8 -2
- data/vendor/libsodium/test/default/nacl-test-wrapper.sh +19 -17
- data/vendor/libsodium/test/default/randombytes.c +4 -2
- data/vendor/libsodium/test/quirks/quirks.h +23 -2
- metadata +11 -15
- data/vendor/libsodium/README +0 -1
- data/vendor/libsodium/dist-build/android-x86-64.sh +0 -4
- data/vendor/libsodium/examples/Makefile +0 -21
- data/vendor/libsodium/examples/auth.c +0 -68
- data/vendor/libsodium/examples/box.c +0 -135
- data/vendor/libsodium/examples/box_detached.c +0 -134
- data/vendor/libsodium/examples/generichash.c +0 -80
- data/vendor/libsodium/examples/generichash_stream.c +0 -58
- data/vendor/libsodium/examples/shorthash.c +0 -58
- data/vendor/libsodium/examples/sign.c +0 -78
- 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=
|
3
|
+
export CFLAGS="-O3 -fomit-frame-pointer -m32 -march=pentium3 -mtune=westmere"
|
4
4
|
export PREFIX="$(pwd)/libsodium-win32"
|
5
5
|
|
6
|
-
|
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=
|
3
|
+
export CFLAGS="-O3 -fomit-frame-pointer -m64 -mtune=westmere"
|
4
4
|
export PREFIX="$(pwd)/libsodium-win64"
|
5
5
|
|
6
|
-
|
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/
|
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
|
data/vendor/libsodium/logo.png
CHANGED
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
|