From 449a6e279d1d67832d108236b47e877ca5f7d76a Mon Sep 17 00:00:00 2001 From: Donald Stufft <donald@stufft.io> Date: Sat, 5 Oct 2013 09:57:03 -0400 Subject: [PATCH] Actually store the unpacked files instead of dynamically unpacking --- .gitignore | 7 + MANIFEST.in | 31 +- libsodium-0.4.3.tar.gz | Bin 523169 -> 0 bytes setup.py | 56 +- src/libsodium/AUTHORS | 101 + src/libsodium/ChangeLog | 56 + src/libsodium/LICENSE | 16 + src/libsodium/Makefile.am | 16 + src/libsodium/Makefile.in | 880 + src/libsodium/README | 1 + src/libsodium/README.markdown | 219 + src/libsodium/THANKS | 17 + src/libsodium/aclocal.m4 | 1214 ++ src/libsodium/autogen.sh | 16 + src/libsodium/compile | 347 + src/libsodium/config.guess | 1558 ++ src/libsodium/config.sub | 1788 ++ src/libsodium/configure | 17362 ++++++++++++++++ src/libsodium/configure.ac | 400 + src/libsodium/depcomp | 791 + src/libsodium/install-sh | 527 + src/libsodium/libsodium.pc.in | 11 + src/libsodium/ltmain.sh | 9655 +++++++++ src/libsodium/m4/ax_check_compile_flag.m4 | 73 + src/libsodium/m4/ax_check_link_flag.m4 | 72 + src/libsodium/m4/ld-output-def.m4 | 29 + src/libsodium/m4/libtool.m4 | 7982 +++++++ src/libsodium/m4/ltoptions.m4 | 384 + src/libsodium/m4/ltsugar.m4 | 123 + src/libsodium/m4/ltversion.m4 | 23 + src/libsodium/m4/lt~obsolete.m4 | 98 + src/libsodium/m4/pkg.m4 | 214 + src/libsodium/missing | 215 + src/libsodium/src/Makefile.am | 3 + src/libsodium/src/Makefile.in | 626 + src/libsodium/src/libsodium/Makefile.am | 227 + src/libsodium/src/libsodium/Makefile.in | 3535 ++++ .../src/libsodium/crypto_auth/crypto_auth.c | 34 + .../hmacsha256/auth_hmacsha256_api.c | 16 + .../crypto_auth/hmacsha256/ref/api.h | 10 + .../hmacsha256/ref/hmac_hmacsha256.c | 83 + .../hmacsha256/ref/verify_hmacsha256.c | 9 + .../hmacsha512256/auth_hmacsha512256_api.c | 16 + .../crypto_auth/hmacsha512256/ref/api.h | 10 + .../hmacsha512256/ref/hmac_hmacsha512256.c | 86 + .../hmacsha512256/ref/verify_hmacsha512256.c | 9 + .../src/libsodium/crypto_box/crypto_box.c | 95 + .../box_curve25519xsalsa20poly1305_api.c | 41 + .../ref/after_curve25519xsalsa20poly1305.c | 22 + .../curve25519xsalsa20poly1305/ref/api.h | 19 + .../ref/before_curve25519xsalsa20poly1305.c | 19 + .../ref/box_curve25519xsalsa20poly1305.c | 27 + .../ref/keypair_curve25519xsalsa20poly1305.c | 12 + .../crypto_core/hsalsa20/core_hsalsa20_api.c | 26 + .../libsodium/crypto_core/hsalsa20/ref2/api.h | 11 + .../crypto_core/hsalsa20/ref2/core_hsalsa20.c | 108 + .../crypto_core/salsa20/core_salsa20_api.c | 26 + .../libsodium/crypto_core/salsa20/ref/api.h | 11 + .../crypto_core/salsa20/ref/core_salsa20.c | 134 + .../salsa2012/core_salsa2012_api.c | 26 + .../libsodium/crypto_core/salsa2012/ref/api.h | 11 + .../salsa2012/ref/core_salsa2012.c | 134 + .../crypto_core/salsa208/core_salsa208_api.c | 26 + .../libsodium/crypto_core/salsa208/ref/api.h | 11 + .../crypto_core/salsa208/ref/core_salsa208.c | 134 + .../blake2/generichash_blake2_api.c | 31 + .../crypto_generichash/blake2/ref/api.h | 4 + .../blake2/ref/blake2-impl.h | 132 + .../crypto_generichash/blake2/ref/blake2.h | 169 + .../blake2/ref/blake2b-ref.c | 359 + .../blake2/ref/generichash_blake2b.c | 61 + .../crypto_generichash/crypto_generichash.c | 84 + .../src/libsodium/crypto_hash/crypto_hash.c | 9 + .../crypto_hash/sha256/hash_sha256_api.c | 11 + .../libsodium/crypto_hash/sha256/ref/api.h | 8 + .../crypto_hash/sha256/ref/hash_sha256.c | 69 + .../crypto_hash/sha512/hash_sha512_api.c | 11 + .../libsodium/crypto_hash/sha512/ref/api.h | 8 + .../crypto_hash/sha512/ref/hash_sha512.c | 71 + .../sha256/hashblocks_sha256_api.c | 16 + .../crypto_hashblocks/sha256/ref/api.h | 9 + .../sha256/ref/blocks_sha256.c | 212 + .../sha512/hashblocks_sha512_api.c | 16 + .../crypto_hashblocks/sha512/ref/api.h | 9 + .../sha512/ref/blocks_sha512.c | 239 + .../crypto_onetimeauth/crypto_onetimeauth.c | 34 + .../crypto_onetimeauth/poly1305/53/api.h | 8 + .../poly1305/53/auth_poly1305_53.c | 1657 ++ .../poly1305/53/verify_poly1305_53.c | 10 + .../crypto_onetimeauth/poly1305/donna/api.h | 8 + .../poly1305/donna/auth_poly1305_donna.c | 151 + .../poly1305/donna/portable-jane.h | 782 + .../poly1305/donna/verify_poly1305_donna.c | 10 + .../poly1305/onetimeauth_poly1305.c | 42 + .../poly1305/onetimeauth_poly1305_api.c | 16 + .../poly1305/onetimeauth_poly1305_try.c | 147 + .../crypto_scalarmult/crypto_scalarmult.c | 34 + .../curve25519/donna_c64/api.h | 9 + .../donna_c64/base_curve25519_donna_c64.c | 13 + .../donna_c64/smult_curve25519_donna_c64.c | 426 + .../crypto_scalarmult/curve25519/ref/api.h | 8 + .../curve25519/ref/base_curve25519_ref.c | 20 + .../curve25519/ref/smult_curve25519_ref.c | 268 + .../crypto_secretbox/crypto_secretbox.c | 48 + .../xsalsa20poly1305/ref/api.h | 12 + .../ref/box_xsalsa20poly1305.c | 35 + .../secretbox_xsalsa20poly1305_api.c | 26 + .../crypto_shorthash/crypto_shorthash.c | 27 + .../crypto_shorthash/siphash24/ref/api.h | 8 + .../siphash24/ref/shorthash_siphash24.c | 91 + .../siphash24/shorthash_siphash24_api.c | 11 + .../src/libsodium/crypto_sign/crypto_sign.c | 61 + .../libsodium/crypto_sign/ed25519/ref10/api.h | 14 + .../crypto_sign/ed25519/ref10/base.h | 1344 ++ .../crypto_sign/ed25519/ref10/base2.h | 40 + .../libsodium/crypto_sign/ed25519/ref10/d.h | 1 + .../libsodium/crypto_sign/ed25519/ref10/d2.h | 1 + .../libsodium/crypto_sign/ed25519/ref10/fe.h | 56 + .../crypto_sign/ed25519/ref10/fe_0.c | 19 + .../crypto_sign/ed25519/ref10/fe_1.c | 19 + .../crypto_sign/ed25519/ref10/fe_add.c | 57 + .../crypto_sign/ed25519/ref10/fe_cmov.c | 63 + .../crypto_sign/ed25519/ref10/fe_copy.c | 29 + .../crypto_sign/ed25519/ref10/fe_frombytes.c | 73 + .../crypto_sign/ed25519/ref10/fe_invert.c | 14 + .../crypto_sign/ed25519/ref10/fe_isnegative.c | 16 + .../crypto_sign/ed25519/ref10/fe_isnonzero.c | 19 + .../crypto_sign/ed25519/ref10/fe_mul.c | 253 + .../crypto_sign/ed25519/ref10/fe_neg.c | 45 + .../crypto_sign/ed25519/ref10/fe_pow22523.c | 13 + .../crypto_sign/ed25519/ref10/fe_sq.c | 149 + .../crypto_sign/ed25519/ref10/fe_sq2.c | 160 + .../crypto_sign/ed25519/ref10/fe_sub.c | 57 + .../crypto_sign/ed25519/ref10/fe_tobytes.c | 119 + .../libsodium/crypto_sign/ed25519/ref10/ge.h | 95 + .../crypto_sign/ed25519/ref10/ge_add.c | 11 + .../crypto_sign/ed25519/ref10/ge_add.h | 97 + .../ed25519/ref10/ge_double_scalarmult.c | 96 + .../crypto_sign/ed25519/ref10/ge_frombytes.c | 50 + .../crypto_sign/ed25519/ref10/ge_madd.c | 11 + .../crypto_sign/ed25519/ref10/ge_madd.h | 88 + .../crypto_sign/ed25519/ref10/ge_msub.c | 11 + .../crypto_sign/ed25519/ref10/ge_msub.h | 88 + .../crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c | 12 + .../crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c | 13 + .../crypto_sign/ed25519/ref10/ge_p2_0.c | 8 + .../crypto_sign/ed25519/ref10/ge_p2_dbl.c | 11 + .../crypto_sign/ed25519/ref10/ge_p2_dbl.h | 73 + .../crypto_sign/ed25519/ref10/ge_p3_0.c | 9 + .../crypto_sign/ed25519/ref10/ge_p3_dbl.c | 12 + .../ed25519/ref10/ge_p3_to_cached.c | 17 + .../crypto_sign/ed25519/ref10/ge_p3_to_p2.c | 12 + .../crypto_sign/ed25519/ref10/ge_p3_tobytes.c | 14 + .../crypto_sign/ed25519/ref10/ge_precomp_0.c | 8 + .../ed25519/ref10/ge_scalarmult_base.c | 105 + .../crypto_sign/ed25519/ref10/ge_sub.c | 11 + .../crypto_sign/ed25519/ref10/ge_sub.h | 97 + .../crypto_sign/ed25519/ref10/ge_tobytes.c | 14 + .../crypto_sign/ed25519/ref10/keypair.c | 31 + .../crypto_sign/ed25519/ref10/open.c | 40 + .../crypto_sign/ed25519/ref10/pow22523.h | 160 + .../crypto_sign/ed25519/ref10/pow225521.h | 160 + .../libsodium/crypto_sign/ed25519/ref10/sc.h | 15 + .../crypto_sign/ed25519/ref10/sc_muladd.c | 368 + .../crypto_sign/ed25519/ref10/sc_reduce.c | 275 + .../crypto_sign/ed25519/ref10/sign.c | 38 + .../crypto_sign/ed25519/ref10/sqrtm1.h | 1 + .../crypto_sign/ed25519/sign_ed25519_api.c | 26 + .../edwards25519sha512batch/ref/api.h | 13 + .../edwards25519sha512batch/ref/fe25519.h | 54 + .../ref/fe25519_edwards25519sha512batch.c | 345 + .../edwards25519sha512batch/ref/ge25519.h | 34 + .../ref/ge25519_edwards25519sha512batch.c | 227 + .../edwards25519sha512batch/ref/sc25519.h | 51 + .../ref/sc25519_edwards25519sha512batch.c | 146 + .../ref/sign_edwards25519sha512batch.c | 102 + .../sign_edwards25519sha512batch_api.c | 21 + .../aes128ctr/portable/afternm_aes128ctr.c | 158 + .../crypto_stream/aes128ctr/portable/api.h | 14 + .../aes128ctr/portable/beforenm_aes128ctr.c | 59 + .../crypto_stream/aes128ctr/portable/common.h | 788 + .../aes128ctr/portable/common_aes128ctr.c | 64 + .../crypto_stream/aes128ctr/portable/consts.h | 28 + .../aes128ctr/portable/consts_aes128ctr.c | 14 + .../crypto_stream/aes128ctr/portable/int128.h | 47 + .../aes128ctr/portable/int128_aes128ctr.c | 128 + .../aes128ctr/portable/stream_aes128ctr.c | 28 + .../crypto_stream/aes128ctr/portable/types.h | 10 + .../portable/xor_afternm_aes128ctr.c | 180 + .../aes128ctr/stream_aes128ctr_api.c | 21 + .../aes256estream/hongjun/aes-table.h | 309 + .../aes256estream/hongjun/aes256-ctr.c | 238 + .../aes256estream/hongjun/aes256.h | 158 + .../crypto_stream/aes256estream/hongjun/api.h | 14 + .../aes256estream/hongjun/ecrypt-sync.h | 27 + .../aes256estream/stream_aes256estream_api.c | 21 + .../libsodium/crypto_stream/crypto_stream.c | 36 + .../crypto_stream/salsa20/amd64_xmm6/api.h | 1 + .../amd64_xmm6/stream_salsa20_amd64_xmm6.S | 950 + .../libsodium/crypto_stream/salsa20/ref/api.h | 8 + .../salsa20/ref/stream_salsa20_ref.c | 55 + .../salsa20/ref/xor_salsa20_ref.c | 58 + .../crypto_stream/salsa2012/ref/api.h | 11 + .../salsa2012/ref/stream_salsa2012.c | 51 + .../salsa2012/ref/xor_salsa2012.c | 54 + .../salsa2012/stream_salsa2012_api.c | 16 + .../crypto_stream/salsa208/ref/api.h | 10 + .../salsa208/ref/stream_salsa208.c | 51 + .../crypto_stream/salsa208/ref/xor_salsa208.c | 54 + .../salsa208/stream_salsa208_api.c | 16 + .../crypto_stream/xsalsa20/ref/api.h | 11 + .../xsalsa20/ref/stream_xsalsa20.c | 24 + .../crypto_stream/xsalsa20/ref/xor_xsalsa20.c | 25 + .../xsalsa20/stream_xsalsa20_api.c | 16 + .../src/libsodium/crypto_verify/16/ref/api.h | 2 + .../crypto_verify/16/ref/verify_16.c | 24 + .../crypto_verify/16/verify_16_api.c | 6 + .../src/libsodium/crypto_verify/32/ref/api.h | 2 + .../crypto_verify/32/ref/verify_32.c | 40 + .../crypto_verify/32/verify_32_api.c | 6 + .../src/libsodium/include/Makefile.am | 61 + .../src/libsodium/include/Makefile.in | 627 + src/libsodium/src/libsodium/include/sodium.h | 48 + .../src/libsodium/include/sodium/core.h | 18 + .../libsodium/include/sodium/crypto_auth.h | 36 + .../include/sodium/crypto_auth_hmacsha256.h | 36 + .../sodium/crypto_auth_hmacsha512256.h | 36 + .../src/libsodium/include/sodium/crypto_box.h | 83 + .../crypto_box_curve25519xsalsa20poly1305.h | 72 + .../include/sodium/crypto_core_hsalsa20.h | 40 + .../include/sodium/crypto_core_salsa20.h | 40 + .../include/sodium/crypto_core_salsa2012.h | 40 + .../include/sodium/crypto_core_salsa208.h | 40 + .../include/sodium/crypto_generichash.h | 70 + .../sodium/crypto_generichash_blake2b.h | 87 + .../libsodium/include/sodium/crypto_hash.h | 23 + .../include/sodium/crypto_hash_sha256.h | 29 + .../include/sodium/crypto_hash_sha512.h | 29 + .../include/sodium/crypto_hashblocks_sha256.h | 32 + .../include/sodium/crypto_hashblocks_sha512.h | 32 + .../libsodium/include/sodium/crypto_int32.h | 8 + .../libsodium/include/sodium/crypto_int64.h | 8 + .../include/sodium/crypto_onetimeauth.h | 37 + .../sodium/crypto_onetimeauth_poly1305.h | 65 + .../sodium/crypto_onetimeauth_poly1305_53.h | 34 + .../crypto_onetimeauth_poly1305_donna.h | 34 + .../include/sodium/crypto_scalarmult.h | 36 + .../sodium/crypto_scalarmult_curve25519.h | 37 + .../sodium/crypto_scalarmult_curve25519.h.in | 37 + .../include/sodium/crypto_secretbox.h | 47 + .../crypto_secretbox_xsalsa20poly1305.h | 44 + .../include/sodium/crypto_shorthash.h | 33 + .../sodium/crypto_shorthash_siphash24.h | 29 + .../libsodium/include/sodium/crypto_sign.h | 61 + .../include/sodium/crypto_sign_ed25519.h | 52 + .../crypto_sign_edwards25519sha512batch.h | 44 + .../libsodium/include/sodium/crypto_stream.h | 46 + .../include/sodium/crypto_stream_aes128ctr.h | 60 + .../sodium/crypto_stream_aes256estream.h | 61 + .../include/sodium/crypto_stream_salsa20.h | 45 + .../include/sodium/crypto_stream_salsa20.h.in | 45 + .../include/sodium/crypto_stream_salsa2012.h | 44 + .../include/sodium/crypto_stream_salsa208.h | 44 + .../include/sodium/crypto_stream_xsalsa20.h | 44 + .../libsodium/include/sodium/crypto_uint16.h | 8 + .../libsodium/include/sodium/crypto_uint32.h | 8 + .../libsodium/include/sodium/crypto_uint64.h | 8 + .../libsodium/include/sodium/crypto_uint8.h | 8 + .../include/sodium/crypto_verify_16.h | 25 + .../include/sodium/crypto_verify_32.h | 25 + .../src/libsodium/include/sodium/export.h | 30 + .../libsodium/include/sodium/randombytes.h | 53 + .../sodium/randombytes_salsa20_random.h | 45 + .../include/sodium/randombytes_sysrandom.h | 45 + .../src/libsodium/include/sodium/utils.h | 36 + .../src/libsodium/include/sodium/version.h | 29 + .../src/libsodium/include/sodium/version.h.in | 29 + .../src/libsodium/randombytes/randombytes.c | 64 + .../salsa20/randombytes_salsa20_random.c | 306 + .../sysrandom/randombytes_sysrandom.c | 211 + src/libsodium/src/libsodium/sodium/compat.c | 237 + src/libsodium/src/libsodium/sodium/core.c | 23 + src/libsodium/src/libsodium/sodium/utils.c | 89 + src/libsodium/src/libsodium/sodium/version.c | 20 + src/libsodium/test-driver | 127 + src/libsodium/test/Makefile.am | 5 + src/libsodium/test/Makefile.in | 629 + src/libsodium/test/default/Makefile.am | 264 + src/libsodium/test/default/Makefile.in | 1797 ++ src/libsodium/test/default/auth.c | 21 + src/libsodium/test/default/auth.exp | 4 + src/libsodium/test/default/auth2.c | 36 + src/libsodium/test/default/auth2.exp | 4 + src/libsodium/test/default/auth3.c | 36 + src/libsodium/test/default/auth3.exp | 1 + src/libsodium/test/default/auth5.c | 37 + src/libsodium/test/default/auth5.exp | 0 src/libsodium/test/default/box.c | 65 + src/libsodium/test/default/box.exp | 19 + src/libsodium/test/default/box2.c | 66 + src/libsodium/test/default/box2.exp | 17 + src/libsodium/test/default/box7.c | 37 + src/libsodium/test/default/box7.exp | 0 src/libsodium/test/default/box8.c | 44 + src/libsodium/test/default/box8.exp | 0 src/libsodium/test/default/cmptest.h | 46 + src/libsodium/test/default/core1.c | 32 + src/libsodium/test/default/core1.exp | 4 + src/libsodium/test/default/core2.c | 35 + src/libsodium/test/default/core2.exp | 4 + src/libsodium/test/default/core3.c | 42 + src/libsodium/test/default/core3.exp | 1 + src/libsodium/test/default/core4.c | 35 + src/libsodium/test/default/core4.exp | 8 + src/libsodium/test/default/core5.c | 34 + src/libsodium/test/default/core5.exp | 4 + src/libsodium/test/default/core6.c | 49 + src/libsodium/test/default/core6.exp | 4 + src/libsodium/test/default/generichash.c | 27 + src/libsodium/test/default/generichash.exp | 64 + src/libsodium/test/default/generichash2.c | 31 + src/libsodium/test/default/generichash2.exp | 64 + src/libsodium/test/default/hash.c | 16 + src/libsodium/test/default/hash.exp | 1 + src/libsodium/test/default/hash2.exp | 1 + src/libsodium/test/default/hash3.c | 16 + src/libsodium/test/default/hash3.exp | 1 + src/libsodium/test/default/onetimeauth.c | 44 + src/libsodium/test/default/onetimeauth.exp | 2 + src/libsodium/test/default/onetimeauth2.c | 42 + src/libsodium/test/default/onetimeauth2.exp | 1 + src/libsodium/test/default/onetimeauth7.c | 37 + src/libsodium/test/default/onetimeauth7.exp | 0 src/libsodium/test/default/randombytes.c | 16 + src/libsodium/test/default/scalarmult.c | 25 + src/libsodium/test/default/scalarmult.exp | 4 + src/libsodium/test/default/scalarmult2.c | 25 + src/libsodium/test/default/scalarmult2.exp | 4 + src/libsodium/test/default/scalarmult5.c | 32 + src/libsodium/test/default/scalarmult5.exp | 4 + src/libsodium/test/default/scalarmult6.c | 32 + src/libsodium/test/default/scalarmult6.exp | 4 + src/libsodium/test/default/secretbox.c | 58 + src/libsodium/test/default/secretbox.exp | 19 + src/libsodium/test/default/secretbox2.c | 59 + src/libsodium/test/default/secretbox2.exp | 17 + src/libsodium/test/default/secretbox7.c | 33 + src/libsodium/test/default/secretbox7.exp | 0 src/libsodium/test/default/secretbox8.c | 40 + src/libsodium/test/default/secretbox8.exp | 0 src/libsodium/test/default/shorthash.c | 23 + src/libsodium/test/default/shorthash.exp | 64 + src/libsodium/test/default/sodium_core.c | 11 + src/libsodium/test/default/sodium_core.exp | 1 + src/libsodium/test/default/sodium_utils.c | 27 + src/libsodium/test/default/sodium_utils.exp | 6 + src/libsodium/test/default/sodium_version.c | 13 + src/libsodium/test/default/sodium_version.exp | 3 + src/libsodium/test/default/stream.c | 30 + src/libsodium/test/default/stream.exp | 1 + src/libsodium/test/default/stream2.c | 28 + src/libsodium/test/default/stream2.exp | 1 + src/libsodium/test/default/stream3.c | 30 + src/libsodium/test/default/stream3.exp | 4 + src/libsodium/test/default/stream4.c | 55 + src/libsodium/test/default/stream4.exp | 17 + src/libsodium/test/default/stream5.c | 29 + src/libsodium/test/default/stream5.exp | 1 + src/libsodium/test/default/stream6.c | 54 + src/libsodium/test/default/stream6.exp | 17 + .../test/quirks/windows/windows-quirks.h | 18 + 371 files changed, 73184 insertions(+), 41 deletions(-) delete mode 100644 libsodium-0.4.3.tar.gz create mode 100644 src/libsodium/AUTHORS create mode 100644 src/libsodium/ChangeLog create mode 100644 src/libsodium/LICENSE create mode 100644 src/libsodium/Makefile.am create mode 100644 src/libsodium/Makefile.in create mode 100644 src/libsodium/README create mode 100644 src/libsodium/README.markdown create mode 100644 src/libsodium/THANKS create mode 100644 src/libsodium/aclocal.m4 create mode 100755 src/libsodium/autogen.sh create mode 100755 src/libsodium/compile create mode 100755 src/libsodium/config.guess create mode 100755 src/libsodium/config.sub create mode 100755 src/libsodium/configure create mode 100644 src/libsodium/configure.ac create mode 100755 src/libsodium/depcomp create mode 100755 src/libsodium/install-sh create mode 100644 src/libsodium/libsodium.pc.in create mode 100644 src/libsodium/ltmain.sh create mode 100644 src/libsodium/m4/ax_check_compile_flag.m4 create mode 100644 src/libsodium/m4/ax_check_link_flag.m4 create mode 100644 src/libsodium/m4/ld-output-def.m4 create mode 100644 src/libsodium/m4/libtool.m4 create mode 100644 src/libsodium/m4/ltoptions.m4 create mode 100644 src/libsodium/m4/ltsugar.m4 create mode 100644 src/libsodium/m4/ltversion.m4 create mode 100644 src/libsodium/m4/lt~obsolete.m4 create mode 100644 src/libsodium/m4/pkg.m4 create mode 100755 src/libsodium/missing create mode 100644 src/libsodium/src/Makefile.am create mode 100644 src/libsodium/src/Makefile.in create mode 100644 src/libsodium/src/libsodium/Makefile.am create mode 100644 src/libsodium/src/libsodium/Makefile.in create mode 100644 src/libsodium/src/libsodium/crypto_auth/crypto_auth.c create mode 100644 src/libsodium/src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256_api.c create mode 100644 src/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/hmac_hmacsha256.c create mode 100644 src/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/verify_hmacsha256.c create mode 100644 src/libsodium/src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256_api.c create mode 100644 src/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c create mode 100644 src/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c create mode 100644 src/libsodium/src/libsodium/crypto_box/crypto_box.c create mode 100644 src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c create mode 100644 src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c create mode 100644 src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c create mode 100644 src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c create mode 100644 src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c create mode 100644 src/libsodium/src/libsodium/crypto_core/hsalsa20/core_hsalsa20_api.c create mode 100644 src/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/api.h create mode 100644 src/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20.c create mode 100644 src/libsodium/src/libsodium/crypto_core/salsa20/core_salsa20_api.c create mode 100644 src/libsodium/src/libsodium/crypto_core/salsa20/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_core/salsa20/ref/core_salsa20.c create mode 100644 src/libsodium/src/libsodium/crypto_core/salsa2012/core_salsa2012_api.c create mode 100644 src/libsodium/src/libsodium/crypto_core/salsa2012/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_core/salsa2012/ref/core_salsa2012.c create mode 100644 src/libsodium/src/libsodium/crypto_core/salsa208/core_salsa208_api.c create mode 100644 src/libsodium/src/libsodium/crypto_core/salsa208/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_core/salsa208/ref/core_salsa208.c create mode 100644 src/libsodium/src/libsodium/crypto_generichash/blake2/generichash_blake2_api.c create mode 100644 src/libsodium/src/libsodium/crypto_generichash/blake2/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2-impl.h create mode 100644 src/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2.h create mode 100644 src/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2b-ref.c create mode 100644 src/libsodium/src/libsodium/crypto_generichash/blake2/ref/generichash_blake2b.c create mode 100644 src/libsodium/src/libsodium/crypto_generichash/crypto_generichash.c create mode 100644 src/libsodium/src/libsodium/crypto_hash/crypto_hash.c create mode 100644 src/libsodium/src/libsodium/crypto_hash/sha256/hash_sha256_api.c create mode 100644 src/libsodium/src/libsodium/crypto_hash/sha256/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_hash/sha256/ref/hash_sha256.c create mode 100644 src/libsodium/src/libsodium/crypto_hash/sha512/hash_sha512_api.c create mode 100644 src/libsodium/src/libsodium/crypto_hash/sha512/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_hash/sha512/ref/hash_sha512.c create mode 100644 src/libsodium/src/libsodium/crypto_hashblocks/sha256/hashblocks_sha256_api.c create mode 100644 src/libsodium/src/libsodium/crypto_hashblocks/sha256/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_hashblocks/sha256/ref/blocks_sha256.c create mode 100644 src/libsodium/src/libsodium/crypto_hashblocks/sha512/hashblocks_sha512_api.c create mode 100644 src/libsodium/src/libsodium/crypto_hashblocks/sha512/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_hashblocks/sha512/ref/blocks_sha512.c create mode 100644 src/libsodium/src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c create mode 100644 src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/api.h create mode 100644 src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/auth_poly1305_53.c create mode 100644 src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/verify_poly1305_53.c create mode 100644 src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/api.h create mode 100644 src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c create mode 100644 src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/portable-jane.h create mode 100644 src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c create mode 100644 src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c create mode 100644 src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c create mode 100644 src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c create mode 100644 src/libsodium/src/libsodium/crypto_scalarmult/crypto_scalarmult.c create mode 100644 src/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/api.h create mode 100644 src/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c create mode 100644 src/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c create mode 100644 src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/base_curve25519_ref.c create mode 100644 src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c create mode 100644 src/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox.c create mode 100644 src/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c create mode 100644 src/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c create mode 100644 src/libsodium/src/libsodium/crypto_shorthash/crypto_shorthash.c create mode 100644 src/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24.c create mode 100644 src/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24_api.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/crypto_sign.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/api.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/base.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/base2.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/d.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/d2.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_0.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_1.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_add.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_cmov.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_copy.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_frombytes.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_invert.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_isnegative.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_isnonzero.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_mul.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_neg.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_pow22523.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sq.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sq2.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sub.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_tobytes.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_add.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_add.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_double_scalarmult.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_frombytes.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_madd.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_madd.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_msub.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_msub.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_0.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_dbl.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_dbl.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_0.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_dbl.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_to_cached.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_to_p2.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_tobytes.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_precomp_0.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_scalarmult_base.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_sub.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_sub.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_tobytes.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/keypair.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/open.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/pow22523.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/pow225521.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc_muladd.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc_reduce.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sqrtm1.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/ed25519/sign_ed25519_api.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/fe25519.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/ge25519.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sc25519.h create mode 100644 src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c create mode 100644 src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/afternm_aes128ctr.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/api.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/common.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/common_aes128ctr.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/consts.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/consts_aes128ctr.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/int128.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/int128_aes128ctr.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/stream_aes128ctr.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/types.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes128ctr/stream_aes128ctr_api.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes-table.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes256-ctr.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes256.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/api.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/ecrypt-sync.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/aes256estream/stream_aes256estream_api.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/crypto_stream.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/api.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa20/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa20/ref/stream_salsa20_ref.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa20/ref/xor_salsa20_ref.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa2012/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa2012/ref/xor_salsa2012.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa2012/stream_salsa2012_api.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa208/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa208/ref/stream_salsa208.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa208/ref/xor_salsa208.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/salsa208/stream_salsa208_api.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/stream_xsalsa20.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/xor_xsalsa20.c create mode 100644 src/libsodium/src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20_api.c create mode 100644 src/libsodium/src/libsodium/crypto_verify/16/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_verify/16/ref/verify_16.c create mode 100644 src/libsodium/src/libsodium/crypto_verify/16/verify_16_api.c create mode 100644 src/libsodium/src/libsodium/crypto_verify/32/ref/api.h create mode 100644 src/libsodium/src/libsodium/crypto_verify/32/ref/verify_32.c create mode 100644 src/libsodium/src/libsodium/crypto_verify/32/verify_32_api.c create mode 100644 src/libsodium/src/libsodium/include/Makefile.am create mode 100644 src/libsodium/src/libsodium/include/Makefile.in create mode 100644 src/libsodium/src/libsodium/include/sodium.h create mode 100644 src/libsodium/src/libsodium/include/sodium/core.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_auth.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_box.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_core_hsalsa20.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_core_salsa20.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_core_salsa2012.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_core_salsa208.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_generichash.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_hash.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_hashblocks_sha256.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_hashblocks_sha512.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_int32.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_int64.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305_53.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305_donna.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_scalarmult.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h.in create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_secretbox.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_shorthash.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_shorthash_siphash24.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_sign.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_sign_ed25519.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_stream.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_stream_aes128ctr.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_stream_aes256estream.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h.in create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa2012.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa208.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_stream_xsalsa20.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_uint16.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_uint32.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_uint64.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_uint8.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_verify_16.h create mode 100644 src/libsodium/src/libsodium/include/sodium/crypto_verify_32.h create mode 100644 src/libsodium/src/libsodium/include/sodium/export.h create mode 100644 src/libsodium/src/libsodium/include/sodium/randombytes.h create mode 100644 src/libsodium/src/libsodium/include/sodium/randombytes_salsa20_random.h create mode 100644 src/libsodium/src/libsodium/include/sodium/randombytes_sysrandom.h create mode 100644 src/libsodium/src/libsodium/include/sodium/utils.h create mode 100644 src/libsodium/src/libsodium/include/sodium/version.h create mode 100644 src/libsodium/src/libsodium/include/sodium/version.h.in create mode 100644 src/libsodium/src/libsodium/randombytes/randombytes.c create mode 100644 src/libsodium/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c create mode 100644 src/libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c create mode 100644 src/libsodium/src/libsodium/sodium/compat.c create mode 100644 src/libsodium/src/libsodium/sodium/core.c create mode 100644 src/libsodium/src/libsodium/sodium/utils.c create mode 100644 src/libsodium/src/libsodium/sodium/version.c create mode 100755 src/libsodium/test-driver create mode 100644 src/libsodium/test/Makefile.am create mode 100644 src/libsodium/test/Makefile.in create mode 100644 src/libsodium/test/default/Makefile.am create mode 100644 src/libsodium/test/default/Makefile.in create mode 100644 src/libsodium/test/default/auth.c create mode 100644 src/libsodium/test/default/auth.exp create mode 100644 src/libsodium/test/default/auth2.c create mode 100644 src/libsodium/test/default/auth2.exp create mode 100644 src/libsodium/test/default/auth3.c create mode 100644 src/libsodium/test/default/auth3.exp create mode 100644 src/libsodium/test/default/auth5.c create mode 100644 src/libsodium/test/default/auth5.exp create mode 100644 src/libsodium/test/default/box.c create mode 100644 src/libsodium/test/default/box.exp create mode 100644 src/libsodium/test/default/box2.c create mode 100644 src/libsodium/test/default/box2.exp create mode 100644 src/libsodium/test/default/box7.c create mode 100644 src/libsodium/test/default/box7.exp create mode 100644 src/libsodium/test/default/box8.c create mode 100644 src/libsodium/test/default/box8.exp create mode 100644 src/libsodium/test/default/cmptest.h create mode 100644 src/libsodium/test/default/core1.c create mode 100644 src/libsodium/test/default/core1.exp create mode 100644 src/libsodium/test/default/core2.c create mode 100644 src/libsodium/test/default/core2.exp create mode 100644 src/libsodium/test/default/core3.c create mode 100644 src/libsodium/test/default/core3.exp create mode 100644 src/libsodium/test/default/core4.c create mode 100644 src/libsodium/test/default/core4.exp create mode 100644 src/libsodium/test/default/core5.c create mode 100644 src/libsodium/test/default/core5.exp create mode 100644 src/libsodium/test/default/core6.c create mode 100644 src/libsodium/test/default/core6.exp create mode 100644 src/libsodium/test/default/generichash.c create mode 100644 src/libsodium/test/default/generichash.exp create mode 100644 src/libsodium/test/default/generichash2.c create mode 100644 src/libsodium/test/default/generichash2.exp create mode 100644 src/libsodium/test/default/hash.c create mode 100644 src/libsodium/test/default/hash.exp create mode 100644 src/libsodium/test/default/hash2.exp create mode 100644 src/libsodium/test/default/hash3.c create mode 100644 src/libsodium/test/default/hash3.exp create mode 100644 src/libsodium/test/default/onetimeauth.c create mode 100644 src/libsodium/test/default/onetimeauth.exp create mode 100644 src/libsodium/test/default/onetimeauth2.c create mode 100644 src/libsodium/test/default/onetimeauth2.exp create mode 100644 src/libsodium/test/default/onetimeauth7.c create mode 100644 src/libsodium/test/default/onetimeauth7.exp create mode 100644 src/libsodium/test/default/randombytes.c create mode 100644 src/libsodium/test/default/scalarmult.c create mode 100644 src/libsodium/test/default/scalarmult.exp create mode 100644 src/libsodium/test/default/scalarmult2.c create mode 100644 src/libsodium/test/default/scalarmult2.exp create mode 100644 src/libsodium/test/default/scalarmult5.c create mode 100644 src/libsodium/test/default/scalarmult5.exp create mode 100644 src/libsodium/test/default/scalarmult6.c create mode 100644 src/libsodium/test/default/scalarmult6.exp create mode 100644 src/libsodium/test/default/secretbox.c create mode 100644 src/libsodium/test/default/secretbox.exp create mode 100644 src/libsodium/test/default/secretbox2.c create mode 100644 src/libsodium/test/default/secretbox2.exp create mode 100644 src/libsodium/test/default/secretbox7.c create mode 100644 src/libsodium/test/default/secretbox7.exp create mode 100644 src/libsodium/test/default/secretbox8.c create mode 100644 src/libsodium/test/default/secretbox8.exp create mode 100644 src/libsodium/test/default/shorthash.c create mode 100644 src/libsodium/test/default/shorthash.exp create mode 100644 src/libsodium/test/default/sodium_core.c create mode 100644 src/libsodium/test/default/sodium_core.exp create mode 100644 src/libsodium/test/default/sodium_utils.c create mode 100644 src/libsodium/test/default/sodium_utils.exp create mode 100644 src/libsodium/test/default/sodium_version.c create mode 100644 src/libsodium/test/default/sodium_version.exp create mode 100644 src/libsodium/test/default/stream.c create mode 100644 src/libsodium/test/default/stream.exp create mode 100644 src/libsodium/test/default/stream2.c create mode 100644 src/libsodium/test/default/stream2.exp create mode 100644 src/libsodium/test/default/stream3.c create mode 100644 src/libsodium/test/default/stream3.exp create mode 100644 src/libsodium/test/default/stream4.c create mode 100644 src/libsodium/test/default/stream4.exp create mode 100644 src/libsodium/test/default/stream5.c create mode 100644 src/libsodium/test/default/stream5.exp create mode 100644 src/libsodium/test/default/stream6.c create mode 100644 src/libsodium/test/default/stream6.exp create mode 100644 src/libsodium/test/quirks/windows/windows-quirks.h diff --git a/.gitignore b/.gitignore index 253d4031..9776b2b5 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,10 @@ pip-log.txt # Generated cffi files nacl/_cffi_*.c + +# Generate libsodium files +src/libsodium/**/Makefile +src/libsodium/config.log +src/libsodium/config.status +src/libsodium/libsodium.pc +src/libsodium/libtool diff --git a/MANIFEST.in b/MANIFEST.in index 19745c1d..1feebdd5 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,9 +1,38 @@ -include *.gz include tox.ini include LICENSE + +# libsodium files +include src/libsodium/AUTHORS +include src/libsodium/ChangeLog +include src/libsodium/LICENSE +include src/libsodium/README +include src/libsodium/THANKS +include src/libsodium/compile +include src/libsodium/configure +include src/libsodium/depcomp +include src/libsodium/install-sh +include src/libsodium/missing +include src/libsodium/test-driver +recursive-include src *.S +recursive-include src *.ac +recursive-include src *.am +recursive-include src *.c +recursive-include src *.exp +recursive-include src *.guess +recursive-include src *.h +recursive-include src *.in +recursive-include src *.m4 +recursive-include src *.markdown +recursive-include src *.sh +recursive-include src *.sub + +# test files recursive-include docs *.png recursive-include docs *.py recursive-include docs *.rst recursive-include docs Makefile recursive-include tests *.py recursive-include tests/data * + +# Remove CFFI files +recursive-exclude nacl _cffi_*.c diff --git a/libsodium-0.4.3.tar.gz b/libsodium-0.4.3.tar.gz deleted file mode 100644 index 897dfc79235399aea2e1aff155d1c32d7f845870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 523169 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�j-SBCw?FkoYG`4~N=pa@vQq2@Lr=dEkF4ce9b; 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�EbO5rPUBW_GX%i1W* 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	D&q`mErV>hd0WT;EBFLAQ z4Q8H2zU;Vh%!s;VkY@49dmfCSJj_CpTI8N3udkiUgM!E^SuaXnp73rIC0^_9bq9C? z!{S@m-hZ`X%5Q5mHuuqils#b~+h7z@;y{}u_o(YrnaF&_sZ76bzBpJZvP}9O<|a{P zsy$;ZL=@;PB^F#>o~4OjFJ)gcWntohRI?Nwbiw%6xz@OkFL}?@Z(AorB$@72n#tWn zBTkin<1iS(Tl6_kPFbHp^{r3bIWpe&Ttu*gl%Wc0(mLjR`^dXc%Dg^?{DhdZa=V46 zAXwv;35dQ5#vD@EdXJ<+WzkWz^rT$zZiH;1YsG=rzgT<mqhDI`4U#pHuGy?>Cv?0n z=1>PYH#2*c`3DIV(?Y^OO|bZ<=obHpdc?jtYxZ{FYeBDwJc~uS71&(hqvytfp#a14 zZn2n;1#;rciJ;OvM&|>>MzOni2>*wty=kPc=7!W{B?rxU7zIweEFTPP_dkK*(4Ds? z>2e{-1+PaG`wC2uiOwBFvr(NEwdigT`3S36e4avT7A_5I%1F*p#ZbD>j@%^uU^vlW z+#O6(Z#Zhm$p&~9_pUEo*EVlQq1r*)9Xf+>6T=Inx&}=9CDX*dvpC$Vd;O=)CF|<( z(Mp2TLRJ&p<AV_`qF@w@%Q==aCGWe!_11t&E8Yxv6IXLcsPZLOMrOSJWx$S~PQ+Wz z%9IlW>rQ}0k&QaM))0z_fQPe(we)#=^{*RZOIAyUd_$KZ1JpK%LO#oi@O~)HdV$KU z0EmuI%?8<~Bk@w;Ka(?ukv8>UXgd)*ClMQ)^YD`zM%x>?%0Ap;SnZ7EG9zSMu9txs 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	_`!!48A%mghR6c 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 DGh;Fv diff --git a/setup.py b/setup.py index 856be621..3a1b2081 100644 --- a/setup.py +++ b/setup.py @@ -1,13 +1,11 @@ #!/usr/bin/env python +import functools import glob import os import os.path import shlex -import shutil import subprocess import sys -import tarfile -import tempfile from distutils.command.build_clib import build_clib as _build_clib @@ -22,6 +20,8 @@ SODIUM_VERSION = "0.4.3" def here(*paths): return os.path.abspath(os.path.join(os.path.dirname(__file__), *paths)) +sodium = functools.partial(here, "src/libsodium/src/libsodium") + def which(name, flags=os.X_OK): # Taken from twisted result = [] @@ -52,40 +52,21 @@ except ImportError: else: # building bdist - cffi is here! ext_modules = [nacl.nacl.ffi.verifier.get_extension()] - ext_modules[0].include_dirs.append(here("build/sodium/src/libsodium/include")) + ext_modules[0].include_dirs.append(sodium("include")) class build_clib(_build_clib): def run(self): - # Unpack the Libsodium Tarball - sourcefile = tarfile.open( - here("libsodium-%s.tar.gz" % SODIUM_VERSION), - ) - - tmpdir = tempfile.mkdtemp() - try: - sourcefile.extractall(tmpdir) - - # Copy our installed directory into the build location - shutil.rmtree(here("build/sodium"), ignore_errors=True) - shutil.copytree( - os.path.join(tmpdir, "libsodium-%s" % SODIUM_VERSION), - here("build/sodium") - ) - finally: - shutil.rmtree(tmpdir, ignore_errors=True) - sourcefile.close() - # Run ./configure subprocess.check_call( "./configure --disable-debug --disable-dependency-tracking", - cwd=here("build/sodium"), + cwd=here("src/libsodium"), shell=True, ) # Parse the Makefile to determine what macros to define - with open(here("build/sodium/Makefile")) as makefile: + with open(here("src/libsodium/Makefile")) as makefile: for line in makefile: if line.startswith("DEFS"): defines = [ @@ -109,36 +90,31 @@ class build_clib(_build_clib): # TIMODE or not if "HAVE_TI_MODE" in macros: sources.extend([ - "crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c", - "crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c", + sodium("crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c"), + sodium("crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c"), ]) else: sources.extend([ - "crypto_scalarmult/curve25519/ref/base_curve25519_ref.c", - "crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c", + sodium("crypto_scalarmult/curve25519/ref/base_curve25519_ref.c"), + sodium("crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c"), ]) # Dynamically modify the implementation based on if we have # AMD64 ASM or not. if "HAVE_AMD64_ASM" in macros: sources.extend([ - "crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S", + sodium("crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S"), ]) self._include_asm = True else: sources.extend([ - "crypto_stream/salsa20/ref/stream_salsa20_ref.c", - "crypto_stream/salsa20/ref/xor_salsa20_ref.c", + sodium("crypto_stream/salsa20/ref/stream_salsa20_ref.c"), + sodium("crypto_stream/salsa20/ref/xor_salsa20_ref.c"), ]) self._include_asm = False - # Expand out all of the sources to their full path - sources = [ - here("build/sodium/src/libsodium", s) for s in sources - ] - build_info["sources"] = sources libraries.append((libname, build_info)) @@ -207,9 +183,9 @@ setup( libraries=[ ("sodium", { "include_dirs": [ - here("build/sodium/src/libsodium/include/sodium"), + sodium("include/sodium"), ], - "sources": [ + "sources": map(sodium, [ "crypto_auth/crypto_auth.c", "crypto_auth/hmacsha256/auth_hmacsha256_api.c", "crypto_auth/hmacsha256/ref/hmac_hmacsha256.c", @@ -336,7 +312,7 @@ setup( "sodium/core.c", "sodium/utils.c", "sodium/version.c", - ], + ]), }), ], diff --git a/src/libsodium/AUTHORS b/src/libsodium/AUTHORS new file mode 100644 index 00000000..4f369486 --- /dev/null +++ b/src/libsodium/AUTHORS @@ -0,0 +1,101 @@ +Designers +========= + +crypto_sign/ed25519 +------------------- +Daniel J. Bernstein +Niels Duif +Tanja Lange +Peter Schwabe +Bo-Yin Yang + +Implementors +============ + +crypto_core/hsalsa20 +-------------------- +Daniel J. Bernstein + +crypto_core/salsa20 +-------------------- +Daniel J. Bernstein + +crypto_core/salsa2012 +------------------- +Daniel J. Bernstein + +crypto_core/salsa208 +--------------------- +Daniel J. Bernstein + +crypto_hash/sha256 +------------------ +Daniel J. Bernstein (wrapper around crypto_hashblocks/sha256) + +crypto_hash/sha512 +------------------ +Daniel J. Bernstein (wrapper around crypto_hashblocks/sha512) + +crypto_hashblocks/sha256 +------------------------ +Daniel J. Bernstein + +crypto_hashblocks/sha512 +------------------------ +Daniel J. Bernstein + +crypto_scalarmult/curve25519/ref +-------------------------------- +Matthew Dempsky (Mochi Media) + +crypto_scalarmult/curve25519/donna_c64 +-------------------------------------- +Adam Langley (Google) + +crypto_sign/ed25519 +------------------- +Daniel J. Bernstein +Niels Duif +Tanja Lange +lead: Peter Schwabe +Bo-Yin Yang + +crypto_stream/aes128ctr +----------------------- +Daniel J. Bernstein + +crypto_stream/aes256estream +--------------------------- +Hongjun Wu + +crypto_stream/salsa20 +--------------------- +Daniel J. Bernstein + +crypto_stream/salsa2012 +----------------------- +Daniel J. Bernstein + +crypto_stream/salsa208 +---------------------- +Daniel J. Bernstein + +crypto_stream/xsalsa20 +---------------------- +Daniel J. Bernstein + +crypto_shorthash/siphash24 +-------------------------- +Jean-Philippe Aumasson +Daniel J. Bernstein + +crypto_generichash/blake2b +-------------------------- +Jean-Philippe Aumasson +Samuel Neves +Zooko Wilcox-O'Hearn +Christian Winnerlein + +crypto_onetimeauth/poly1305/donna +--------------------------------- +Andrew "floodyberry" M. diff --git a/src/libsodium/ChangeLog b/src/libsodium/ChangeLog new file mode 100644 index 00000000..7d67f484 --- /dev/null +++ b/src/libsodium/ChangeLog @@ -0,0 +1,56 @@ + +* Version 0.4.3 + - crypto_sign_seedbytes() and crypto_sign_SEEDBYTES were added. + - crypto_onetimeauth_poly1305_implementation_name() was added. + - poly1305-ref has been replaced by a faster implementation, +Floodyberry's poly1305-donna-unrolled. + - Stackmarkings have been added to assembly code, for Hardened Gentoo. + - pkg-config can now be used in order to retrieve compilations flags for +using libsodium. + - crypto_stream_aes256estream_*() can now deal with unaligned input +on platforms that require word alignment. + - portability improvements. + +* Version 0.4.2 + - All NaCl constants are now also exposed as functions. + - The Android and iOS cross-compilation script have been improved. + - libsodium can now be cross-compiled to Windows from Linux. + - libsodium can now be compiled with emscripten. + - New convenience function (prototyped in utils.h): sodium_bin2hex(). + +* Version 0.4.1 + - sodium_version_*() functions were not exported in version 0.4. They +are now visible as intended. + - sodium_init() now calls randombytes_stir(). + - optimized assembly version of salsa20 is now used on amd64. + - further cleanups and enhanced compatibility with non-C99 compilers. + +* Version 0.4 + - Most constants and operations are now available as actual functions +instead of macros, making it easier to use from other languages. + - New operation: crypto_generichash, featuring a variable key size, a +variable output size, and a streaming API. Currently implemented using +Blake2b. + - The package can be compiled in a separate directory. + - aes128ctr functions are exported. + - Optimized versions of curve25519 (curve25519_donna_c64), poly1305 +(poly1305_53) and ed25519 (ed25519_ref10) are available. Optionally calling +sodium_init() once before using the library makes it pick the fastest +implementation. + - New convenience function: sodium_memzero() in order to securely +wipe a memory area. + - A whole bunch of cleanups and portability enhancements. + - On Windows, a .REF file is generated along with the shared library, +for use with Visual Studio. The installation path for these has become +$prefix/bin as expected by MingW. + +* Version 0.3 + - The crypto_shorthash operation has been added, implemented using +SipHash-2-4. + +* Version 0.2 + - crypto_sign_seed_keypair() has been added + +* Version 0.1 + - Initial release. + diff --git a/src/libsodium/LICENSE b/src/libsodium/LICENSE new file mode 100644 index 00000000..0502937f --- /dev/null +++ b/src/libsodium/LICENSE @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2013 + * Frank Denis <j at pureftpd dot org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ diff --git a/src/libsodium/Makefile.am b/src/libsodium/Makefile.am new file mode 100644 index 00000000..1202c4ec --- /dev/null +++ b/src/libsodium/Makefile.am @@ -0,0 +1,16 @@ +ACLOCAL_AMFLAGS = -I m4 + +EXTRA_DIST = \ + autogen.sh \ + LICENSE \ + README.markdown \ + THANKS + +SUBDIRS = \ + src \ + test + +if HAVE_PKG_CONFIG +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = @PACKAGE_NAME@.pc +endif diff --git a/src/libsodium/Makefile.in b/src/libsodium/Makefile.in new file mode 100644 index 00000000..f5737b4e --- /dev/null +++ b/src/libsodium/Makefile.in @@ -0,0 +1,880 @@ +# Makefile.in generated by automake 1.14 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = . +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/configure $(am__configure_deps) \ + $(srcdir)/libsodium.pc.in \ + $(top_srcdir)/src/libsodium/include/sodium/version.h.in \ + $(top_srcdir)/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h.in \ + $(top_srcdir)/src/libsodium/include/sodium/crypto_stream_salsa20.h.in \ + AUTHORS ChangeLog README THANKS compile config.guess \ + config.sub depcomp install-sh missing ltmain.sh +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ + $(top_srcdir)/m4/ax_check_link_flag.m4 \ + $(top_srcdir)/m4/ld-output-def.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = libsodium.pc \ + src/libsodium/include/sodium/version.h \ + src/libsodium/include/sodium/crypto_scalarmult_curve25519.h \ + src/libsodium/include/sodium/crypto_stream_salsa20.h +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgconfigdir)" +DATA = $(pkgconfig_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 +GZIP_ENV = --best +DIST_TARGETS = dist-bzip2 dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CWFLAGS = @CWFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_AMD64_ASM_V = @HAVE_AMD64_ASM_V@ +HAVE_CPUID_V = @HAVE_CPUID_V@ +HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@ +HAVE_TI_MODE_V = @HAVE_TI_MODE_V@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISODATE = @ISODATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_EXTRA_FLAGS = @LIBTOOL_EXTRA_FLAGS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SAFECODE_HOME = @SAFECODE_HOME@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SODIUM_LIBRARY_VERSION = @SODIUM_LIBRARY_VERSION@ +SODIUM_LIBRARY_VERSION_MAJOR = @SODIUM_LIBRARY_VERSION_MAJOR@ +SODIUM_LIBRARY_VERSION_MINOR = @SODIUM_LIBRARY_VERSION_MINOR@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ACLOCAL_AMFLAGS = -I m4 +EXTRA_DIST = \ + autogen.sh \ + LICENSE \ + README.markdown \ + THANKS + +SUBDIRS = \ + src \ + test + +@HAVE_PKG_CONFIG_TRUE@pkgconfigdir = $(libdir)/pkgconfig +@HAVE_PKG_CONFIG_TRUE@pkgconfig_DATA = @PACKAGE_NAME@.pc +all: all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): +libsodium.pc: $(top_builddir)/config.status $(srcdir)/libsodium.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +src/libsodium/include/sodium/version.h: $(top_builddir)/config.status $(top_srcdir)/src/libsodium/include/sodium/version.h.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +src/libsodium/include/sodium/crypto_scalarmult_curve25519.h: $(top_builddir)/config.status $(top_srcdir)/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +src/libsodium/include/sodium/crypto_stream_salsa20.h: $(top_builddir)/config.status $(top_srcdir)/src/libsodium/include/sodium/crypto_stream_salsa20.h.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__post_remove_distdir) +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-pkgconfigDATA + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ + dist-xz dist-zip distcheck distclean distclean-generic \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgconfigDATA install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-pkgconfigDATA + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/libsodium/README b/src/libsodium/README new file mode 100644 index 00000000..1dbff7a1 --- /dev/null +++ b/src/libsodium/README @@ -0,0 +1 @@ +See README.markdown diff --git a/src/libsodium/README.markdown b/src/libsodium/README.markdown new file mode 100644 index 00000000..dbe3f607 --- /dev/null +++ b/src/libsodium/README.markdown @@ -0,0 +1,219 @@ +[](https://travis-ci.org/jedisct1/libsodium?branch=master) + + +============ + +[NaCl](http://nacl.cr.yp.to/) (pronounced "salt") is a new easy-to-use +high-speed software library for network communication, encryption, +decryption, signatures, etc. + +NaCl's goal is to provide all of the core operations needed to build +higher-level cryptographic tools. + +Sodium is a portable, cross-compilable, installable, packageable +fork of NaCl, with a compatible API. + +## Portability + +In order to pick the fastest working implementation of each primitive, +NaCl performs tests and benchmarks at compile-time. Unfortunately, the +resulting library is not guaranteed to work on different hardware. + +Sodium performs tests at run-time, so that the same binary package can +still run everywhere. + +Sodium is tested on a variety of compilers and operating systems, +including Windows, iOS and Android. + +## Installation + +Sodium is a shared library with a machine-independent set of +headers, so that it can easily be used by 3rd party projects. + +The library is built using autotools, making it easy to package. + +Installation is trivial, and both compilation and testing can take +advantage of multiple CPU cores. + +Download a +[tarball of libsodium](https://download.libsodium.org/libsodium/releases/), +then follow the ritual: + + ./configure + make && make check && make install + +Pre-compiled Win32 packages are available for download at the same +location. + +Integrity of source tarballs can currently be checked using PGP or +verified DNS queries (`dig +dnssec +short txt <file>.download.libsodium.org` +returns the SHA256 of any file available for download). + +## Comparison with vanilla NaCl + +Sodium does not ship C++ bindings. These might be part of a distinct +package. + +The default public-key signature system in NaCl was a prototype that +shouldn't be used any more. + +Sodium ships with the SUPERCOP reference implementation of +[Ed25519](http://ed25519.cr.yp.to/), and uses this system by default +for `crypto_sign*` operations. + +For backward compatibility, the previous system is still compiled in, +as `crypto_sign_edwards25519sha512batch*`. + +## Additional features + +The Sodium library provides some convenience functions in order to retrieve +the current version of the package and of the shared library: + + const char *sodium_version_string(void); + const int sodium_library_version_major(void); + const int sodium_library_version_minor(void); + +Headers are installed in `${prefix}/include/sodium`. + +A convenience header includes everything you need to use the library: + + #include <sodium.h> + +This is not required, however, before any other libsodium function, you can +call: + + sodium_init(); + +This will pick optimized implementations of some primitives, if they +appear to work as expected after running some tests, and these will be +used for subsequent operations. It only need to be called once. + +This function is not thread-safe. No other Sodium functions should be +called until it successfully returns. In a multithreading environment, +if, for some reason, you really need to call `sodium_init()` while some +other Sodium functions may be running in different threads, add locks +accordingly (both around `sodium_init()` and around other functions). + +Sodium also provides helper functions to generate random numbers, +leveraging `/dev/urandom` or `/dev/random` on *nix and the cryptographic +service provider on Windows. The interface is similar to +`arc4random(3)`. It is `fork(2)`-safe but not thread-safe. This holds +true for `crypto_sign_keypair()` and `crypto_box_keypair()` as well. + + uint32_t randombytes_random(void); + +Return a random 32-bit unsigned value. + + void randombytes_stir(void); + +Generate a new key for the pseudorandom number generator. The file +descriptor for the entropy source is kept open, so that the generator +can be reseeded even in a chroot() jail. + + uint32_t randombytes_uniform(const uint32_t upper_bound); + +Return a value between 0 and upper_bound using a uniform distribution. + + void randombytes_buf(void * const buf, const size_t size); + +Fill the buffer `buf` with `size` random bytes. + + int randombytes_close(void); + +Close the file descriptor or the handle for the cryptographic service +provider. + +A custom implementation of these functions can be registered with +`randombytes_set_implementation()`. + +In addition, Sodium provides a function to securely wipe a memory +region: + + void sodium_memzero(void * const pnt, const size_t size); + +Warning: if a region has been allocated on the heap, you still have +to make sure that it can't get swapped to disk, possibly using +`mlock(2)`. + +In order to compare memory zones in constant time, Sodium provides: + + int sodium_memcmp(const void * const b1_, const void * const b2_, + size_t size); + +And a convenience function for converting a binary buffer to a +hexadecimal string: + + char * sodium_bin2hex(char * const hex, const size_t hexlen, + const unsigned char *bin, const size_t binlen); + +## New operations + +### crypto_shorthash + +A lot of applications and programming language implementations have +been recently found to be vulnerable to denial-of-service attacks when +a hash function with weak security guarantees, like Murmurhash 3, was +used to construct a hash table. + +In order to address this, Sodium provides the “shorthash†function, +currently implemented using SipHash-2-4. This very fast hash function +outputs short, but unpredictable (without knowing the secret key) +values suitable for picking a list in a hash table for a given key. + +See `crypto_shorthash.h` for details. + +### crypto_generichash + +This hash function provides: + +* A variable output length (up to `crypto_generichash_BYTES_MAX` bytes) +* A variable key length (from no key at all to + `crypto_generichash_KEYBYTES_MAX` bytes) +* A simple interface as well as a streaming interface. + +`crypto_generichash` is currently being implemented using +[Blake2](https://blake2.net/). + +## Constants available as functions + +In addition to constants for key sizes, output sizes and block sizes, +Sodium provides these values through function calls, so that using +them from different languages is easier. + +## Bindings for other languages + +* Erlang: [Erlang-NaCl](https://github.com/tonyg/erlang-nacl) +* Haskell: [Saltine](https://github.com/tel/saltine) +* Java: [Kalium](https://github.com/abstractj/kalium) +* Java JNI: [Kalium-JNI](https://github.com/joshjdevl/kalium-jni) +* Julia: [Sodium.jl](https://github.com/amitmurthy/Sodium.jl) +* Ocaml: [ocaml-sodium](https://github.com/dsheets/ocaml-sodium) +* Pharo/Squeak: [Crypto-NaCl](http://www.eighty-twenty.org/index.cgi/tech/smalltalk/nacl-for-squeak-and-pharo-20130601.html) +* PHP: [PHP-Sodium](https://github.com/alethia7/php-sodium) +* Python: [PyNaCl](https://github.com/dstufft/pynacl) +* Python: [PySodium](https://github.com/stef/pysodium) +* Racket: part of [CRESTaceans](https://github.com/mgorlick/CRESTaceans/tree/master/bindings/libsodium) +* Ruby: [RbNaCl](https://github.com/cryptosphere/rbnacl) +* Ruby: [Sodium](https://github.com/stouset/sodium) + +## CurveCP + +CurveCP tools are part of a different project, +[libchloride](https://github.com/jedisct1/libchloride). +If you are interested in an embeddable CurveCP implementation, take a +look at [libcurvecpr](https://github.com/impl/libcurvecpr). + +## Mailing list + +A mailing-list is available to discuss libsodium. + +In order to join, just send a random mail to `sodium-subscribe` {at} +`pureftpd`{dot}`org`. + +## License + +[ISC license](http://en.wikipedia.org/wiki/ISC_license). + +See the `COPYING` file for details, `AUTHORS` for designers and +implementors, and `THANKS` for contributors. + diff --git a/src/libsodium/THANKS b/src/libsodium/THANKS new file mode 100644 index 00000000..39443c60 --- /dev/null +++ b/src/libsodium/THANKS @@ -0,0 +1,17 @@ +@alethia7 +@joshjdevl +@neheb +Amit Murthy (@amitmurthy) +Bruno Oliveira (@abstractj) +Chris Rebert (@cvrebert) +Donald Stufft (@dstufft) +Douglas Campos (@qmx) +Jeroen Habraken (@VeXocide) +Joseph Abrahamson (@tel) +Kenneth Ballenegger (@kballenegger) +Michael Gorlick (@mgorlick) +Samuel Neves (@sneves) +Stefan Marsiske +Stephan Touset (@stouset) +Tony Arcieri (@bascule) +Tony Garnock-Jones (@tonyg) diff --git a/src/libsodium/aclocal.m4 b/src/libsodium/aclocal.m4 new file mode 100644 index 00000000..8153cd0b --- /dev/null +++ b/src/libsodium/aclocal.m4 @@ -0,0 +1,1214 @@ +# generated automatically by aclocal 1.14 -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.14' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.14], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.14])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# Figure out how to run the assembler. -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_AS +# ---------- +AC_DEFUN([AM_PROG_AS], +[# By default we simply use the C compiler to build assembly code. +AC_REQUIRE([AC_PROG_CC]) +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS +AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) +AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) +_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl +]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> +# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542> + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: <http://www.gnu.org/software/coreutils/>. + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +AC_DEFUN([AM_MAINTAINER_MODE], +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl +] +) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar <conftest.tar]) + AM_RUN_LOG([cat conftest.dir/file]) + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/ax_check_compile_flag.m4]) +m4_include([m4/ax_check_link_flag.m4]) +m4_include([m4/ld-output-def.m4]) +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) +m4_include([m4/pkg.m4]) diff --git a/src/libsodium/autogen.sh b/src/libsodium/autogen.sh new file mode 100755 index 00000000..3361b682 --- /dev/null +++ b/src/libsodium/autogen.sh @@ -0,0 +1,16 @@ +#! /bin/sh + +if [ -x "`which autoreconf 2>/dev/null`" ] ; then + exec autoreconf -ivf +fi + +if glibtoolize --version > /dev/null 2>&1; then + LIBTOOLIZE='glibtoolize' +else + LIBTOOLIZE='libtoolize' +fi + +$LIBTOOLIZE && \ +aclocal && \ +automake --add-missing --force-missing --include-deps && \ +autoconf diff --git a/src/libsodium/compile b/src/libsodium/compile new file mode 100755 index 00000000..531136b0 --- /dev/null +++ b/src/libsodium/compile @@ -0,0 +1,347 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2012-10-14.11; # UTC + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Written by Tom Tromey <tromey@cygnus.com>. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to <bug-automake@gnu.org> or send patches to +# <automake-patches@gnu.org>. + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/src/libsodium/config.guess b/src/libsodium/config.guess new file mode 100755 index 00000000..b79252d6 --- /dev/null +++ b/src/libsodium/config.guess @@ -0,0 +1,1558 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2013 Free Software Foundation, Inc. + +timestamp='2013-06-10' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches with a ChangeLog entry to config-patches@gnu.org. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2013 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include <features.h> + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include <stdio.h> /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <sys/systemcfg.h> + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include <stdlib.h> + #include <unistd.h> + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <unistd.h> + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + or1k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` + echo ${UNAME_MACHINE}-pc-isc$UNAME_REL + elif /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes <hewes@openmarket.com>. + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; +esac + +eval $set_cc_for_build +cat >$dummy.c <<EOF +#ifdef _SEQUENT_ +# include <sys/types.h> +# include <sys/utsname.h> +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include <sys/param.h> + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include <sys/param.h> +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 <<EOF +$0: unable to guess system type + +This script, last modified $timestamp, has failed to recognize +the operating system you are using. It is advised that you +download the most up to date version of the config scripts from + + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +and + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +If the version you run ($0) is already up to date, please +send the following data and any information you think might be +pertinent to <config-patches@gnu.org> in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/src/libsodium/config.sub b/src/libsodium/config.sub new file mode 100755 index 00000000..8b612ab8 --- /dev/null +++ b/src/libsodium/config.sub @@ -0,0 +1,1788 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2013 Free Software Foundation, Inc. + +timestamp='2013-04-24' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2013 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | be32 | be64 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | epiphany \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 \ + | or1k | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i386-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or1k-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/src/libsodium/configure b/src/libsodium/configure new file mode 100755 index 00000000..ef0cc2c4 --- /dev/null +++ b/src/libsodium/configure @@ -0,0 +1,17362 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for libsodium 0.4.3. +# +# Report bugs to <https://github.com/jedisct1/libsodium/issues>. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: https://github.com/jedisct1/libsodium/issues about your +$0: system, including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 </dev/null +exec 6>&1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='libsodium' +PACKAGE_TARNAME='libsodium' +PACKAGE_VERSION='0.4.3' +PACKAGE_STRING='libsodium 0.4.3' +PACKAGE_BUGREPORT='https://github.com/jedisct1/libsodium/issues' +PACKAGE_URL='https://github.com/jedisct1/libsodium' + +ac_unique_file="src/libsodium/sodium/version.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#ifdef HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# ifdef HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#ifdef HAVE_STRINGS_H +# include <strings.h> +#endif +#ifdef HAVE_INTTYPES_H +# include <inttypes.h> +#endif +#ifdef HAVE_STDINT_H +# include <stdint.h> +#endif +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +HAVE_LD_OUTPUT_DEF_FALSE +HAVE_LD_OUTPUT_DEF_TRUE +AS +LIBTOOL_EXTRA_FLAGS +HAVE_CPUID_V +HAVE_CPUID_FALSE +HAVE_CPUID_TRUE +HAVE_TI_MODE_V +HAVE_TI_MODE_FALSE +HAVE_TI_MODE_TRUE +HAVE_AMD64_ASM_V +HAVE_AMD64_ASM_FALSE +HAVE_AMD64_ASM_TRUE +LIBTOOL_DEPS +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +LIBTOOL +CWFLAGS +EGREP +GREP +CPP +am__fastdepCCAS_FALSE +am__fastdepCCAS_TRUE +CCASDEPMODE +CCASFLAGS +CCAS +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +HAVE_PKG_CONFIG +HAVE_PKG_CONFIG_FALSE +HAVE_PKG_CONFIG_TRUE +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +SAFECODE_HOME +DLL_VERSION +SODIUM_LIBRARY_VERSION +SODIUM_LIBRARY_VERSION_MINOR +SODIUM_LIBRARY_VERSION_MAJOR +ISODATE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_maintainer_mode +enable_dependency_tracking +enable_ssp +enable_asm +enable_pie +enable_blocking_random +with_safecode +enable_debug +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +with_sysroot +enable_libtool_lock +' + ac_precious_vars='build_alias +host_alias +target_alias +SAFECODE_HOME +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CCAS +CCASFLAGS +CPP +CWFLAGS +AR' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures libsodium 0.4.3 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/libsodium] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of libsodium 0.4.3:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-maintainer-mode + enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --disable-ssp Do not compile with -fstack-protector + --disable-asm Disable assembly implementations + --disable-pie Do not produce position independent executables + --enable-blocking-random + Use /dev/random instead of /dev/urandom + --enable-debug For maintainers only - please do not use + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-safecode For maintainers only - please do not use + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). + +Some influential environment variables: + SAFECODE_HOME + set to the safecode base directory + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + LIBS libraries to pass to the linker, e.g. -l<library> + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if + you have headers in a nonstandard directory <include dir> + CCAS assembler compiler command (defaults to CC) + CCASFLAGS assembler compiler flags (defaults to CFLAGS) + CPP C preprocessor + CWFLAGS define to compilation flags for generating extra warnings + AR path to the ar utility + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to <https://github.com/jedisct1/libsodium/issues>. +libsodium home page: <https://github.com/jedisct1/libsodium>. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +libsodium configure 0.4.3 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ----------------------------------------------------------- ## +## Report this to https://github.com/jedisct1/libsodium/issues ## +## ----------------------------------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case <limits.h> declares $2. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by libsodium $as_me 0.4.3, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +am__api_version='1.14' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='libsodium' + VERSION='0.4.3' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> +# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +$as_echo_n "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test $am_uid -le $am_max_uid; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + _am_tools=none + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +$as_echo_n "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test $am_gid -le $am_max_gid; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + _am_tools=none + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +$as_echo_n "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5 + ($am__untar <conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if ${am_cv_prog_tar_ustar+:} false; then : + $as_echo_n "(cached) " >&6 +else + am_cv_prog_tar_ustar=$_am_tool +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +$as_echo "$am_cv_prog_tar_ustar" >&6; } + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542> + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: <http://www.gnu.org/software/coreutils/>. + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + + +ISODATE=`date +%Y-%m-%d` + + +SODIUM_LIBRARY_VERSION_MAJOR=4 +SODIUM_LIBRARY_VERSION_MINOR=3 +DLL_VERSION=4 +SODIUM_LIBRARY_VERSION=7:0:3 +# | | | +# +------+ | +---+ +# | | | +# current:revision:age +# | | | +# | | +- increment if interfaces have been added +# | | set to zero if interfaces have been removed +# | | or changed +# | +- increment if source code has changed +# | set to zero if current is incremented +# +- increment if interfaces have been added, removed or changed + + + + + +LX_CFLAGS=${CFLAGS-NONE} + + +# Check whether --enable-ssp was given. +if test "${enable_ssp+set}" = set; then : + enableval=$enable_ssp; + if test "x$enableval" = "xno"; then : + + enable_ssp="no" + +else + + enable_ssp="yes" + +fi + +else + + enable_ssp="yes" + +fi + + +# Check whether --enable-asm was given. +if test "${enable_asm+set}" = set; then : + enableval=$enable_asm; + if test "x$enableval" = "xno"; then : + + enable_asm="no" + +else + + enable_asm="yes" + +fi + +else + + enable_asm="yes" + +fi + + +if test "x$EMSCRIPTEN" != "x"; then : + + enable_asm="no" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compiling to javascript - asm implementations disabled" >&5 +$as_echo "$as_me: WARNING: compiling to javascript - asm implementations disabled" >&2;} + +fi + +case $host in #( + x86_64-*-mingw* | x86_64-*-cygwin*) : + enable_asm="no" ;; #( + *) : + ;; +esac + +# Check whether --enable-pie was given. +if test "${enable_pie+set}" = set; then : + enableval=$enable_pie; enable_pie=$enableval +else + enable_pie="maybe" +fi + + +case $host_os in #( + mingw*) : + enable_pie="no" ;; #( + *) : + ;; +esac + +# Check whether --enable-blocking-random was given. +if test "${enable_blocking_random+set}" = set; then : + enableval=$enable_blocking_random; + if test "x$enableval" = "xyes"; then : + + +$as_echo "#define USE_BLOCKING_RANDOM 1" >>confdefs.h + + +fi + +fi + + + +# Check whether --with-safecode was given. +if test "${with_safecode+set}" = set; then : + withval=$with_safecode; if test "x$withval" = "xyes"; then : + + + : ${SAFECODE_HOME:=/opt/safecode} + LDFLAGS="$LDFLAGS -L${SAFECODE_HOME}/lib" + LIBS="$LIBS -lsc_dbg_rt -lpoolalloc_bitmap -lstdc++" + CFLAGS="$CFLAGS -fmemsafety" + +fi + +fi + + +# Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then : + enableval=$enable_debug; + if test "x$enableval" = "xyes"; then : + + if test "x$LX_CFLAGS" = "xNONE"; then : + + nxflags="" + for flag in `echo $CFLAGS`; do + case $flag in #( + -O*) : + ;; #( + -g*) : + ;; #( + *) : + as_fn_append nxflags " $flag" ;; #( + *) : + ;; +esac + done + CFLAGS="$nxflags -O0 -g3" + +fi + CPPFLAGS="$CPPFLAGS -DDEBUG=1" + +fi + +fi + + + + + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.25 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + if test "x$PKG_CONFIG" != "x"; then + HAVE_PKG_CONFIG_TRUE= + HAVE_PKG_CONFIG_FALSE='#' +else + HAVE_PKG_CONFIG_TRUE='#' + HAVE_PKG_CONFIG_FALSE= +fi + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 +$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } +if ${ac_cv_prog_cc_c99+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdbool.h> +#include <stdlib.h> +#include <wchar.h> +#include <stdio.h> + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +#define debug(...) fprintf (stderr, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + your preprocessor is broken; +#endif +#if BIG_OK +#else + your preprocessor is broken; +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\0'; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static void +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str; + int number; + float fnumber; + + while (*format) + { + switch (*format++) + { + case 's': // string + str = va_arg (args_copy, const char *); + break; + case 'd': // int + number = va_arg (args_copy, int); + break; + case 'f': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); +} + +int +main () +{ + + // Check bool. + _Bool success = false; + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + test_varargs ("s, d' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' + || dynamic_array[ni.number - 1] != 543); + + ; + return 0; +} +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c99" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c99" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c99" != xno; then : + +fi + + +# By default we simply use the C compiler to build assembly code. + +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS + + + +depcc="$CCAS" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CCAS_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CCAS_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CCAS_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } +CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then + am__fastdepCCAS_TRUE= + am__fastdepCCAS_FALSE='#' +else + am__fastdepCCAS_TRUE='#' + am__fastdepCCAS_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ctype.h> +#include <stdlib.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = xyes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "#define _MINIX 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if ${ac_cv_safe_to_define___extensions__+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h + + +CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fvisibility=hidden" >&5 +$as_echo_n "checking whether C compiler accepts -fvisibility=hidden... " >&6; } +if ${ax_cv_check_cflags___fvisibility_hidden+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -fvisibility=hidden" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___fvisibility_hidden=yes +else + ax_cv_check_cflags___fvisibility_hidden=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fvisibility_hidden" >&5 +$as_echo "$ax_cv_check_cflags___fvisibility_hidden" >&6; } +if test x"$ax_cv_check_cflags___fvisibility_hidden" = xyes; then : + CFLAGS="$CFLAGS -fvisibility=hidden" +else + : +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fPIC" >&5 +$as_echo_n "checking whether C compiler accepts -fPIC... " >&6; } +if ${ax_cv_check_cflags___fPIC+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -fPIC" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___fPIC=yes +else + ax_cv_check_cflags___fPIC=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fPIC" >&5 +$as_echo "$ax_cv_check_cflags___fPIC" >&6; } +if test x"$ax_cv_check_cflags___fPIC" = xyes; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -fPIC" >&5 +$as_echo_n "checking whether the linker accepts -fPIC... " >&6; } +if ${ax_cv_check_ldflags___fPIC+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS -fPIC" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U];if (fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_check_ldflags___fPIC=yes +else + ax_cv_check_ldflags___fPIC=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___fPIC" >&5 +$as_echo "$ax_cv_check_ldflags___fPIC" >&6; } +if test x"$ax_cv_check_ldflags___fPIC" = xyes; then : + CFLAGS="$CFLAGS -fPIC" + +else + : +fi + + +else + : +fi + + +if test "$enable_pie" != "no"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fPIE" >&5 +$as_echo_n "checking whether C compiler accepts -fPIE... " >&6; } +if ${ax_cv_check_cflags___fPIE+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -fPIE" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___fPIE=yes +else + ax_cv_check_cflags___fPIE=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fPIE" >&5 +$as_echo "$ax_cv_check_cflags___fPIE" >&6; } +if test x"$ax_cv_check_cflags___fPIE" = xyes; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -fPIE" >&5 +$as_echo_n "checking whether the linker accepts -fPIE... " >&6; } +if ${ax_cv_check_ldflags___fPIE+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS -fPIE" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U];if (fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_check_ldflags___fPIE=yes +else + ax_cv_check_ldflags___fPIE=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___fPIE" >&5 +$as_echo "$ax_cv_check_ldflags___fPIE" >&6; } +if test x"$ax_cv_check_ldflags___fPIE" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -pie" >&5 +$as_echo_n "checking whether the linker accepts -pie... " >&6; } +if ${ax_cv_check_ldflags___pie+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS -pie" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U];if (fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_check_ldflags___pie=yes +else + ax_cv_check_ldflags___pie=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___pie" >&5 +$as_echo "$ax_cv_check_ldflags___pie" >&6; } +if test x"$ax_cv_check_ldflags___pie" = xyes; then : + CFLAGS="$CFLAGS -fPIE" + LDFLAGS="$LDFLAGS -pie" +else + : +fi + + +else + : +fi + + +else + : +fi + + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fwrapv" >&5 +$as_echo_n "checking whether C compiler accepts -fwrapv... " >&6; } +if ${ax_cv_check_cflags___fwrapv+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -fwrapv" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___fwrapv=yes +else + ax_cv_check_cflags___fwrapv=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fwrapv" >&5 +$as_echo "$ax_cv_check_cflags___fwrapv" >&6; } +if test x"$ax_cv_check_cflags___fwrapv" = xyes; then : + CFLAGS="$CFLAGS -fwrapv" +else + : +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-strict-aliasing" >&5 +$as_echo_n "checking whether C compiler accepts -fno-strict-aliasing... " >&6; } +if ${ax_cv_check_cflags___fno_strict_aliasing+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -fno-strict-aliasing" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___fno_strict_aliasing=yes +else + ax_cv_check_cflags___fno_strict_aliasing=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_strict_aliasing" >&5 +$as_echo "$ax_cv_check_cflags___fno_strict_aliasing" >&6; } +if test x"$ax_cv_check_cflags___fno_strict_aliasing" = xyes; then : + CFLAGS="$CFLAGS -fno-strict-aliasing" +else + : +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-strict-overflow" >&5 +$as_echo_n "checking whether C compiler accepts -fno-strict-overflow... " >&6; } +if ${ax_cv_check_cflags___fno_strict_overflow+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -fno-strict-overflow" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___fno_strict_overflow=yes +else + ax_cv_check_cflags___fno_strict_overflow=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_strict_overflow" >&5 +$as_echo "$ax_cv_check_cflags___fno_strict_overflow" >&6; } +if test x"$ax_cv_check_cflags___fno_strict_overflow" = xyes; then : + CFLAGS="$CFLAGS -fno-strict-overflow" +else + : +fi + + +LIBTOOL_EXTRA_FLAGS="-version-info $SODIUM_LIBRARY_VERSION" + +case $host_os in #( + cygwin* | mingw* | pw32* | cegcc*) : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--dynamicbase" >&5 +$as_echo_n "checking whether the linker accepts -Wl,--dynamicbase... " >&6; } +if ${ax_cv_check_ldflags___Wl___dynamicbase+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,--dynamicbase" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U];if (fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_check_ldflags___Wl___dynamicbase=yes +else + ax_cv_check_ldflags___Wl___dynamicbase=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl___dynamicbase" >&5 +$as_echo "$ax_cv_check_ldflags___Wl___dynamicbase" >&6; } +if test x"$ax_cv_check_ldflags___Wl___dynamicbase" = xyes; then : + LDFLAGS="$LDFLAGS -Wl,--dynamicbase" +else + : +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--nxcompat" >&5 +$as_echo_n "checking whether the linker accepts -Wl,--nxcompat... " >&6; } +if ${ax_cv_check_ldflags___Wl___nxcompat+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,--nxcompat" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U];if (fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_check_ldflags___Wl___nxcompat=yes +else + ax_cv_check_ldflags___Wl___nxcompat=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl___nxcompat" >&5 +$as_echo "$ax_cv_check_ldflags___Wl___nxcompat" >&6; } +if test x"$ax_cv_check_ldflags___Wl___nxcompat" = xyes; then : + LDFLAGS="$LDFLAGS -Wl,--nxcompat" +else + : +fi + + ;; #( + *) : + ;; +esac + +if test "x$enable_ssp" != "xno"; then : + + +case $host_os in #( + cygwin* | mingw* | pw32* | cegcc*) : + ;; #( + dragonfly*) : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstack-protector" >&5 +$as_echo_n "checking whether C compiler accepts -fstack-protector... " >&6; } +if ${ax_cv_check_cflags___fstack_protector+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -fstack-protector" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___fstack_protector=yes +else + ax_cv_check_cflags___fstack_protector=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fstack_protector" >&5 +$as_echo "$ax_cv_check_cflags___fstack_protector" >&6; } +if test x"$ax_cv_check_cflags___fstack_protector" = xyes; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -fstack-protector" >&5 +$as_echo_n "checking whether the linker accepts -fstack-protector... " >&6; } +if ${ax_cv_check_ldflags___fstack_protector+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS -fstack-protector" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U];if (fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_check_ldflags___fstack_protector=yes +else + ax_cv_check_ldflags___fstack_protector=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___fstack_protector" >&5 +$as_echo "$ax_cv_check_ldflags___fstack_protector" >&6; } +if test x"$ax_cv_check_ldflags___fstack_protector" = xyes; then : + CFLAGS="$CFLAGS -fstack-protector" + +else + : +fi + + +else + : +fi + + ;; #( + *) : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstack-protector-all" >&5 +$as_echo_n "checking whether C compiler accepts -fstack-protector-all... " >&6; } +if ${ax_cv_check_cflags___fstack_protector_all+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -fstack-protector-all" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___fstack_protector_all=yes +else + ax_cv_check_cflags___fstack_protector_all=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fstack_protector_all" >&5 +$as_echo "$ax_cv_check_cflags___fstack_protector_all" >&6; } +if test x"$ax_cv_check_cflags___fstack_protector_all" = xyes; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -fstack-protector-all" >&5 +$as_echo_n "checking whether the linker accepts -fstack-protector-all... " >&6; } +if ${ax_cv_check_ldflags___fstack_protector_all+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS -fstack-protector-all" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U];if (fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_check_ldflags___fstack_protector_all=yes +else + ax_cv_check_ldflags___fstack_protector_all=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___fstack_protector_all" >&5 +$as_echo "$ax_cv_check_ldflags___fstack_protector_all" >&6; } +if test x"$ax_cv_check_ldflags___fstack_protector_all" = xyes; then : + CFLAGS="$CFLAGS -fstack-protector-all" + +else + : +fi + + +else + : +fi + + ;; #( + *) : + ;; +esac + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Winit-self" >&5 +$as_echo_n "checking whether C compiler accepts -Winit-self... " >&6; } +if ${ax_cv_check_cflags___Winit_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Winit-self" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___Winit_self=yes +else + ax_cv_check_cflags___Winit_self=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Winit_self" >&5 +$as_echo "$ax_cv_check_cflags___Winit_self" >&6; } +if test x"$ax_cv_check_cflags___Winit_self" = xyes; then : + CFLAGS="$CFLAGS -Winit-self" +else + : +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wwrite-strings" >&5 +$as_echo_n "checking whether C compiler accepts -Wwrite-strings... " >&6; } +if ${ax_cv_check_cflags___Wwrite_strings+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Wwrite-strings" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___Wwrite_strings=yes +else + ax_cv_check_cflags___Wwrite_strings=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Wwrite_strings" >&5 +$as_echo "$ax_cv_check_cflags___Wwrite_strings" >&6; } +if test x"$ax_cv_check_cflags___Wwrite_strings" = xyes; then : + CFLAGS="$CFLAGS -Wwrite-strings" +else + : +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wdiv-by-zero" >&5 +$as_echo_n "checking whether C compiler accepts -Wdiv-by-zero... " >&6; } +if ${ax_cv_check_cflags___Wdiv_by_zero+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Wdiv-by-zero" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___Wdiv_by_zero=yes +else + ax_cv_check_cflags___Wdiv_by_zero=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Wdiv_by_zero" >&5 +$as_echo "$ax_cv_check_cflags___Wdiv_by_zero" >&6; } +if test x"$ax_cv_check_cflags___Wdiv_by_zero" = xyes; then : + CFLAGS="$CFLAGS -Wdiv-by-zero" +else + : +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wsometimes-uninitialized" >&5 +$as_echo_n "checking whether C compiler accepts -Wsometimes-uninitialized... " >&6; } +if ${ax_cv_check_cflags___Wsometimes_uninitialized+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Wsometimes-uninitialized" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___Wsometimes_uninitialized=yes +else + ax_cv_check_cflags___Wsometimes_uninitialized=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Wsometimes_uninitialized" >&5 +$as_echo "$ax_cv_check_cflags___Wsometimes_uninitialized" >&6; } +if test x"$ax_cv_check_cflags___Wsometimes_uninitialized" = xyes; then : + CFLAGS="$CFLAGS -Wsometimes-uninitialized" +else + : +fi + + + + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wall" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wall" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wall... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wall" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wall" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wextra" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wextra" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wextra... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wextra" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wextra" +else + : +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clang" >&5 +$as_echo_n "checking for clang... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#ifndef __clang__ +be sad +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wno-unknown-warning-option" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wno-unknown-warning-option" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wno-unknown-warning-option... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wno-unknown-warning-option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wno-unknown-warning-option" +else + : +fi + + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wbad-function-cast" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wbad-function-cast" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wbad-function-cast... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wbad-function-cast" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wbad-function-cast" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wcast-align" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wcast-align" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wcast-align... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wcast-align" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wcast-align" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wcast-qual" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wcast-qual" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wcast-qual... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wcast-qual" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wcast-qual" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wchar-subscripts" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wchar-subscripts" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wchar-subscripts... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wchar-subscripts" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wchar-subscripts" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wcomment" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wcomment" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wcomment... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wcomment" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wcomment" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wfloat-equal" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wfloat-equal" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wfloat-equal... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wfloat-equal" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wfloat-equal" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wformat=2" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wformat=2" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wformat=2... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wformat=2" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wformat=2" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wimplicit" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wimplicit" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wimplicit... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wimplicit" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wimplicit" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wmissing-declarations" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wmissing-declarations" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wmissing-declarations... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wmissing-declarations" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wmissing-declarations" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wmissing-prototypes" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wmissing-prototypes" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wmissing-prototypes... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wmissing-prototypes" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wmissing-prototypes" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wnormalized=id" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wnormalized=id" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wnormalized=id... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wnormalized=id" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wnormalized=id" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Woverride-init" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Woverride-init" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Woverride-init... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Woverride-init" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Woverride-init" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wparentheses" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wparentheses" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wparentheses... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wparentheses" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wparentheses" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wpointer-arith" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wpointer-arith" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wpointer-arith... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wpointer-arith" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wpointer-arith" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wredundant-decls" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wredundant-decls" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wredundant-decls... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wredundant-decls" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wredundant-decls" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wstrict-prototypes" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wstrict-prototypes" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wstrict-prototypes... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wstrict-prototypes" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wstrict-prototypes" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wswitch-enum" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wswitch-enum" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wswitch-enum... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wswitch-enum" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wswitch-enum" +else + : +fi + +as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CWFLAGS -Wvariable-decl" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CWFLAGS -Wvariable-decl" >&5 +$as_echo_n "checking whether C compiler accepts $CWFLAGS -Wvariable-decl... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CWFLAGS -Wvariable-decl" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then : + CWFLAGS="$CWFLAGS -Wvariable-decl" +else + : +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,relro" >&5 +$as_echo_n "checking whether the linker accepts -Wl,-z,relro... " >&6; } +if ${ax_cv_check_ldflags___Wl__z_relro+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,relro" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U];if (fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_check_ldflags___Wl__z_relro=yes +else + ax_cv_check_ldflags___Wl__z_relro=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_relro" >&5 +$as_echo "$ax_cv_check_ldflags___Wl__z_relro" >&6; } +if test x"$ax_cv_check_ldflags___Wl__z_relro" = xyes; then : + LDFLAGS="$LDFLAGS -Wl,-z,relro" +else + : +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,now" >&5 +$as_echo_n "checking whether the linker accepts -Wl,-z,now... " >&6; } +if ${ax_cv_check_ldflags___Wl__z_now+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,now" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U];if (fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_check_ldflags___Wl__z_now=yes +else + ax_cv_check_ldflags___Wl__z_now=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_now" >&5 +$as_echo "$ax_cv_check_ldflags___Wl__z_now" >&6; } +if test x"$ax_cv_check_ldflags___Wl__z_now" = xyes; then : + LDFLAGS="$LDFLAGS -Wl,-z,now" +else + : +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,noexecstack" >&5 +$as_echo_n "checking whether the linker accepts -Wl,-z,noexecstack... " >&6; } +if ${ax_cv_check_ldflags___Wl__z_noexecstack+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,noexecstack" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +char x[42U];if (fgets(x,1000,stdin)) puts(x) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_check_ldflags___Wl__z_noexecstack=yes +else + ax_cv_check_ldflags___Wl__z_noexecstack=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_noexecstack" >&5 +$as_echo "$ax_cv_check_ldflags___Wl__z_noexecstack" >&6; } +if test x"$ax_cv_check_ldflags___Wl__z_noexecstack" = xyes; then : + LDFLAGS="$LDFLAGS -Wl,-z,noexecstack" +else + : +fi + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.2' +macro_revision='1.3337' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$lt_cv_path_LD" +if test -n "$LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + +for ac_header in emmintrin.h +do : + ac_fn_c_check_header_compile "$LINENO" "emmintrin.h" "ac_cv_header_emmintrin_h" " +#pragma GCC target(\"sse2\") + +" +if test "x$ac_cv_header_emmintrin_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_EMMINTRIN_H 1 +_ACEOF + +fi + +done + + +for ac_header in tmmintrin.h +do : + ac_fn_c_check_header_compile "$LINENO" "tmmintrin.h" "ac_cv_header_tmmintrin_h" " +#pragma GCC target(\"ssse3\") + +" +if test "x$ac_cv_header_tmmintrin_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_TMMINTRIN_H 1 +_ACEOF + +fi + +done + + +for ac_header in smmintrin.h +do : + ac_fn_c_check_header_compile "$LINENO" "smmintrin.h" "ac_cv_header_smmintrin_h" " +#pragma GCC target(\"sse4.1\") + +" +if test "x$ac_cv_header_smmintrin_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SMMINTRIN_H 1 +_ACEOF + +fi + +done + + +for ac_header in immintrin.h +do : + ac_fn_c_check_header_compile "$LINENO" "immintrin.h" "ac_cv_header_immintrin_h" " +#pragma GCC target(\"avx\") + +" +if test "x$ac_cv_header_immintrin_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_IMMINTRIN_H 1 +_ACEOF + +fi + +done + + +for ac_header in avxintrin.h +do : + ac_fn_c_check_header_compile "$LINENO" "avxintrin.h" "ac_cv_header_avxintrin_h" " +#pragma GCC target(\"avx\") + +" +if test "x$ac_cv_header_avxintrin_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_AVXINTRIN_H 1 +_ACEOF + +fi + +done + + +for ac_header in x86intrin.h +do : + ac_fn_c_check_header_compile "$LINENO" "x86intrin.h" "ac_cv_header_x86intrin_h" " +#pragma GCC target(\"xop\") + +" +if test "x$ac_cv_header_x86intrin_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_X86INTRIN_H 1 +_ACEOF + +fi + +done + + +for ac_header in wmmintrin.h +do : + ac_fn_c_check_header_compile "$LINENO" "wmmintrin.h" "ac_cv_header_wmmintrin_h" " +#pragma GCC target(\"aes\") + +" +if test "x$ac_cv_header_wmmintrin_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_WMMINTRIN_H 1 +_ACEOF + +fi + +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for access to floating-point rounding mode" >&5 +$as_echo_n "checking for access to floating-point rounding mode... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include <fenv.h> + #pragma STDC FENV_ACCESS ON + +int +main () +{ + + const int previous_rounding_mode = fegetround(); + fesetround(FE_TONEAREST); + fesetround(previous_rounding_mode); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_FENV_H 1" >>confdefs.h + + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <sys/types.h> + #include <sys/param.h> + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <sys/types.h> + #include <sys/param.h> + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <limits.h> + +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <limits.h> + +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + +$as_echo "#define NATIVE_BIG_ENDIAN 1" >>confdefs.h +;; #( + no) + +$as_echo "#define NATIVE_LITTLE_ENDIAN 1" >>confdefs.h + ;; #( + universal) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: universal endianess" >&5 +$as_echo "$as_me: WARNING: universal endianess" >&2;} + + ;; #( + *) + as_fn_error $? "unknown endianess" "$LINENO" 5 ;; + esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __STDC_LIMIT_MACROS is required" >&5 +$as_echo_n "checking whether __STDC_LIMIT_MACROS is required... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <limits.h> +#include <stdint.h> + +int +main () +{ + +(void) SIZE_MAX; +(void) UINT64_MAX; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CPPFLAGS="$CPPFLAGS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +HAVE_AMD64_ASM_V=0 +if test "$enable_asm" != "no"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can assemble basic amd64 code" >&5 +$as_echo_n "checking whether we can assemble basic amd64 code... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ + +#if defined(__amd64) || defined(__amd64__) || defined(__x86_64__) +/* neat */ +#else +# error !amd64 +#endif +__asm__("pxor %xmm12,%xmm6"); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_AMD64_ASM 1" >>confdefs.h + + HAVE_AMD64_ASM_V=1 +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + if test $HAVE_AMD64_ASM_V = 1; then + HAVE_AMD64_ASM_TRUE= + HAVE_AMD64_ASM_FALSE='#' +else + HAVE_AMD64_ASM_TRUE='#' + HAVE_AMD64_ASM_FALSE= +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for 128-bit arithmetic" >&5 +$as_echo_n "checking for 128-bit arithmetic... " >&6; } +HAVE_TI_MODE_V=0 +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef __GNUC__ +# error mode(TI) is a gcc extension +#endif +#if defined(__clang__) && !defined(__x86_64__) +# error clang doesn't properly compile smult_curve25519_donna_c64.c +#endif +#include <stdint.h> +typedef unsigned uint128_t __attribute__((mode(TI))); +void fcontract(uint128_t *t) { + *t += 0x8000000000000 - 1; +} + +int +main () +{ + +(void) fcontract; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_TI_MODE 1" >>confdefs.h + + HAVE_TI_MODE_V=1 +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $HAVE_TI_MODE_V = 1; then + HAVE_TI_MODE_TRUE= + HAVE_TI_MODE_FALSE='#' +else + HAVE_TI_MODE_TRUE='#' + HAVE_TI_MODE_FALSE= +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cpuid instruction" >&5 +$as_echo_n "checking for cpuid instruction... " >&6; } +HAVE_CPUID_V=0 +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +__asm__("movl %ebx,%esi\n" + "cpuid\n" + "movl %esi,%ebx"); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_CPUID 1" >>confdefs.h + + HAVE_CPUID_V=1 +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $HAVE_CPUID_V = 1; then + HAVE_CPUID_TRUE= + HAVE_CPUID_FALSE='#' +else + HAVE_CPUID_TRUE='#' + HAVE_CPUID_FALSE= +fi + + + +case $host_cpu in #( + i*86 | x86_64 | powerpc* | s390*) : + { $as_echo "$as_me:${as_lineno-$LINENO}: data alignment is not required on this target" >&5 +$as_echo "$as_me: data alignment is not required on this target" >&6;} ;; #( + *) : + { $as_echo "$as_me:${as_lineno-$LINENO}: data alignment is required on this target" >&5 +$as_echo "$as_me: data alignment is required on this target" >&6;} + +$as_echo "#define CPU_ALIGNED_ACCESS_REQUIRED 1" >>confdefs.h + + ;; #( + *) : + ;; +esac + + +ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" +if test "x$ac_cv_func_clock_gettime" = xyes; then : + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 +$as_echo_n "checking for clock_gettime in -lrt... " >&6; } +if ${ac_cv_lib_rt_clock_gettime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (); +int +main () +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_rt_clock_gettime=yes +else + ac_cv_lib_rt_clock_gettime=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 +$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } +if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBRT 1 +_ACEOF + + LIBS="-lrt $LIBS" + +fi + +fi + +ac_fn_c_check_func "$LINENO" "fegetenv" "ac_cv_func_fegetenv" +if test "x$ac_cv_func_fegetenv" = xyes; then : + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fegetenv in -lm" >&5 +$as_echo_n "checking for fegetenv in -lm... " >&6; } +if ${ac_cv_lib_m_fegetenv+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char fegetenv (); +int +main () +{ +return fegetenv (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_m_fegetenv=yes +else + ac_cv_lib_m_fegetenv=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_fegetenv" >&5 +$as_echo "$ac_cv_lib_m_fegetenv" >&6; } +if test "x$ac_cv_lib_m_fegetenv" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBM 1 +_ACEOF + + LIBS="-lm $LIBS" + +fi + +fi + + +for ac_func in SecureZeroMemory +do : + ac_fn_c_check_func "$LINENO" "SecureZeroMemory" "ac_cv_func_SecureZeroMemory" +if test "x$ac_cv_func_SecureZeroMemory" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SECUREZEROMEMORY 1 +_ACEOF + +fi +done + + + + + + +enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AS="${ac_tool_prefix}as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +$as_echo "$AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AS="as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +$as_echo "$ac_ct_AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; +esac + +test -z "$AS" && AS=as + + + + + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc/ld supports -Wl,--output-def" >&5 +$as_echo_n "checking if gcc/ld supports -Wl,--output-def... " >&6; } +if ${gl_cv_ld_output_def+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$enable_shared" = no; then + gl_cv_ld_output_def="not needed, shared libraries are disabled" + else + gl_ldflags_save=$LDFLAGS + LDFLAGS="-Wl,--output-def,conftest.def" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_ld_output_def=yes +else + gl_cv_ld_output_def=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + rm -f conftest.def + LDFLAGS="$gl_ldflags_save" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_ld_output_def" >&5 +$as_echo "$gl_cv_ld_output_def" >&6; } + if test "x$gl_cv_ld_output_def" = "xyes"; then + HAVE_LD_OUTPUT_DEF_TRUE= + HAVE_LD_OUTPUT_DEF_FALSE='#' +else + HAVE_LD_OUTPUT_DEF_TRUE='#' + HAVE_LD_OUTPUT_DEF_FALSE= +fi + + + + + + +if test "x$PKG_CONFIG" != "x"; then : + + ac_config_files="$ac_config_files libsodium.pc" + + +fi +ac_config_files="$ac_config_files Makefile src/Makefile src/libsodium/Makefile src/libsodium/include/Makefile src/libsodium/include/sodium/version.h src/libsodium/include/sodium/crypto_scalarmult_curve25519.h src/libsodium/include/sodium/crypto_stream_salsa20.h test/default/Makefile test/Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_PKG_CONFIG_TRUE}" && test -z "${HAVE_PKG_CONFIG_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PKG_CONFIG\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_AMD64_ASM_TRUE}" && test -z "${HAVE_AMD64_ASM_FALSE}"; then + as_fn_error $? "conditional \"HAVE_AMD64_ASM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_TI_MODE_TRUE}" && test -z "${HAVE_TI_MODE_FALSE}"; then + as_fn_error $? "conditional \"HAVE_TI_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CPUID_TRUE}" && test -z "${HAVE_CPUID_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CPUID\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_LD_OUTPUT_DEF_TRUE}" && test -z "${HAVE_LD_OUTPUT_DEF_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LD_OUTPUT_DEF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by libsodium $as_me 0.4.3, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Configuration commands: +$config_commands + +Report bugs to <https://github.com/jedisct1/libsodium/issues>. +libsodium home page: <https://github.com/jedisct1/libsodium>." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +libsodium config.status 0.4.3 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +nm_file_list_spec \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +AS; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "libsodium.pc") CONFIG_FILES="$CONFIG_FILES libsodium.pc" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/libsodium/Makefile") CONFIG_FILES="$CONFIG_FILES src/libsodium/Makefile" ;; + "src/libsodium/include/Makefile") CONFIG_FILES="$CONFIG_FILES src/libsodium/include/Makefile" ;; + "src/libsodium/include/sodium/version.h") CONFIG_FILES="$CONFIG_FILES src/libsodium/include/sodium/version.h" ;; + "src/libsodium/include/sodium/crypto_scalarmult_curve25519.h") CONFIG_FILES="$CONFIG_FILES src/libsodium/include/sodium/crypto_scalarmult_curve25519.h" ;; + "src/libsodium/include/sodium/crypto_stream_salsa20.h") CONFIG_FILES="$CONFIG_FILES src/libsodium/include/sodium/crypto_stream_salsa20.h" ;; + "test/default/Makefile") CONFIG_FILES="$CONFIG_FILES test/default/Makefile" ;; + "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' <conf$$subs.awk | sed ' +/^[^""]/{ + N + s/\n// +} +' >>$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="" + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Assembler program. +AS=$lt_AS + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/src/libsodium/configure.ac b/src/libsodium/configure.ac new file mode 100644 index 00000000..2cd07186 --- /dev/null +++ b/src/libsodium/configure.ac @@ -0,0 +1,400 @@ +AC_PREREQ([2.65]) +AC_INIT([libsodium],[0.4.3], + [https://github.com/jedisct1/libsodium/issues], + [libsodium], + [https://github.com/jedisct1/libsodium]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR([src/libsodium/sodium/version.c]) +AC_CANONICAL_HOST +AM_INIT_AUTOMAKE([1.11 dist-bzip2 tar-ustar foreign subdir-objects]) +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) +AM_MAINTAINER_MODE +AM_DEP_TRACK + +AC_SUBST(VERSION) +ISODATE=`date +%Y-%m-%d` +AC_SUBST(ISODATE) + +SODIUM_LIBRARY_VERSION_MAJOR=4 +SODIUM_LIBRARY_VERSION_MINOR=3 +DLL_VERSION=4 +SODIUM_LIBRARY_VERSION=7:0:3 +# | | | +# +------+ | +---+ +# | | | +# current:revision:age +# | | | +# | | +- increment if interfaces have been added +# | | set to zero if interfaces have been removed +# | | or changed +# | +- increment if source code has changed +# | set to zero if current is incremented +# +- increment if interfaces have been added, removed or changed +AC_SUBST(SODIUM_LIBRARY_VERSION_MAJOR) +AC_SUBST(SODIUM_LIBRARY_VERSION_MINOR) +AC_SUBST(SODIUM_LIBRARY_VERSION) +AC_SUBST(DLL_VERSION) + +LX_CFLAGS=${CFLAGS-NONE} + +dnl Switches + +AC_ARG_ENABLE(ssp, +[AS_HELP_STRING(--disable-ssp,Do not compile with -fstack-protector)], +[ + AS_IF([test "x$enableval" = "xno"], [ + enable_ssp="no" + ], [ + enable_ssp="yes" + ]) +], +[ + enable_ssp="yes" +]) + +AC_ARG_ENABLE(asm, +[AS_HELP_STRING(--disable-asm,Disable assembly implementations)], +[ + AS_IF([test "x$enableval" = "xno"], [ + enable_asm="no" + ], [ + enable_asm="yes" + ]) +], +[ + enable_asm="yes" +]) + +AS_IF([test "x$EMSCRIPTEN" != "x"],[ + enable_asm="no" + AC_MSG_WARN([compiling to javascript - asm implementations disabled]) +]) + +AS_CASE([$host], [x86_64-*-mingw* | x86_64-*-cygwin*], [enable_asm="no"]) + +AC_ARG_ENABLE(pie, +[AS_HELP_STRING(--disable-pie,Do not produce position independent executables)], + enable_pie=$enableval, enable_pie="maybe") + +AS_CASE([$host_os], [mingw*], [enable_pie="no"]) + +AC_ARG_ENABLE(blocking-random, +[AS_HELP_STRING(--enable-blocking-random,Use /dev/random instead of /dev/urandom)], +[ + AS_IF([test "x$enableval" = "xyes"], [ + AC_DEFINE([USE_BLOCKING_RANDOM], [1], [Use blocking random]) + ]) +]) + +AC_ARG_WITH(safecode, +[AS_HELP_STRING(--with-safecode,For maintainers only - please do not use)], +[AS_IF([test "x$withval" = "xyes"], [ + AC_ARG_VAR([SAFECODE_HOME], [set to the safecode base directory]) + : ${SAFECODE_HOME:=/opt/safecode} + LDFLAGS="$LDFLAGS -L${SAFECODE_HOME}/lib" + LIBS="$LIBS -lsc_dbg_rt -lpoolalloc_bitmap -lstdc++" + CFLAGS="$CFLAGS -fmemsafety" + ]) +]) + +AC_ARG_ENABLE(debug, +[AS_HELP_STRING(--enable-debug,For maintainers only - please do not use)], +[ + AS_IF([test "x$enableval" = "xyes"], [ + AS_IF([test "x$LX_CFLAGS" = "xNONE"], [ + nxflags="" + for flag in `echo $CFLAGS`; do + AS_CASE([$flag], + [-O*], [ ], + [-g*], [ ], + [*], [AS_VAR_APPEND([nxflags], [" $flag"])]) + done + CFLAGS="$nxflags -O0 -g3" + ]) + CPPFLAGS="$CPPFLAGS -DDEBUG=1" + ]) +]) + +AC_SUBST([MAINT]) + +dnl Checks + +PKG_PROG_PKG_CONFIG([0.25]) +AM_CONDITIONAL([HAVE_PKG_CONFIG], [test "x$PKG_CONFIG" != "x"]) +AC_SUBST(HAVE_PKG_CONFIG) + +AC_PROG_CC_C99 +AM_PROG_AS +AC_USE_SYSTEM_EXTENSIONS +CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2" + +AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], + [CFLAGS="$CFLAGS -fvisibility=hidden"]) + +AX_CHECK_COMPILE_FLAG([-fPIC], [ + AX_CHECK_LINK_FLAG([-fPIC], + [CFLAGS="$CFLAGS -fPIC"] + ) +]) + +AS_IF([test "$enable_pie" != "no"],[ + AX_CHECK_COMPILE_FLAG([-fPIE], [ + AX_CHECK_LINK_FLAG([-fPIE], + [AX_CHECK_LINK_FLAG([-pie], + [CFLAGS="$CFLAGS -fPIE" + LDFLAGS="$LDFLAGS -pie"]) + ]) + ]) +]) + +AX_CHECK_COMPILE_FLAG([-fwrapv], [CFLAGS="$CFLAGS -fwrapv"]) +AX_CHECK_COMPILE_FLAG([-fno-strict-aliasing], [CFLAGS="$CFLAGS -fno-strict-aliasing"]) +AX_CHECK_COMPILE_FLAG([-fno-strict-overflow], [CFLAGS="$CFLAGS -fno-strict-overflow"]) + +LIBTOOL_EXTRA_FLAGS="-version-info $SODIUM_LIBRARY_VERSION" + +AS_CASE([$host_os], + [cygwin* | mingw* | pw32* | cegcc*], [ + AX_CHECK_LINK_FLAG([-Wl,--dynamicbase], [LDFLAGS="$LDFLAGS -Wl,--dynamicbase"]) + AX_CHECK_LINK_FLAG([-Wl,--nxcompat], [LDFLAGS="$LDFLAGS -Wl,--nxcompat"]) + ]) + +AS_IF([test "x$enable_ssp" != "xno"],[ + +AS_CASE([$host_os], + [cygwin* | mingw* | pw32* | cegcc*], [ ], + [dragonfly*], [ + AX_CHECK_COMPILE_FLAG([-fstack-protector], [ + AX_CHECK_LINK_FLAG([-fstack-protector], + [CFLAGS="$CFLAGS -fstack-protector"] + ) + ]) + ], + [*], [ + AX_CHECK_COMPILE_FLAG([-fstack-protector-all], [ + AX_CHECK_LINK_FLAG([-fstack-protector-all], + [CFLAGS="$CFLAGS -fstack-protector-all"] + ) + ]) + ]) +]) + +AX_CHECK_COMPILE_FLAG([-Winit-self], [CFLAGS="$CFLAGS -Winit-self"]) +AX_CHECK_COMPILE_FLAG([-Wwrite-strings], [CFLAGS="$CFLAGS -Wwrite-strings"]) +AX_CHECK_COMPILE_FLAG([-Wdiv-by-zero], [CFLAGS="$CFLAGS -Wdiv-by-zero"]) +AX_CHECK_COMPILE_FLAG([-Wsometimes-uninitialized], [CFLAGS="$CFLAGS -Wsometimes-uninitialized"]) + +AC_ARG_VAR([CWFLAGS], [define to compilation flags for generating extra warnings]) + +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wall], [CWFLAGS="$CWFLAGS -Wall"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wextra], [CWFLAGS="$CWFLAGS -Wextra"]) + +AC_MSG_CHECKING(for clang) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ +#ifndef __clang__ +be sad +#endif +]])], + [AC_MSG_RESULT(yes) + AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wno-unknown-warning-option], + [CWFLAGS="$CWFLAGS -Wno-unknown-warning-option"]) + ], + [AC_MSG_RESULT(no) +]) + +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wbad-function-cast], [CWFLAGS="$CWFLAGS -Wbad-function-cast"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wcast-align], [CWFLAGS="$CWFLAGS -Wcast-align"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wcast-qual], [CWFLAGS="$CWFLAGS -Wcast-qual"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wchar-subscripts], [CWFLAGS="$CWFLAGS -Wchar-subscripts"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wcomment], [CWFLAGS="$CWFLAGS -Wcomment"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wfloat-equal], [CWFLAGS="$CWFLAGS -Wfloat-equal"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wformat=2], [CWFLAGS="$CWFLAGS -Wformat=2"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wimplicit], [CWFLAGS="$CWFLAGS -Wimplicit"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wmissing-declarations], [CWFLAGS="$CWFLAGS -Wmissing-declarations"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wmissing-prototypes], [CWFLAGS="$CWFLAGS -Wmissing-prototypes"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wnormalized=id], [CWFLAGS="$CWFLAGS -Wnormalized=id"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Woverride-init], [CWFLAGS="$CWFLAGS -Woverride-init"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wparentheses], [CWFLAGS="$CWFLAGS -Wparentheses"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wpointer-arith], [CWFLAGS="$CWFLAGS -Wpointer-arith"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wredundant-decls], [CWFLAGS="$CWFLAGS -Wredundant-decls"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wstrict-prototypes], [CWFLAGS="$CWFLAGS -Wstrict-prototypes"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wswitch-enum], [CWFLAGS="$CWFLAGS -Wswitch-enum"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wvariable-decl], [CWFLAGS="$CWFLAGS -Wvariable-decl"]) + +AX_CHECK_LINK_FLAG([-Wl,-z,relro], [LDFLAGS="$LDFLAGS -Wl,-z,relro"]) +AX_CHECK_LINK_FLAG([-Wl,-z,now], [LDFLAGS="$LDFLAGS -Wl,-z,now"]) +AX_CHECK_LINK_FLAG([-Wl,-z,noexecstack], [LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"]) + +LT_INIT +AC_SUBST(LIBTOOL_DEPS) + +AC_ARG_VAR([AR], [path to the ar utility]) +AC_CHECK_TOOL([AR], [ar], [ar]) + +dnl Checks for headers +AC_CHECK_HEADERS([emmintrin.h], [], [], [ +#pragma GCC target("sse2") +]) + +AC_CHECK_HEADERS([tmmintrin.h], [], [], [ +#pragma GCC target("ssse3") +]) + +AC_CHECK_HEADERS([smmintrin.h], [], [], [ +#pragma GCC target("sse4.1") +]) + +AC_CHECK_HEADERS([immintrin.h], [], [], [ +#pragma GCC target("avx") +]) + +AC_CHECK_HEADERS([avxintrin.h], [], [], [ +#pragma GCC target("avx") +]) + +AC_CHECK_HEADERS([x86intrin.h], [], [], [ +#pragma GCC target("xop") +]) + +AC_CHECK_HEADERS([wmmintrin.h], [], [], [ +#pragma GCC target("aes") +]) + +AC_MSG_CHECKING(for access to floating-point rounding mode) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <fenv.h> + #pragma STDC FENV_ACCESS ON +]], [[ + const int previous_rounding_mode = fegetround(); + fesetround(FE_TONEAREST); + fesetround(previous_rounding_mode); +]])], +[AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_FENV_H], [1], [floating-point rounding mode is accessible]) +], +[AC_MSG_RESULT(no)]) + +dnl Checks for typedefs, structures, and compiler characteristics. + +AC_C_BIGENDIAN( + AC_DEFINE(NATIVE_BIG_ENDIAN, 1, [machine is bigendian]), + AC_DEFINE(NATIVE_LITTLE_ENDIAN, 1, [machine is littleendian]), + AC_MSG_ERROR([unknown endianess]), + AC_MSG_WARN([universal endianess]) +) + +AC_MSG_CHECKING(whether __STDC_LIMIT_MACROS is required) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include <limits.h> +#include <stdint.h> +]], [[ +(void) SIZE_MAX; +(void) UINT64_MAX; +]])], + [AC_MSG_RESULT(no)], + [AC_MSG_RESULT(yes) + CPPFLAGS="$CPPFLAGS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS" +]) + +HAVE_AMD64_ASM_V=0 +AS_IF([test "$enable_asm" != "no"],[ + AC_MSG_CHECKING(whether we can assemble basic amd64 code) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + ]], [[ +#if defined(__amd64) || defined(__amd64__) || defined(__x86_64__) +/* neat */ +#else +# error !amd64 +#endif +__asm__("pxor %xmm12,%xmm6"); +]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_AMD64_ASM], [1], [basic amd64 code can be assembled]) + HAVE_AMD64_ASM_V=1], + [AC_MSG_RESULT(no)]) +]) +AM_CONDITIONAL([HAVE_AMD64_ASM], [test $HAVE_AMD64_ASM_V = 1]) +AC_SUBST(HAVE_AMD64_ASM_V) + +AC_MSG_CHECKING(for 128-bit arithmetic) +HAVE_TI_MODE_V=0 +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#ifndef __GNUC__ +# error mode(TI) is a gcc extension +#endif +#if defined(__clang__) && !defined(__x86_64__) +# error clang doesn't properly compile smult_curve25519_donna_c64.c +#endif +#include <stdint.h> +typedef unsigned uint128_t __attribute__((mode(TI))); +void fcontract(uint128_t *t) { + *t += 0x8000000000000 - 1; +} +]], [[ +(void) fcontract; +]])], +[AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_TI_MODE], [1], [gcc TI mode is available]) + HAVE_TI_MODE_V=1], +[AC_MSG_RESULT(no)]) +AM_CONDITIONAL([HAVE_TI_MODE], [test $HAVE_TI_MODE_V = 1]) +AC_SUBST(HAVE_TI_MODE_V) + +AC_MSG_CHECKING(for cpuid instruction) +HAVE_CPUID_V=0 +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[ +__asm__("movl %ebx,%esi\n" + "cpuid\n" + "movl %esi,%ebx"); +]])], +[AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_CPUID], [1], [cpuid instruction is available]) + HAVE_CPUID_V=1], +[AC_MSG_RESULT(no)]) +AM_CONDITIONAL([HAVE_CPUID], [test $HAVE_CPUID_V = 1]) +AC_SUBST(HAVE_CPUID_V) + +AS_CASE([$host_cpu], + [i*86 | x86_64 | powerpc* | s390*], + [AC_MSG_NOTICE([data alignment is not required on this target])], + [*], + [AC_MSG_NOTICE([data alignment is required on this target]) + AC_DEFINE([CPU_ALIGNED_ACCESS_REQUIRED], [1], [data alignment is required])] +) + +dnl Checks for functions and headers + +AC_CHECK_FUNC(clock_gettime, , [AC_CHECK_LIB(rt, clock_gettime)]) +AC_CHECK_FUNC(fegetenv, , [AC_CHECK_LIB(m, fegetenv)]) + +AC_CHECK_FUNCS([SecureZeroMemory]) + +AC_SUBST([LIBTOOL_EXTRA_FLAGS]) + +dnl Libtool. + +LT_INIT([dlopen]) +AC_LIBTOOL_WIN32_DLL +gl_LD_OUTPUT_DEF + +dnl Output. + +AH_VERBATIM([NDEBUG], [/* Never ever ignore assertions */ +#ifdef NDEBUG +#/**/undef/**/ NDEBUG +#endif]) + +AS_IF([test "x$PKG_CONFIG" != "x"], [ + AC_CONFIG_FILES([libsodium.pc]) +]) +AC_CONFIG_FILES([Makefile + src/Makefile + src/libsodium/Makefile + src/libsodium/include/Makefile + src/libsodium/include/sodium/version.h + src/libsodium/include/sodium/crypto_scalarmult_curve25519.h + src/libsodium/include/sodium/crypto_stream_salsa20.h + test/default/Makefile + test/Makefile + ]) +AC_OUTPUT diff --git a/src/libsodium/depcomp b/src/libsodium/depcomp new file mode 100755 index 00000000..4ebd5b3a --- /dev/null +++ b/src/libsodium/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2013-05-30.07; # UTC + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/src/libsodium/install-sh b/src/libsodium/install-sh new file mode 100755 index 00000000..377bb868 --- /dev/null +++ b/src/libsodium/install-sh @@ -0,0 +1,527 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2011-11-20.07; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/src/libsodium/libsodium.pc.in b/src/libsodium/libsodium.pc.in new file mode 100644 index 00000000..c1d43725 --- /dev/null +++ b/src/libsodium/libsodium.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: @PACKAGE_NAME@ +Version: @PACKAGE_VERSION@ +Description: A portable, cross-compilable, installable, packageable fork of NaCl, with a compatible API. + +Libs: -L${libdir} -lsodium +Cflags: -I${includedir} diff --git a/src/libsodium/ltmain.sh b/src/libsodium/ltmain.sh new file mode 100644 index 00000000..63ae69dc --- /dev/null +++ b/src/libsodium/ltmain.sh @@ -0,0 +1,9655 @@ + +# libtool (GNU libtool) 2.4.2 +# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to <bug-libtool@gnu.org>. +# GNU libtool home page: <http://www.gnu.org/software/libtool/>. +# General help using GNU software: <http://www.gnu.org/gethelp/>. + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.4.2 +TIMESTAMP="" +package_revision=1.3337 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# NLS nuisances: We save the old values to restore during execute mode. +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +$lt_unset CDPATH + + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + + + +: ${CP="cp -f"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname may be replaced by extended shell implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} + +# The name of this program: +func_dirname_and_basename "$progpath" +progname=$func_basename_result + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "$my_tmpdir" +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. +func_help () +{ + $opt_debug + + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ + p + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $opt_debug + + func_error "missing argument for $1." + exit_cmd=exit +} + + +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' + + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: + + + + + +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" + +# Global variables. +nonopt= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "${1}=\$${1}\${2}" +} # func_append may be replaced by extended shell implementation + +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ + func_quote_for_eval "${2}" + eval "${1}=\$${1}\\ \$func_quote_for_eval_result" +} # func_append_quoted may be replaced by extended shell implementation + + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "${@}"` +} # func_arith may be replaced by extended shell implementation + + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac + + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +func_append preserve_args " $opt" + ;; + --no-warning|--no-warn) + opt_warning=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done + + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi + + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE +} + + + + +## ----------- ## +## Main. ## +## ----------- ## + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T <<EOF +# $write_libobj - a libtool object file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object=$write_lobj + +# Name of the non-PIC object +non_pic_object=$write_oldobj + +EOF + $MV "${write_libobj}T" "${write_libobj}" + } +} + + +################################################## +# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # +################################################## + +# func_convert_core_file_wine_to_w32 ARG +# Helper function used by file name conversion functions when $build is *nix, +# and $host is mingw, cygwin, or some other w32 environment. Relies on a +# correctly configured wine environment available, with the winepath program +# in $build's $PATH. +# +# ARG is the $build file name to be converted to w32 format. +# Result is available in $func_convert_core_file_wine_to_w32_result, and will +# be empty on error (or when ARG is empty) +func_convert_core_file_wine_to_w32 () +{ + $opt_debug + func_convert_core_file_wine_to_w32_result="$1" + if test -n "$1"; then + # Unfortunately, winepath does not exit with a non-zero error code, so we + # are forced to check the contents of stdout. On the other hand, if the + # command is not found, the shell will set an exit code of 127 and print + # *an error message* to stdout. So we must check for both error code of + # zero AND non-empty stdout, which explains the odd construction: + func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + func_append_quoted lastarg "$arg" + done + IFS="$save_ifs" + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with \`-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from \`$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$opt_mode'" + ;; + esac + + echo + $ECHO "Try \`$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen <import library>. + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 </dev/null >/dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat <<EOF + +/* $cwrappersource - temporary wrapper executable for $objdir/$outputname + Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION + + The $output program cannot be directly executed until all the libtool + libraries that it depends on are installed. + + This wrapper executable should never be moved out of the build directory. + If it is, it will not operate correctly. +*/ +EOF + cat <<"EOF" +#ifdef _MSC_VER +# define _CRT_SECURE_NO_DEPRECATE 1 +#endif +#include <stdio.h> +#include <stdlib.h> +#ifdef _MSC_VER +# include <direct.h> +# include <process.h> +# include <io.h> +#else +# include <unistd.h> +# include <stdint.h> +# ifdef __CYGWIN__ +# include <io.h> +# endif +#endif +#include <malloc.h> +#include <stdarg.h> +#include <assert.h> +#include <string.h> +#include <ctype.h> +#include <errno.h> +#include <fcntl.h> +#include <sys/stat.h> + +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <<EOF +volatile const char * MAGIC_EXE = "$magic_exe"; +const char * LIB_PATH_VARNAME = "$shlibpath_var"; +EOF + + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + func_to_host_path "$temp_rpath" + cat <<EOF +const char * LIB_PATH_VALUE = "$func_to_host_path_result"; +EOF + else + cat <<"EOF" +const char * LIB_PATH_VALUE = ""; +EOF + fi + + if test -n "$dllsearchpath"; then + func_to_host_path "$dllsearchpath:" + cat <<EOF +const char * EXE_PATH_VARNAME = "PATH"; +const char * EXE_PATH_VALUE = "$func_to_host_path_result"; +EOF + else + cat <<"EOF" +const char * EXE_PATH_VARNAME = ""; +const char * EXE_PATH_VALUE = ""; +EOF + fi + + if test "$fast_install" = yes; then + cat <<EOF +const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ +EOF + else + cat <<EOF +const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ +EOF + fi + + + cat <<"EOF" + +#define LTWRAPPER_OPTION_PREFIX "--lt-" + +static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; +static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; +static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; + +int +main (int argc, char *argv[]) +{ + char **newargz; + int newargc; + char *tmp_pathspec; + char *actual_cwrapper_path; + char *actual_cwrapper_name; + char *target_name; + char *lt_argv_zero; + intptr_t rval = 127; + + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + newargz = XMALLOC (char *, argc + 1); + + /* very simple arg parsing; don't want to rely on getopt + * also, copy all non cwrapper options to newargz, except + * argz[0], which is handled differently + */ + newargc=0; + for (i = 1; i < argc; i++) + { + if (strcmp (argv[i], dumpscript_opt) == 0) + { +EOF + case "$host" in + *mingw* | *cygwin* ) + # make stdout use "unix" line endings + echo " setmode(1,_O_BINARY);" + ;; + esac + + cat <<"EOF" + lt_dump_script (stdout); + return 0; + } + if (strcmp (argv[i], debug_opt) == 0) + { + lt_debug = 1; + continue; + } + if (strcmp (argv[i], ltwrapper_option_prefix) == 0) + { + /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX + namespace, but it is not one of the ones we know about and + have already dealt with, above (inluding dump-script), then + report an error. Otherwise, targets might begin to believe + they are allowed to use options in the LTWRAPPER_OPTION_PREFIX + namespace. The first time any user complains about this, we'll + need to make LTWRAPPER_OPTION_PREFIX a configure-time option + or a configure.ac-settable value. + */ + lt_fatal (__FILE__, __LINE__, + "unrecognized %s option: '%s'", + ltwrapper_option_prefix, argv[i]); + } + /* otherwise ... */ + newargz[++newargc] = xstrdup (argv[i]); + } + newargz[++newargc] = NULL; + +EOF + cat <<EOF + /* The GNU banner must be the first non-error debug message */ + lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); +EOF + cat <<"EOF" + lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); + lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); + + tmp_pathspec = find_executable (argv[0]); + if (tmp_pathspec == NULL) + lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); + lt_debugprintf (__FILE__, __LINE__, + "(main) found exe (before symlink chase) at: %s\n", + tmp_pathspec); + + actual_cwrapper_path = chase_symlinks (tmp_pathspec); + lt_debugprintf (__FILE__, __LINE__, + "(main) found exe (after symlink chase) at: %s\n", + actual_cwrapper_path); + XFREE (tmp_pathspec); + + actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); + strendzap (actual_cwrapper_path, actual_cwrapper_name); + + /* wrapper name transforms */ + strendzap (actual_cwrapper_name, ".exe"); + tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); + XFREE (actual_cwrapper_name); + actual_cwrapper_name = tmp_pathspec; + tmp_pathspec = 0; + + /* target_name transforms -- use actual target program name; might have lt- prefix */ + target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); + strendzap (target_name, ".exe"); + tmp_pathspec = lt_extend_str (target_name, ".exe", 1); + XFREE (target_name); + target_name = tmp_pathspec; + tmp_pathspec = 0; + + lt_debugprintf (__FILE__, __LINE__, + "(main) libtool target name: %s\n", + target_name); +EOF + + cat <<EOF + newargz[0] = + XMALLOC (char, (strlen (actual_cwrapper_path) + + strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); + strcpy (newargz[0], actual_cwrapper_path); + strcat (newargz[0], "$objdir"); + strcat (newargz[0], "/"); +EOF + + cat <<"EOF" + /* stop here, and copy so we don't have to do this twice */ + tmp_pathspec = xstrdup (newargz[0]); + + /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ + strcat (newargz[0], actual_cwrapper_name); + + /* DO want the lt- prefix here if it exists, so use target_name */ + lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); + XFREE (tmp_pathspec); + tmp_pathspec = NULL; +EOF + + case $host_os in + mingw*) + cat <<"EOF" + { + char* p; + while ((p = strchr (newargz[0], '\\')) != NULL) + { + *p = '/'; + } + while ((p = strchr (lt_argv_zero, '\\')) != NULL) + { + *p = '/'; + } + } +EOF + ;; + esac + + cat <<"EOF" + XFREE (target_name); + XFREE (actual_cwrapper_path); + XFREE (actual_cwrapper_name); + + lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ + lt_setenv ("DUALCASE", "1"); /* for MSK sh */ + /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must + be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) + because on Windows, both *_VARNAMEs are PATH but uninstalled + libraries must come first. */ + lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); + lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); + + lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", + nonnull (lt_argv_zero)); + for (i = 0; i < newargc; i++) + { + lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", + i, nonnull (newargz[i])); + } + +EOF + + case $host_os in + mingw*) + cat <<"EOF" + /* execv doesn't actually work on mingw as expected on unix */ + newargz = prepare_spawn (newargz); + rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); + if (rval == -1) + { + /* failed to start process */ + lt_debugprintf (__FILE__, __LINE__, + "(main) failed to launch target \"%s\": %s\n", + lt_argv_zero, nonnull (strerror (errno))); + return 127; + } + return rval; +EOF + ;; + *) + cat <<"EOF" + execv (lt_argv_zero, newargz); + return rval; /* =127, but avoids unused variable warning */ +EOF + ;; + esac + + cat <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void *p = (void *) malloc (num); + if (!p) + lt_fatal (__FILE__, __LINE__, "memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), + string) : NULL; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char) name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable (const char *path) +{ + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps ; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + else + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + echo + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$opt_mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$absdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$opt_mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|qnx|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + func_append verstring ":${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + func_append libobjs " $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$opt_mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c <<EOF + int main() { return 0; } +EOF + $opt_dry_run || $RM conftest + if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then + ldd_output=`ldd conftest` + for i in $deplibs; do + case $i in + -l*) + func_stripname -l '' "$i" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $i "*) + func_append newdeplibs " $i" + i="" + ;; + esac + fi + if test -n "$i" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` + set dummy $deplib_matches; shift + deplib_match=$1 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + func_append newdeplibs " $i" + else + droppeddeps=yes + echo + $ECHO "*** Warning: dynamic linker does not accept needed library $i." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which I believe you do not have" + echo "*** because a test_compile did reveal that the linker did not use it for" + echo "*** its dynamic dependency list that programs get resolved with at runtime." + fi + fi + ;; + *) + func_append newdeplibs " $i" + ;; + esac + done + else + # Error occurred in the first compile. Let's try to salvage + # the situation: Compile a separate program for each library. + for i in $deplibs; do + case $i in + -l*) + func_stripname -l '' "$i" + name=$func_stripname_result + $opt_dry_run || $RM conftest + if $LTCC $LTCFLAGS -o conftest conftest.c $i; then + ldd_output=`ldd conftest` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $i "*) + func_append newdeplibs " $i" + i="" + ;; + esac + fi + if test -n "$i" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` + set dummy $deplib_matches; shift + deplib_match=$1 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + func_append newdeplibs " $i" + else + droppeddeps=yes + echo + $ECHO "*** Warning: dynamic linker does not accept needed library $i." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because a test_compile did reveal that the linker did not use this one" + echo "*** as a dynamic dependency that programs can get resolved with at runtime." + fi + fi + else + droppeddeps=yes + echo + $ECHO "*** Warning! Library $i is needed by this library but I was not able to" + echo "*** make it link in! You will probably need to install it or some" + echo "*** library that it depends on before this library will be fully" + echo "*** functional. Installing it before continuing would be even better." + fi + ;; + *) + func_append newdeplibs " $i" + ;; + esac + done + fi + ;; + file_magic*) + set dummy $deplibs_check_method; shift + file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + if test -n "$file_magic_glob"; then + libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` + else + libnameglob=$libname + fi + test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + if test "$want_nocaseglob" = yes; then + shopt -s nocaseglob + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd1 in $cmds; do + IFS="$save_ifs" + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + func_append oldobjs " $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=yes ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + odir="$objdir" + else + odir="$dir/$objdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$opt_mode" = uninstall && odir="$dir" + + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case "$opt_mode" in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$opt_mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + func_append rmfiles " $odir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$opt_mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/src/libsodium/m4/ax_check_compile_flag.m4 b/src/libsodium/m4/ax_check_compile_flag.m4 new file mode 100644 index 00000000..af1b556b --- /dev/null +++ b/src/libsodium/m4/ax_check_compile_flag.m4 @@ -0,0 +1,73 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the current language's compiler +# or gives an error. (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the current language's default +# flags (e.g. CFLAGS) when the check is done. The check is thus made with +# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to +# force the compiler to issue an error when a bad flag is given. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de> +# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com> +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 2 + +AC_DEFUN([AX_CHECK_COMPILE_FLAG], +[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl +AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ + ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], + [[char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x)]])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) +AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_COMPILE_FLAGS diff --git a/src/libsodium/m4/ax_check_link_flag.m4 b/src/libsodium/m4/ax_check_link_flag.m4 new file mode 100644 index 00000000..5895fa3d --- /dev/null +++ b/src/libsodium/m4/ax_check_link_flag.m4 @@ -0,0 +1,72 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the linker or gives an error. +# (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the linker's default flags +# when the check is done. The check is thus made with the flags: "LDFLAGS +# EXTRA-FLAGS FLAG". This can for example be used to force the linker to +# issue an error when a bad flag is given. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de> +# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com> +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 2 + +AC_DEFUN([AX_CHECK_LINK_FLAG], +[AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl +AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [ + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS $4 $1" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], + [[char x[42U];if (fgets(x,1000,stdin)) puts(x)]])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + LDFLAGS=$ax_check_save_flags]) +AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_LINK_FLAGS diff --git a/src/libsodium/m4/ld-output-def.m4 b/src/libsodium/m4/ld-output-def.m4 new file mode 100644 index 00000000..59895bc2 --- /dev/null +++ b/src/libsodium/m4/ld-output-def.m4 @@ -0,0 +1,29 @@ +# ld-output-def.m4 serial 2 +dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Simon Josefsson + +# gl_LD_OUTPUT_DEF() +# ------------- +# Check if linker supports -Wl,--output-def and define automake +# conditional HAVE_LD_OUTPUT_DEF if it is. +AC_DEFUN([gl_LD_OUTPUT_DEF], +[ + AC_CACHE_CHECK([if gcc/ld supports -Wl,--output-def], + [gl_cv_ld_output_def], + [if test "$enable_shared" = no; then + gl_cv_ld_output_def="not needed, shared libraries are disabled" + else + gl_ldflags_save=$LDFLAGS + LDFLAGS="-Wl,--output-def,conftest.def" + AC_LINK_IFELSE([AC_LANG_PROGRAM([])], + [gl_cv_ld_output_def=yes], + [gl_cv_ld_output_def=no]) + rm -f conftest.def + LDFLAGS="$gl_ldflags_save" + fi]) + AM_CONDITIONAL([HAVE_LD_OUTPUT_DEF], test "x$gl_cv_ld_output_def" = "xyes") +]) diff --git a/src/libsodium/m4/libtool.m4 b/src/libsodium/m4/libtool.m4 new file mode 100644 index 00000000..44e0ecff --- /dev/null +++ b/src/libsodium/m4/libtool.m4 @@ -0,0 +1,7982 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 57 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to <bug-libtool@gnu.org>." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_REPLACE_SHELLFNS + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$lt_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +_LT_PATH_LD_GNU +AC_SUBST([LD]) + +_LT_TAGDECL([], [LD], [1], [The linker used to build libraries]) +])# LT_PATH_LD + +# Old names: +AU_ALIAS([AM_PROG_LD], [LT_PATH_LD]) +AU_ALIAS([AC_PROG_LD], [LT_PATH_LD]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_LD], []) +dnl AC_DEFUN([AC_PROG_LD], []) + + +# _LT_PATH_LD_GNU +#- -------------- +m4_defun([_LT_PATH_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac]) +with_gnu_ld=$lt_cv_prog_gnu_ld +])# _LT_PATH_LD_GNU + + +# _LT_CMD_RELOAD +# -------------- +# find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +m4_defun([_LT_CMD_RELOAD], +[AC_CACHE_CHECK([for $LD option to reload object files], + lt_cv_ld_reload_flag, + [lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac +_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl +_LT_TAGDECL([], [reload_cmds], [2])dnl +])# _LT_CMD_RELOAD + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) + + +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) + + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) + + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi + +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) + + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/src/libsodium/m4/ltoptions.m4 b/src/libsodium/m4/ltoptions.m4 new file mode 100644 index 00000000..5d9acd8e --- /dev/null +++ b/src/libsodium/m4/ltoptions.m4 @@ -0,0 +1,384 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/src/libsodium/m4/ltsugar.m4 b/src/libsodium/m4/ltsugar.m4 new file mode 100644 index 00000000..9000a057 --- /dev/null +++ b/src/libsodium/m4/ltsugar.m4 @@ -0,0 +1,123 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/src/libsodium/m4/ltversion.m4 b/src/libsodium/m4/ltversion.m4 new file mode 100644 index 00000000..07a8602d --- /dev/null +++ b/src/libsodium/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 3337 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.2' +macro_revision='1.3337' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/src/libsodium/m4/lt~obsolete.m4 b/src/libsodium/m4/lt~obsolete.m4 new file mode 100644 index 00000000..c573da90 --- /dev/null +++ b/src/libsodium/m4/lt~obsolete.m4 @@ -0,0 +1,98 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/src/libsodium/m4/pkg.m4 b/src/libsodium/m4/pkg.m4 new file mode 100644 index 00000000..c5b26b52 --- /dev/null +++ b/src/libsodium/m4/pkg.m4 @@ -0,0 +1,214 @@ +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 1 (pkg-config-0.24) +# +# Copyright © 2004 Scott James Remnant <scott@netsplit.com>. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +# only at the first occurence in configure.ac, so if the first place +# it's called might be skipped (such as if it is within an "if", you +# have to call PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])# PKG_CHECK_MODULES + + +# PKG_INSTALLDIR(DIRECTORY) +# ------------------------- +# Substitutes the variable pkgconfigdir as the location where a module +# should install pkg-config .pc files. By default the directory is +# $libdir/pkgconfig, but the default can be changed by passing +# DIRECTORY. The user can override through the --with-pkgconfigdir +# parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) dnl PKG_INSTALLDIR + + +# PKG_NOARCH_INSTALLDIR(DIRECTORY) +# ------------------------- +# Substitutes the variable noarch_pkgconfigdir as the location where a +# module should install arch-independent pkg-config .pc files. By +# default the directory is $datadir/pkgconfig, but the default can be +# changed by passing DIRECTORY. The user can override through the +# --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) dnl PKG_NOARCH_INSTALLDIR + + +# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------- +# Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])# PKG_CHECK_VAR diff --git a/src/libsodium/missing b/src/libsodium/missing new file mode 100755 index 00000000..cdea5149 --- /dev/null +++ b/src/libsodium/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2012-06-26.16; # UTC + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to <bug-automake@gnu.org>." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'automa4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/src/libsodium/src/Makefile.am b/src/libsodium/src/Makefile.am new file mode 100644 index 00000000..64445045 --- /dev/null +++ b/src/libsodium/src/Makefile.am @@ -0,0 +1,3 @@ + +SUBDIRS = \ + libsodium diff --git a/src/libsodium/src/Makefile.in b/src/libsodium/src/Makefile.in new file mode 100644 index 00000000..f058b607 --- /dev/null +++ b/src/libsodium/src/Makefile.in @@ -0,0 +1,626 @@ +# Makefile.in generated by automake 1.14 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ + $(top_srcdir)/m4/ax_check_link_flag.m4 \ + $(top_srcdir)/m4/ld-output-def.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CWFLAGS = @CWFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_AMD64_ASM_V = @HAVE_AMD64_ASM_V@ +HAVE_CPUID_V = @HAVE_CPUID_V@ +HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@ +HAVE_TI_MODE_V = @HAVE_TI_MODE_V@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISODATE = @ISODATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_EXTRA_FLAGS = @LIBTOOL_EXTRA_FLAGS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SAFECODE_HOME = @SAFECODE_HOME@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SODIUM_LIBRARY_VERSION = @SODIUM_LIBRARY_VERSION@ +SODIUM_LIBRARY_VERSION_MAJOR = @SODIUM_LIBRARY_VERSION_MAJOR@ +SODIUM_LIBRARY_VERSION_MINOR = @SODIUM_LIBRARY_VERSION_MINOR@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = \ + libsodium + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/libsodium/src/libsodium/Makefile.am b/src/libsodium/src/libsodium/Makefile.am new file mode 100644 index 00000000..124091d6 --- /dev/null +++ b/src/libsodium/src/libsodium/Makefile.am @@ -0,0 +1,227 @@ +lib_LTLIBRARIES = \ + libsodium.la + +libsodium_la_SOURCES = \ + crypto_auth/crypto_auth.c \ + crypto_auth/hmacsha256/auth_hmacsha256_api.c \ + crypto_auth/hmacsha256/ref/api.h \ + crypto_auth/hmacsha256/ref/hmac_hmacsha256.c \ + crypto_auth/hmacsha256/ref/verify_hmacsha256.c \ + crypto_auth/hmacsha512256/auth_hmacsha512256_api.c \ + crypto_auth/hmacsha512256/ref/api.h \ + crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c \ + crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c \ + crypto_box/crypto_box.c \ + crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c \ + crypto_box/curve25519xsalsa20poly1305/ref/api.h \ + crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c \ + crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c \ + crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c \ + crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c \ + crypto_core/hsalsa20/ref2/core_hsalsa20.c \ + crypto_core/hsalsa20/core_hsalsa20_api.c \ + crypto_core/hsalsa20/ref2/api.h \ + crypto_core/salsa20/ref/core_salsa20.c \ + crypto_core/salsa20/core_salsa20_api.c \ + crypto_core/salsa20/ref/api.h \ + crypto_core/salsa2012/ref/core_salsa2012.c \ + crypto_core/salsa2012/core_salsa2012_api.c \ + crypto_core/salsa2012/ref/api.h \ + crypto_core/salsa208/ref/core_salsa208.c \ + crypto_core/salsa208/core_salsa208_api.c \ + crypto_core/salsa208/ref/api.h \ + crypto_generichash/crypto_generichash.c \ + crypto_generichash/blake2/generichash_blake2_api.c \ + crypto_generichash/blake2/ref/api.h \ + crypto_generichash/blake2/ref/blake2-impl.h \ + crypto_generichash/blake2/ref/blake2.h \ + crypto_generichash/blake2/ref/blake2b-ref.c \ + crypto_generichash/blake2/ref/generichash_blake2b.c \ + crypto_hash/crypto_hash.c \ + crypto_hash/sha256/hash_sha256_api.c \ + crypto_hash/sha256/ref/api.h \ + crypto_hash/sha256/ref/hash_sha256.c \ + crypto_hash/sha512/hash_sha512_api.c \ + crypto_hash/sha512/ref/api.h \ + crypto_hash/sha512/ref/hash_sha512.c \ + crypto_hashblocks/sha256/ref/blocks_sha256.c \ + crypto_hashblocks/sha256/hashblocks_sha256_api.c \ + crypto_hashblocks/sha256/ref/api.h \ + crypto_hashblocks/sha512/ref/blocks_sha512.c \ + crypto_hashblocks/sha512/hashblocks_sha512_api.c \ + crypto_hashblocks/sha512/ref/api.h \ + crypto_onetimeauth/crypto_onetimeauth.c \ + crypto_onetimeauth/poly1305/onetimeauth_poly1305.c \ + crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c \ + crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c \ + crypto_onetimeauth/poly1305/53/api.h \ + crypto_onetimeauth/poly1305/53/auth_poly1305_53.c \ + crypto_onetimeauth/poly1305/53/verify_poly1305_53.c \ + crypto_onetimeauth/poly1305/donna/api.h \ + crypto_onetimeauth/poly1305/donna/portable-jane.h \ + crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c \ + crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c \ + crypto_scalarmult/crypto_scalarmult.c \ + crypto_secretbox/crypto_secretbox.c \ + crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c \ + crypto_secretbox/xsalsa20poly1305/ref/api.h \ + crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c \ + crypto_shorthash/crypto_shorthash.c \ + crypto_shorthash/siphash24/shorthash_siphash24_api.c \ + crypto_shorthash/siphash24/ref/api.h \ + crypto_shorthash/siphash24/ref/shorthash_siphash24.c \ + crypto_sign/crypto_sign.c \ + crypto_sign/ed25519/ref10/base.h \ + crypto_sign/ed25519/ref10/base2.h \ + crypto_sign/ed25519/sign_ed25519_api.c \ + crypto_sign/ed25519/ref10/api.h \ + crypto_sign/ed25519/ref10/d.h \ + crypto_sign/ed25519/ref10/d2.h \ + crypto_sign/ed25519/ref10/fe.h \ + crypto_sign/ed25519/ref10/fe_0.c \ + crypto_sign/ed25519/ref10/fe_1.c \ + crypto_sign/ed25519/ref10/fe_add.c \ + crypto_sign/ed25519/ref10/fe_cmov.c \ + crypto_sign/ed25519/ref10/fe_copy.c \ + crypto_sign/ed25519/ref10/fe_frombytes.c \ + crypto_sign/ed25519/ref10/fe_invert.c \ + crypto_sign/ed25519/ref10/fe_isnegative.c \ + crypto_sign/ed25519/ref10/fe_isnonzero.c \ + crypto_sign/ed25519/ref10/fe_mul.c \ + crypto_sign/ed25519/ref10/fe_neg.c \ + crypto_sign/ed25519/ref10/fe_pow22523.c \ + crypto_sign/ed25519/ref10/fe_sq.c \ + crypto_sign/ed25519/ref10/fe_sq2.c \ + crypto_sign/ed25519/ref10/fe_sub.c \ + crypto_sign/ed25519/ref10/fe_tobytes.c \ + crypto_sign/ed25519/ref10/ge.h \ + crypto_sign/ed25519/ref10/ge_add.c \ + crypto_sign/ed25519/ref10/ge_add.h \ + crypto_sign/ed25519/ref10/ge_double_scalarmult.c \ + crypto_sign/ed25519/ref10/ge_frombytes.c \ + crypto_sign/ed25519/ref10/ge_madd.c \ + crypto_sign/ed25519/ref10/ge_madd.h \ + crypto_sign/ed25519/ref10/ge_msub.c \ + crypto_sign/ed25519/ref10/ge_msub.h \ + crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c \ + crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c \ + crypto_sign/ed25519/ref10/ge_p2_0.c \ + crypto_sign/ed25519/ref10/ge_p2_dbl.c \ + crypto_sign/ed25519/ref10/ge_p2_dbl.h \ + crypto_sign/ed25519/ref10/ge_p3_0.c \ + crypto_sign/ed25519/ref10/ge_p3_dbl.c \ + crypto_sign/ed25519/ref10/ge_p3_to_cached.c \ + crypto_sign/ed25519/ref10/ge_p3_to_p2.c \ + crypto_sign/ed25519/ref10/ge_p3_tobytes.c \ + crypto_sign/ed25519/ref10/ge_precomp_0.c \ + crypto_sign/ed25519/ref10/ge_scalarmult_base.c \ + crypto_sign/ed25519/ref10/ge_sub.c \ + crypto_sign/ed25519/ref10/ge_sub.h \ + crypto_sign/ed25519/ref10/ge_tobytes.c \ + crypto_sign/ed25519/ref10/keypair.c \ + crypto_sign/ed25519/ref10/open.c \ + crypto_sign/ed25519/ref10/pow22523.h \ + crypto_sign/ed25519/ref10/pow225521.h \ + crypto_sign/ed25519/ref10/sc.h \ + crypto_sign/ed25519/ref10/sc_muladd.c \ + crypto_sign/ed25519/ref10/sc_reduce.c \ + crypto_sign/ed25519/ref10/sign.c \ + crypto_sign/ed25519/ref10/sqrtm1.h \ + crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c \ + crypto_sign/edwards25519sha512batch/ref/api.h \ + crypto_sign/edwards25519sha512batch/ref/fe25519.h \ + crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c \ + crypto_sign/edwards25519sha512batch/ref/ge25519.h \ + crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c \ + crypto_sign/edwards25519sha512batch/ref/sc25519.h \ + crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c \ + crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c \ + crypto_stream/crypto_stream.c \ + crypto_stream/aes128ctr/portable/afternm_aes128ctr.c \ + crypto_stream/aes128ctr/stream_aes128ctr_api.c \ + crypto_stream/aes128ctr/portable/api.h \ + crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c \ + crypto_stream/aes128ctr/portable/common.h \ + crypto_stream/aes128ctr/portable/common_aes128ctr.c \ + crypto_stream/aes128ctr/portable/consts.h \ + crypto_stream/aes128ctr/portable/consts_aes128ctr.c \ + crypto_stream/aes128ctr/portable/int128.h \ + crypto_stream/aes128ctr/portable/int128_aes128ctr.c \ + crypto_stream/aes128ctr/portable/stream_aes128ctr.c \ + crypto_stream/aes128ctr/portable/types.h \ + crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c \ + crypto_stream/aes256estream/hongjun/aes-table.h \ + crypto_stream/aes256estream/hongjun/aes256-ctr.c \ + crypto_stream/aes256estream/hongjun/aes256.h \ + crypto_stream/aes256estream/stream_aes256estream_api.c \ + crypto_stream/aes256estream/hongjun/api.h \ + crypto_stream/aes256estream/hongjun/ecrypt-sync.h \ + crypto_stream/salsa2012/stream_salsa2012_api.c \ + crypto_stream/salsa2012/ref/api.h \ + crypto_stream/salsa2012/ref/stream_salsa2012.c \ + crypto_stream/salsa2012/ref/xor_salsa2012.c \ + crypto_stream/salsa208/stream_salsa208_api.c \ + crypto_stream/salsa208/ref/api.h \ + crypto_stream/salsa208/ref/stream_salsa208.c \ + crypto_stream/salsa208/ref/xor_salsa208.c \ + crypto_stream/xsalsa20/stream_xsalsa20_api.c \ + crypto_stream/xsalsa20/ref/api.h \ + crypto_stream/xsalsa20/ref/stream_xsalsa20.c \ + crypto_stream/xsalsa20/ref/xor_xsalsa20.c \ + crypto_verify/16/verify_16_api.c \ + crypto_verify/16/ref/api.h \ + crypto_verify/16/ref/verify_16.c \ + crypto_verify/32/verify_32_api.c \ + crypto_verify/32/ref/api.h \ + crypto_verify/32/ref/verify_32.c \ + randombytes/randombytes.c \ + randombytes/salsa20/randombytes_salsa20_random.c \ + randombytes/sysrandom/randombytes_sysrandom.c \ + sodium/compat.c \ + sodium/core.c \ + sodium/utils.c \ + sodium/version.c + +if HAVE_TI_MODE +libsodium_la_SOURCES += \ + crypto_scalarmult/curve25519/donna_c64/api.h \ + crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c \ + crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c +else +libsodium_la_SOURCES += \ + crypto_scalarmult/curve25519/ref/api.h \ + crypto_scalarmult/curve25519/ref/base_curve25519_ref.c \ + crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c +endif + +if HAVE_AMD64_ASM +libsodium_la_SOURCES += \ + crypto_stream/salsa20/amd64_xmm6/api.h \ + crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S +else +libsodium_la_SOURCES += \ + crypto_stream/salsa20/ref/api.h \ + crypto_stream/salsa20/ref/stream_salsa20_ref.c \ + crypto_stream/salsa20/ref/xor_salsa20_ref.c +endif + +libsodium_la_LDFLAGS = \ + $(AM_LDFLAGS) \ + -export-dynamic \ + -no-undefined \ + $(LIBTOOL_EXTRA_FLAGS) + +libsodium_la_CPPFLAGS = \ + $(LTDLINCL) \ + -I$(srcdir)/include/sodium \ + -I$(builddir)/include/sodium + +if HAVE_LD_OUTPUT_DEF +libsodium_la_LDFLAGS += -Wl,--output-def,libsodium-$(DLL_VERSION).def +defexecdir = $(bindir) +defexec_DATA = libsodium-$(DLL_VERSION).def +DISTCLEANFILES = $(defexec_DATA) +endif + +SUBDIRS = \ + include diff --git a/src/libsodium/src/libsodium/Makefile.in b/src/libsodium/src/libsodium/Makefile.in new file mode 100644 index 00000000..63abc674 --- /dev/null +++ b/src/libsodium/src/libsodium/Makefile.in @@ -0,0 +1,3535 @@ +# Makefile.in generated by automake 1.14 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@HAVE_TI_MODE_TRUE@am__append_1 = \ +@HAVE_TI_MODE_TRUE@ crypto_scalarmult/curve25519/donna_c64/api.h \ +@HAVE_TI_MODE_TRUE@ crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c \ +@HAVE_TI_MODE_TRUE@ crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c + +@HAVE_TI_MODE_FALSE@am__append_2 = \ +@HAVE_TI_MODE_FALSE@ crypto_scalarmult/curve25519/ref/api.h \ +@HAVE_TI_MODE_FALSE@ crypto_scalarmult/curve25519/ref/base_curve25519_ref.c \ +@HAVE_TI_MODE_FALSE@ crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c + +@HAVE_AMD64_ASM_TRUE@am__append_3 = \ +@HAVE_AMD64_ASM_TRUE@ crypto_stream/salsa20/amd64_xmm6/api.h \ +@HAVE_AMD64_ASM_TRUE@ crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S + +@HAVE_AMD64_ASM_FALSE@am__append_4 = \ +@HAVE_AMD64_ASM_FALSE@ crypto_stream/salsa20/ref/api.h \ +@HAVE_AMD64_ASM_FALSE@ crypto_stream/salsa20/ref/stream_salsa20_ref.c \ +@HAVE_AMD64_ASM_FALSE@ crypto_stream/salsa20/ref/xor_salsa20_ref.c + +@HAVE_LD_OUTPUT_DEF_TRUE@am__append_5 = -Wl,--output-def,libsodium-$(DLL_VERSION).def +subdir = src/libsodium +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ + $(top_srcdir)/m4/ax_check_link_flag.m4 \ + $(top_srcdir)/m4/ld-output-def.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(defexecdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libsodium_la_LIBADD = +am__libsodium_la_SOURCES_DIST = crypto_auth/crypto_auth.c \ + crypto_auth/hmacsha256/auth_hmacsha256_api.c \ + crypto_auth/hmacsha256/ref/api.h \ + crypto_auth/hmacsha256/ref/hmac_hmacsha256.c \ + crypto_auth/hmacsha256/ref/verify_hmacsha256.c \ + crypto_auth/hmacsha512256/auth_hmacsha512256_api.c \ + crypto_auth/hmacsha512256/ref/api.h \ + crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c \ + crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c \ + crypto_box/crypto_box.c \ + crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c \ + crypto_box/curve25519xsalsa20poly1305/ref/api.h \ + crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c \ + crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c \ + crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c \ + crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c \ + crypto_core/hsalsa20/ref2/core_hsalsa20.c \ + crypto_core/hsalsa20/core_hsalsa20_api.c \ + crypto_core/hsalsa20/ref2/api.h \ + crypto_core/salsa20/ref/core_salsa20.c \ + crypto_core/salsa20/core_salsa20_api.c \ + crypto_core/salsa20/ref/api.h \ + crypto_core/salsa2012/ref/core_salsa2012.c \ + crypto_core/salsa2012/core_salsa2012_api.c \ + crypto_core/salsa2012/ref/api.h \ + crypto_core/salsa208/ref/core_salsa208.c \ + crypto_core/salsa208/core_salsa208_api.c \ + crypto_core/salsa208/ref/api.h \ + crypto_generichash/crypto_generichash.c \ + crypto_generichash/blake2/generichash_blake2_api.c \ + crypto_generichash/blake2/ref/api.h \ + crypto_generichash/blake2/ref/blake2-impl.h \ + crypto_generichash/blake2/ref/blake2.h \ + crypto_generichash/blake2/ref/blake2b-ref.c \ + crypto_generichash/blake2/ref/generichash_blake2b.c \ + crypto_hash/crypto_hash.c crypto_hash/sha256/hash_sha256_api.c \ + crypto_hash/sha256/ref/api.h \ + crypto_hash/sha256/ref/hash_sha256.c \ + crypto_hash/sha512/hash_sha512_api.c \ + crypto_hash/sha512/ref/api.h \ + crypto_hash/sha512/ref/hash_sha512.c \ + crypto_hashblocks/sha256/ref/blocks_sha256.c \ + crypto_hashblocks/sha256/hashblocks_sha256_api.c \ + crypto_hashblocks/sha256/ref/api.h \ + crypto_hashblocks/sha512/ref/blocks_sha512.c \ + crypto_hashblocks/sha512/hashblocks_sha512_api.c \ + crypto_hashblocks/sha512/ref/api.h \ + crypto_onetimeauth/crypto_onetimeauth.c \ + crypto_onetimeauth/poly1305/onetimeauth_poly1305.c \ + crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c \ + crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c \ + crypto_onetimeauth/poly1305/53/api.h \ + crypto_onetimeauth/poly1305/53/auth_poly1305_53.c \ + crypto_onetimeauth/poly1305/53/verify_poly1305_53.c \ + crypto_onetimeauth/poly1305/donna/api.h \ + crypto_onetimeauth/poly1305/donna/portable-jane.h \ + crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c \ + crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c \ + crypto_scalarmult/crypto_scalarmult.c \ + crypto_secretbox/crypto_secretbox.c \ + crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c \ + crypto_secretbox/xsalsa20poly1305/ref/api.h \ + crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c \ + crypto_shorthash/crypto_shorthash.c \ + crypto_shorthash/siphash24/shorthash_siphash24_api.c \ + crypto_shorthash/siphash24/ref/api.h \ + crypto_shorthash/siphash24/ref/shorthash_siphash24.c \ + crypto_sign/crypto_sign.c crypto_sign/ed25519/ref10/base.h \ + crypto_sign/ed25519/ref10/base2.h \ + crypto_sign/ed25519/sign_ed25519_api.c \ + crypto_sign/ed25519/ref10/api.h crypto_sign/ed25519/ref10/d.h \ + crypto_sign/ed25519/ref10/d2.h crypto_sign/ed25519/ref10/fe.h \ + crypto_sign/ed25519/ref10/fe_0.c \ + crypto_sign/ed25519/ref10/fe_1.c \ + crypto_sign/ed25519/ref10/fe_add.c \ + crypto_sign/ed25519/ref10/fe_cmov.c \ + crypto_sign/ed25519/ref10/fe_copy.c \ + crypto_sign/ed25519/ref10/fe_frombytes.c \ + crypto_sign/ed25519/ref10/fe_invert.c \ + crypto_sign/ed25519/ref10/fe_isnegative.c \ + crypto_sign/ed25519/ref10/fe_isnonzero.c \ + crypto_sign/ed25519/ref10/fe_mul.c \ + crypto_sign/ed25519/ref10/fe_neg.c \ + crypto_sign/ed25519/ref10/fe_pow22523.c \ + crypto_sign/ed25519/ref10/fe_sq.c \ + crypto_sign/ed25519/ref10/fe_sq2.c \ + crypto_sign/ed25519/ref10/fe_sub.c \ + crypto_sign/ed25519/ref10/fe_tobytes.c \ + crypto_sign/ed25519/ref10/ge.h \ + crypto_sign/ed25519/ref10/ge_add.c \ + crypto_sign/ed25519/ref10/ge_add.h \ + crypto_sign/ed25519/ref10/ge_double_scalarmult.c \ + crypto_sign/ed25519/ref10/ge_frombytes.c \ + crypto_sign/ed25519/ref10/ge_madd.c \ + crypto_sign/ed25519/ref10/ge_madd.h \ + crypto_sign/ed25519/ref10/ge_msub.c \ + crypto_sign/ed25519/ref10/ge_msub.h \ + crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c \ + crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c \ + crypto_sign/ed25519/ref10/ge_p2_0.c \ + crypto_sign/ed25519/ref10/ge_p2_dbl.c \ + crypto_sign/ed25519/ref10/ge_p2_dbl.h \ + crypto_sign/ed25519/ref10/ge_p3_0.c \ + crypto_sign/ed25519/ref10/ge_p3_dbl.c \ + crypto_sign/ed25519/ref10/ge_p3_to_cached.c \ + crypto_sign/ed25519/ref10/ge_p3_to_p2.c \ + crypto_sign/ed25519/ref10/ge_p3_tobytes.c \ + crypto_sign/ed25519/ref10/ge_precomp_0.c \ + crypto_sign/ed25519/ref10/ge_scalarmult_base.c \ + crypto_sign/ed25519/ref10/ge_sub.c \ + crypto_sign/ed25519/ref10/ge_sub.h \ + crypto_sign/ed25519/ref10/ge_tobytes.c \ + crypto_sign/ed25519/ref10/keypair.c \ + crypto_sign/ed25519/ref10/open.c \ + crypto_sign/ed25519/ref10/pow22523.h \ + crypto_sign/ed25519/ref10/pow225521.h \ + crypto_sign/ed25519/ref10/sc.h \ + crypto_sign/ed25519/ref10/sc_muladd.c \ + crypto_sign/ed25519/ref10/sc_reduce.c \ + crypto_sign/ed25519/ref10/sign.c \ + crypto_sign/ed25519/ref10/sqrtm1.h \ + crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c \ + crypto_sign/edwards25519sha512batch/ref/api.h \ + crypto_sign/edwards25519sha512batch/ref/fe25519.h \ + crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c \ + crypto_sign/edwards25519sha512batch/ref/ge25519.h \ + crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c \ + crypto_sign/edwards25519sha512batch/ref/sc25519.h \ + crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c \ + crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c \ + crypto_stream/crypto_stream.c \ + crypto_stream/aes128ctr/portable/afternm_aes128ctr.c \ + crypto_stream/aes128ctr/stream_aes128ctr_api.c \ + crypto_stream/aes128ctr/portable/api.h \ + crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c \ + crypto_stream/aes128ctr/portable/common.h \ + crypto_stream/aes128ctr/portable/common_aes128ctr.c \ + crypto_stream/aes128ctr/portable/consts.h \ + crypto_stream/aes128ctr/portable/consts_aes128ctr.c \ + crypto_stream/aes128ctr/portable/int128.h \ + crypto_stream/aes128ctr/portable/int128_aes128ctr.c \ + crypto_stream/aes128ctr/portable/stream_aes128ctr.c \ + crypto_stream/aes128ctr/portable/types.h \ + crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c \ + crypto_stream/aes256estream/hongjun/aes-table.h \ + crypto_stream/aes256estream/hongjun/aes256-ctr.c \ + crypto_stream/aes256estream/hongjun/aes256.h \ + crypto_stream/aes256estream/stream_aes256estream_api.c \ + crypto_stream/aes256estream/hongjun/api.h \ + crypto_stream/aes256estream/hongjun/ecrypt-sync.h \ + crypto_stream/salsa2012/stream_salsa2012_api.c \ + crypto_stream/salsa2012/ref/api.h \ + crypto_stream/salsa2012/ref/stream_salsa2012.c \ + crypto_stream/salsa2012/ref/xor_salsa2012.c \ + crypto_stream/salsa208/stream_salsa208_api.c \ + crypto_stream/salsa208/ref/api.h \ + crypto_stream/salsa208/ref/stream_salsa208.c \ + crypto_stream/salsa208/ref/xor_salsa208.c \ + crypto_stream/xsalsa20/stream_xsalsa20_api.c \ + crypto_stream/xsalsa20/ref/api.h \ + crypto_stream/xsalsa20/ref/stream_xsalsa20.c \ + crypto_stream/xsalsa20/ref/xor_xsalsa20.c \ + crypto_verify/16/verify_16_api.c crypto_verify/16/ref/api.h \ + crypto_verify/16/ref/verify_16.c \ + crypto_verify/32/verify_32_api.c crypto_verify/32/ref/api.h \ + crypto_verify/32/ref/verify_32.c randombytes/randombytes.c \ + randombytes/salsa20/randombytes_salsa20_random.c \ + randombytes/sysrandom/randombytes_sysrandom.c sodium/compat.c \ + sodium/core.c sodium/utils.c sodium/version.c \ + crypto_scalarmult/curve25519/donna_c64/api.h \ + crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c \ + crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c \ + crypto_scalarmult/curve25519/ref/api.h \ + crypto_scalarmult/curve25519/ref/base_curve25519_ref.c \ + crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c \ + crypto_stream/salsa20/amd64_xmm6/api.h \ + crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S \ + crypto_stream/salsa20/ref/api.h \ + crypto_stream/salsa20/ref/stream_salsa20_ref.c \ + crypto_stream/salsa20/ref/xor_salsa20_ref.c +am__dirstamp = $(am__leading_dot)dirstamp +@HAVE_TI_MODE_TRUE@am__objects_1 = crypto_scalarmult/curve25519/donna_c64/libsodium_la-base_curve25519_donna_c64.lo \ +@HAVE_TI_MODE_TRUE@ crypto_scalarmult/curve25519/donna_c64/libsodium_la-smult_curve25519_donna_c64.lo +@HAVE_TI_MODE_FALSE@am__objects_2 = crypto_scalarmult/curve25519/ref/libsodium_la-base_curve25519_ref.lo \ +@HAVE_TI_MODE_FALSE@ crypto_scalarmult/curve25519/ref/libsodium_la-smult_curve25519_ref.lo +@HAVE_AMD64_ASM_TRUE@am__objects_3 = crypto_stream/salsa20/amd64_xmm6/libsodium_la-stream_salsa20_amd64_xmm6.lo +@HAVE_AMD64_ASM_FALSE@am__objects_4 = crypto_stream/salsa20/ref/libsodium_la-stream_salsa20_ref.lo \ +@HAVE_AMD64_ASM_FALSE@ crypto_stream/salsa20/ref/libsodium_la-xor_salsa20_ref.lo +am_libsodium_la_OBJECTS = crypto_auth/libsodium_la-crypto_auth.lo \ + crypto_auth/hmacsha256/libsodium_la-auth_hmacsha256_api.lo \ + crypto_auth/hmacsha256/ref/libsodium_la-hmac_hmacsha256.lo \ + crypto_auth/hmacsha256/ref/libsodium_la-verify_hmacsha256.lo \ + crypto_auth/hmacsha512256/libsodium_la-auth_hmacsha512256_api.lo \ + crypto_auth/hmacsha512256/ref/libsodium_la-hmac_hmacsha512256.lo \ + crypto_auth/hmacsha512256/ref/libsodium_la-verify_hmacsha512256.lo \ + crypto_box/libsodium_la-crypto_box.lo \ + crypto_box/curve25519xsalsa20poly1305/libsodium_la-box_curve25519xsalsa20poly1305_api.lo \ + crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-after_curve25519xsalsa20poly1305.lo \ + crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-before_curve25519xsalsa20poly1305.lo \ + crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-box_curve25519xsalsa20poly1305.lo \ + crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-keypair_curve25519xsalsa20poly1305.lo \ + crypto_core/hsalsa20/ref2/libsodium_la-core_hsalsa20.lo \ + crypto_core/hsalsa20/libsodium_la-core_hsalsa20_api.lo \ + crypto_core/salsa20/ref/libsodium_la-core_salsa20.lo \ + crypto_core/salsa20/libsodium_la-core_salsa20_api.lo \ + crypto_core/salsa2012/ref/libsodium_la-core_salsa2012.lo \ + crypto_core/salsa2012/libsodium_la-core_salsa2012_api.lo \ + crypto_core/salsa208/ref/libsodium_la-core_salsa208.lo \ + crypto_core/salsa208/libsodium_la-core_salsa208_api.lo \ + crypto_generichash/libsodium_la-crypto_generichash.lo \ + crypto_generichash/blake2/libsodium_la-generichash_blake2_api.lo \ + crypto_generichash/blake2/ref/libsodium_la-blake2b-ref.lo \ + crypto_generichash/blake2/ref/libsodium_la-generichash_blake2b.lo \ + crypto_hash/libsodium_la-crypto_hash.lo \ + crypto_hash/sha256/libsodium_la-hash_sha256_api.lo \ + crypto_hash/sha256/ref/libsodium_la-hash_sha256.lo \ + crypto_hash/sha512/libsodium_la-hash_sha512_api.lo \ + crypto_hash/sha512/ref/libsodium_la-hash_sha512.lo \ + crypto_hashblocks/sha256/ref/libsodium_la-blocks_sha256.lo \ + crypto_hashblocks/sha256/libsodium_la-hashblocks_sha256_api.lo \ + crypto_hashblocks/sha512/ref/libsodium_la-blocks_sha512.lo \ + crypto_hashblocks/sha512/libsodium_la-hashblocks_sha512_api.lo \ + crypto_onetimeauth/libsodium_la-crypto_onetimeauth.lo \ + crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305.lo \ + crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_api.lo \ + crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_try.lo \ + crypto_onetimeauth/poly1305/53/libsodium_la-auth_poly1305_53.lo \ + crypto_onetimeauth/poly1305/53/libsodium_la-verify_poly1305_53.lo \ + crypto_onetimeauth/poly1305/donna/libsodium_la-auth_poly1305_donna.lo \ + crypto_onetimeauth/poly1305/donna/libsodium_la-verify_poly1305_donna.lo \ + crypto_scalarmult/libsodium_la-crypto_scalarmult.lo \ + crypto_secretbox/libsodium_la-crypto_secretbox.lo \ + crypto_secretbox/xsalsa20poly1305/libsodium_la-secretbox_xsalsa20poly1305_api.lo \ + crypto_secretbox/xsalsa20poly1305/ref/libsodium_la-box_xsalsa20poly1305.lo \ + crypto_shorthash/libsodium_la-crypto_shorthash.lo \ + crypto_shorthash/siphash24/libsodium_la-shorthash_siphash24_api.lo \ + crypto_shorthash/siphash24/ref/libsodium_la-shorthash_siphash24.lo \ + crypto_sign/libsodium_la-crypto_sign.lo \ + crypto_sign/ed25519/libsodium_la-sign_ed25519_api.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_0.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_1.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_add.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_cmov.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_copy.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_frombytes.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_invert.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_isnegative.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_isnonzero.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_mul.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_neg.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_pow22523.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_sq.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_sq2.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_sub.lo \ + crypto_sign/ed25519/ref10/libsodium_la-fe_tobytes.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_add.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_double_scalarmult.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_frombytes.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_madd.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_msub.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p2.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p3.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_p2_0.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_p2_dbl.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_p3_0.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_p3_dbl.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_cached.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_p2.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_p3_tobytes.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_precomp_0.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_scalarmult_base.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_sub.lo \ + crypto_sign/ed25519/ref10/libsodium_la-ge_tobytes.lo \ + crypto_sign/ed25519/ref10/libsodium_la-keypair.lo \ + crypto_sign/ed25519/ref10/libsodium_la-open.lo \ + crypto_sign/ed25519/ref10/libsodium_la-sc_muladd.lo \ + crypto_sign/ed25519/ref10/libsodium_la-sc_reduce.lo \ + crypto_sign/ed25519/ref10/libsodium_la-sign.lo \ + crypto_sign/edwards25519sha512batch/libsodium_la-sign_edwards25519sha512batch_api.lo \ + crypto_sign/edwards25519sha512batch/ref/libsodium_la-fe25519_edwards25519sha512batch.lo \ + crypto_sign/edwards25519sha512batch/ref/libsodium_la-ge25519_edwards25519sha512batch.lo \ + crypto_sign/edwards25519sha512batch/ref/libsodium_la-sc25519_edwards25519sha512batch.lo \ + crypto_sign/edwards25519sha512batch/ref/libsodium_la-sign_edwards25519sha512batch.lo \ + crypto_stream/libsodium_la-crypto_stream.lo \ + crypto_stream/aes128ctr/portable/libsodium_la-afternm_aes128ctr.lo \ + crypto_stream/aes128ctr/libsodium_la-stream_aes128ctr_api.lo \ + crypto_stream/aes128ctr/portable/libsodium_la-beforenm_aes128ctr.lo \ + crypto_stream/aes128ctr/portable/libsodium_la-common_aes128ctr.lo \ + crypto_stream/aes128ctr/portable/libsodium_la-consts_aes128ctr.lo \ + crypto_stream/aes128ctr/portable/libsodium_la-int128_aes128ctr.lo \ + crypto_stream/aes128ctr/portable/libsodium_la-stream_aes128ctr.lo \ + crypto_stream/aes128ctr/portable/libsodium_la-xor_afternm_aes128ctr.lo \ + crypto_stream/aes256estream/hongjun/libsodium_la-aes256-ctr.lo \ + crypto_stream/aes256estream/libsodium_la-stream_aes256estream_api.lo \ + crypto_stream/salsa2012/libsodium_la-stream_salsa2012_api.lo \ + crypto_stream/salsa2012/ref/libsodium_la-stream_salsa2012.lo \ + crypto_stream/salsa2012/ref/libsodium_la-xor_salsa2012.lo \ + crypto_stream/salsa208/libsodium_la-stream_salsa208_api.lo \ + crypto_stream/salsa208/ref/libsodium_la-stream_salsa208.lo \ + crypto_stream/salsa208/ref/libsodium_la-xor_salsa208.lo \ + crypto_stream/xsalsa20/libsodium_la-stream_xsalsa20_api.lo \ + crypto_stream/xsalsa20/ref/libsodium_la-stream_xsalsa20.lo \ + crypto_stream/xsalsa20/ref/libsodium_la-xor_xsalsa20.lo \ + crypto_verify/16/libsodium_la-verify_16_api.lo \ + crypto_verify/16/ref/libsodium_la-verify_16.lo \ + crypto_verify/32/libsodium_la-verify_32_api.lo \ + crypto_verify/32/ref/libsodium_la-verify_32.lo \ + randombytes/libsodium_la-randombytes.lo \ + randombytes/salsa20/libsodium_la-randombytes_salsa20_random.lo \ + randombytes/sysrandom/libsodium_la-randombytes_sysrandom.lo \ + sodium/libsodium_la-compat.lo sodium/libsodium_la-core.lo \ + sodium/libsodium_la-utils.lo sodium/libsodium_la-version.lo \ + $(am__objects_1) $(am__objects_2) $(am__objects_3) \ + $(am__objects_4) +libsodium_la_OBJECTS = $(am_libsodium_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libsodium_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libsodium_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) +LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CCASFLAGS) $(CCASFLAGS) +AM_V_CPPAS = $(am__v_CPPAS_@AM_V@) +am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@) +am__v_CPPAS_0 = @echo " CPPAS " $@; +am__v_CPPAS_1 = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libsodium_la_SOURCES) +DIST_SOURCES = $(am__libsodium_la_SOURCES_DIST) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(defexec_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CWFLAGS = @CWFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_AMD64_ASM_V = @HAVE_AMD64_ASM_V@ +HAVE_CPUID_V = @HAVE_CPUID_V@ +HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@ +HAVE_TI_MODE_V = @HAVE_TI_MODE_V@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISODATE = @ISODATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_EXTRA_FLAGS = @LIBTOOL_EXTRA_FLAGS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SAFECODE_HOME = @SAFECODE_HOME@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SODIUM_LIBRARY_VERSION = @SODIUM_LIBRARY_VERSION@ +SODIUM_LIBRARY_VERSION_MAJOR = @SODIUM_LIBRARY_VERSION_MAJOR@ +SODIUM_LIBRARY_VERSION_MINOR = @SODIUM_LIBRARY_VERSION_MINOR@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +lib_LTLIBRARIES = \ + libsodium.la + +libsodium_la_SOURCES = crypto_auth/crypto_auth.c \ + crypto_auth/hmacsha256/auth_hmacsha256_api.c \ + crypto_auth/hmacsha256/ref/api.h \ + crypto_auth/hmacsha256/ref/hmac_hmacsha256.c \ + crypto_auth/hmacsha256/ref/verify_hmacsha256.c \ + crypto_auth/hmacsha512256/auth_hmacsha512256_api.c \ + crypto_auth/hmacsha512256/ref/api.h \ + crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c \ + crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c \ + crypto_box/crypto_box.c \ + crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c \ + crypto_box/curve25519xsalsa20poly1305/ref/api.h \ + crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c \ + crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c \ + crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c \ + crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c \ + crypto_core/hsalsa20/ref2/core_hsalsa20.c \ + crypto_core/hsalsa20/core_hsalsa20_api.c \ + crypto_core/hsalsa20/ref2/api.h \ + crypto_core/salsa20/ref/core_salsa20.c \ + crypto_core/salsa20/core_salsa20_api.c \ + crypto_core/salsa20/ref/api.h \ + crypto_core/salsa2012/ref/core_salsa2012.c \ + crypto_core/salsa2012/core_salsa2012_api.c \ + crypto_core/salsa2012/ref/api.h \ + crypto_core/salsa208/ref/core_salsa208.c \ + crypto_core/salsa208/core_salsa208_api.c \ + crypto_core/salsa208/ref/api.h \ + crypto_generichash/crypto_generichash.c \ + crypto_generichash/blake2/generichash_blake2_api.c \ + crypto_generichash/blake2/ref/api.h \ + crypto_generichash/blake2/ref/blake2-impl.h \ + crypto_generichash/blake2/ref/blake2.h \ + crypto_generichash/blake2/ref/blake2b-ref.c \ + crypto_generichash/blake2/ref/generichash_blake2b.c \ + crypto_hash/crypto_hash.c crypto_hash/sha256/hash_sha256_api.c \ + crypto_hash/sha256/ref/api.h \ + crypto_hash/sha256/ref/hash_sha256.c \ + crypto_hash/sha512/hash_sha512_api.c \ + crypto_hash/sha512/ref/api.h \ + crypto_hash/sha512/ref/hash_sha512.c \ + crypto_hashblocks/sha256/ref/blocks_sha256.c \ + crypto_hashblocks/sha256/hashblocks_sha256_api.c \ + crypto_hashblocks/sha256/ref/api.h \ + crypto_hashblocks/sha512/ref/blocks_sha512.c \ + crypto_hashblocks/sha512/hashblocks_sha512_api.c \ + crypto_hashblocks/sha512/ref/api.h \ + crypto_onetimeauth/crypto_onetimeauth.c \ + crypto_onetimeauth/poly1305/onetimeauth_poly1305.c \ + crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c \ + crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c \ + crypto_onetimeauth/poly1305/53/api.h \ + crypto_onetimeauth/poly1305/53/auth_poly1305_53.c \ + crypto_onetimeauth/poly1305/53/verify_poly1305_53.c \ + crypto_onetimeauth/poly1305/donna/api.h \ + crypto_onetimeauth/poly1305/donna/portable-jane.h \ + crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c \ + crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c \ + crypto_scalarmult/crypto_scalarmult.c \ + crypto_secretbox/crypto_secretbox.c \ + crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c \ + crypto_secretbox/xsalsa20poly1305/ref/api.h \ + crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c \ + crypto_shorthash/crypto_shorthash.c \ + crypto_shorthash/siphash24/shorthash_siphash24_api.c \ + crypto_shorthash/siphash24/ref/api.h \ + crypto_shorthash/siphash24/ref/shorthash_siphash24.c \ + crypto_sign/crypto_sign.c crypto_sign/ed25519/ref10/base.h \ + crypto_sign/ed25519/ref10/base2.h \ + crypto_sign/ed25519/sign_ed25519_api.c \ + crypto_sign/ed25519/ref10/api.h crypto_sign/ed25519/ref10/d.h \ + crypto_sign/ed25519/ref10/d2.h crypto_sign/ed25519/ref10/fe.h \ + crypto_sign/ed25519/ref10/fe_0.c \ + crypto_sign/ed25519/ref10/fe_1.c \ + crypto_sign/ed25519/ref10/fe_add.c \ + crypto_sign/ed25519/ref10/fe_cmov.c \ + crypto_sign/ed25519/ref10/fe_copy.c \ + crypto_sign/ed25519/ref10/fe_frombytes.c \ + crypto_sign/ed25519/ref10/fe_invert.c \ + crypto_sign/ed25519/ref10/fe_isnegative.c \ + crypto_sign/ed25519/ref10/fe_isnonzero.c \ + crypto_sign/ed25519/ref10/fe_mul.c \ + crypto_sign/ed25519/ref10/fe_neg.c \ + crypto_sign/ed25519/ref10/fe_pow22523.c \ + crypto_sign/ed25519/ref10/fe_sq.c \ + crypto_sign/ed25519/ref10/fe_sq2.c \ + crypto_sign/ed25519/ref10/fe_sub.c \ + crypto_sign/ed25519/ref10/fe_tobytes.c \ + crypto_sign/ed25519/ref10/ge.h \ + crypto_sign/ed25519/ref10/ge_add.c \ + crypto_sign/ed25519/ref10/ge_add.h \ + crypto_sign/ed25519/ref10/ge_double_scalarmult.c \ + crypto_sign/ed25519/ref10/ge_frombytes.c \ + crypto_sign/ed25519/ref10/ge_madd.c \ + crypto_sign/ed25519/ref10/ge_madd.h \ + crypto_sign/ed25519/ref10/ge_msub.c \ + crypto_sign/ed25519/ref10/ge_msub.h \ + crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c \ + crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c \ + crypto_sign/ed25519/ref10/ge_p2_0.c \ + crypto_sign/ed25519/ref10/ge_p2_dbl.c \ + crypto_sign/ed25519/ref10/ge_p2_dbl.h \ + crypto_sign/ed25519/ref10/ge_p3_0.c \ + crypto_sign/ed25519/ref10/ge_p3_dbl.c \ + crypto_sign/ed25519/ref10/ge_p3_to_cached.c \ + crypto_sign/ed25519/ref10/ge_p3_to_p2.c \ + crypto_sign/ed25519/ref10/ge_p3_tobytes.c \ + crypto_sign/ed25519/ref10/ge_precomp_0.c \ + crypto_sign/ed25519/ref10/ge_scalarmult_base.c \ + crypto_sign/ed25519/ref10/ge_sub.c \ + crypto_sign/ed25519/ref10/ge_sub.h \ + crypto_sign/ed25519/ref10/ge_tobytes.c \ + crypto_sign/ed25519/ref10/keypair.c \ + crypto_sign/ed25519/ref10/open.c \ + crypto_sign/ed25519/ref10/pow22523.h \ + crypto_sign/ed25519/ref10/pow225521.h \ + crypto_sign/ed25519/ref10/sc.h \ + crypto_sign/ed25519/ref10/sc_muladd.c \ + crypto_sign/ed25519/ref10/sc_reduce.c \ + crypto_sign/ed25519/ref10/sign.c \ + crypto_sign/ed25519/ref10/sqrtm1.h \ + crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c \ + crypto_sign/edwards25519sha512batch/ref/api.h \ + crypto_sign/edwards25519sha512batch/ref/fe25519.h \ + crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c \ + crypto_sign/edwards25519sha512batch/ref/ge25519.h \ + crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c \ + crypto_sign/edwards25519sha512batch/ref/sc25519.h \ + crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c \ + crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c \ + crypto_stream/crypto_stream.c \ + crypto_stream/aes128ctr/portable/afternm_aes128ctr.c \ + crypto_stream/aes128ctr/stream_aes128ctr_api.c \ + crypto_stream/aes128ctr/portable/api.h \ + crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c \ + crypto_stream/aes128ctr/portable/common.h \ + crypto_stream/aes128ctr/portable/common_aes128ctr.c \ + crypto_stream/aes128ctr/portable/consts.h \ + crypto_stream/aes128ctr/portable/consts_aes128ctr.c \ + crypto_stream/aes128ctr/portable/int128.h \ + crypto_stream/aes128ctr/portable/int128_aes128ctr.c \ + crypto_stream/aes128ctr/portable/stream_aes128ctr.c \ + crypto_stream/aes128ctr/portable/types.h \ + crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c \ + crypto_stream/aes256estream/hongjun/aes-table.h \ + crypto_stream/aes256estream/hongjun/aes256-ctr.c \ + crypto_stream/aes256estream/hongjun/aes256.h \ + crypto_stream/aes256estream/stream_aes256estream_api.c \ + crypto_stream/aes256estream/hongjun/api.h \ + crypto_stream/aes256estream/hongjun/ecrypt-sync.h \ + crypto_stream/salsa2012/stream_salsa2012_api.c \ + crypto_stream/salsa2012/ref/api.h \ + crypto_stream/salsa2012/ref/stream_salsa2012.c \ + crypto_stream/salsa2012/ref/xor_salsa2012.c \ + crypto_stream/salsa208/stream_salsa208_api.c \ + crypto_stream/salsa208/ref/api.h \ + crypto_stream/salsa208/ref/stream_salsa208.c \ + crypto_stream/salsa208/ref/xor_salsa208.c \ + crypto_stream/xsalsa20/stream_xsalsa20_api.c \ + crypto_stream/xsalsa20/ref/api.h \ + crypto_stream/xsalsa20/ref/stream_xsalsa20.c \ + crypto_stream/xsalsa20/ref/xor_xsalsa20.c \ + crypto_verify/16/verify_16_api.c crypto_verify/16/ref/api.h \ + crypto_verify/16/ref/verify_16.c \ + crypto_verify/32/verify_32_api.c crypto_verify/32/ref/api.h \ + crypto_verify/32/ref/verify_32.c randombytes/randombytes.c \ + randombytes/salsa20/randombytes_salsa20_random.c \ + randombytes/sysrandom/randombytes_sysrandom.c sodium/compat.c \ + sodium/core.c sodium/utils.c sodium/version.c $(am__append_1) \ + $(am__append_2) $(am__append_3) $(am__append_4) +libsodium_la_LDFLAGS = $(AM_LDFLAGS) -export-dynamic -no-undefined \ + $(LIBTOOL_EXTRA_FLAGS) $(am__append_5) +libsodium_la_CPPFLAGS = \ + $(LTDLINCL) \ + -I$(srcdir)/include/sodium \ + -I$(builddir)/include/sodium + +@HAVE_LD_OUTPUT_DEF_TRUE@defexecdir = $(bindir) +@HAVE_LD_OUTPUT_DEF_TRUE@defexec_DATA = libsodium-$(DLL_VERSION).def +@HAVE_LD_OUTPUT_DEF_TRUE@DISTCLEANFILES = $(defexec_DATA) +SUBDIRS = \ + include + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .S .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libsodium/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/libsodium/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } +crypto_auth/$(am__dirstamp): + @$(MKDIR_P) crypto_auth + @: > crypto_auth/$(am__dirstamp) +crypto_auth/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_auth/$(DEPDIR) + @: > crypto_auth/$(DEPDIR)/$(am__dirstamp) +crypto_auth/libsodium_la-crypto_auth.lo: crypto_auth/$(am__dirstamp) \ + crypto_auth/$(DEPDIR)/$(am__dirstamp) +crypto_auth/hmacsha256/$(am__dirstamp): + @$(MKDIR_P) crypto_auth/hmacsha256 + @: > crypto_auth/hmacsha256/$(am__dirstamp) +crypto_auth/hmacsha256/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_auth/hmacsha256/$(DEPDIR) + @: > crypto_auth/hmacsha256/$(DEPDIR)/$(am__dirstamp) +crypto_auth/hmacsha256/libsodium_la-auth_hmacsha256_api.lo: \ + crypto_auth/hmacsha256/$(am__dirstamp) \ + crypto_auth/hmacsha256/$(DEPDIR)/$(am__dirstamp) +crypto_auth/hmacsha256/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_auth/hmacsha256/ref + @: > crypto_auth/hmacsha256/ref/$(am__dirstamp) +crypto_auth/hmacsha256/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_auth/hmacsha256/ref/$(DEPDIR) + @: > crypto_auth/hmacsha256/ref/$(DEPDIR)/$(am__dirstamp) +crypto_auth/hmacsha256/ref/libsodium_la-hmac_hmacsha256.lo: \ + crypto_auth/hmacsha256/ref/$(am__dirstamp) \ + crypto_auth/hmacsha256/ref/$(DEPDIR)/$(am__dirstamp) +crypto_auth/hmacsha256/ref/libsodium_la-verify_hmacsha256.lo: \ + crypto_auth/hmacsha256/ref/$(am__dirstamp) \ + crypto_auth/hmacsha256/ref/$(DEPDIR)/$(am__dirstamp) +crypto_auth/hmacsha512256/$(am__dirstamp): + @$(MKDIR_P) crypto_auth/hmacsha512256 + @: > crypto_auth/hmacsha512256/$(am__dirstamp) +crypto_auth/hmacsha512256/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_auth/hmacsha512256/$(DEPDIR) + @: > crypto_auth/hmacsha512256/$(DEPDIR)/$(am__dirstamp) +crypto_auth/hmacsha512256/libsodium_la-auth_hmacsha512256_api.lo: \ + crypto_auth/hmacsha512256/$(am__dirstamp) \ + crypto_auth/hmacsha512256/$(DEPDIR)/$(am__dirstamp) +crypto_auth/hmacsha512256/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_auth/hmacsha512256/ref + @: > crypto_auth/hmacsha512256/ref/$(am__dirstamp) +crypto_auth/hmacsha512256/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_auth/hmacsha512256/ref/$(DEPDIR) + @: > crypto_auth/hmacsha512256/ref/$(DEPDIR)/$(am__dirstamp) +crypto_auth/hmacsha512256/ref/libsodium_la-hmac_hmacsha512256.lo: \ + crypto_auth/hmacsha512256/ref/$(am__dirstamp) \ + crypto_auth/hmacsha512256/ref/$(DEPDIR)/$(am__dirstamp) +crypto_auth/hmacsha512256/ref/libsodium_la-verify_hmacsha512256.lo: \ + crypto_auth/hmacsha512256/ref/$(am__dirstamp) \ + crypto_auth/hmacsha512256/ref/$(DEPDIR)/$(am__dirstamp) +crypto_box/$(am__dirstamp): + @$(MKDIR_P) crypto_box + @: > crypto_box/$(am__dirstamp) +crypto_box/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_box/$(DEPDIR) + @: > crypto_box/$(DEPDIR)/$(am__dirstamp) +crypto_box/libsodium_la-crypto_box.lo: crypto_box/$(am__dirstamp) \ + crypto_box/$(DEPDIR)/$(am__dirstamp) +crypto_box/curve25519xsalsa20poly1305/$(am__dirstamp): + @$(MKDIR_P) crypto_box/curve25519xsalsa20poly1305 + @: > crypto_box/curve25519xsalsa20poly1305/$(am__dirstamp) +crypto_box/curve25519xsalsa20poly1305/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_box/curve25519xsalsa20poly1305/$(DEPDIR) + @: > crypto_box/curve25519xsalsa20poly1305/$(DEPDIR)/$(am__dirstamp) +crypto_box/curve25519xsalsa20poly1305/libsodium_la-box_curve25519xsalsa20poly1305_api.lo: \ + crypto_box/curve25519xsalsa20poly1305/$(am__dirstamp) \ + crypto_box/curve25519xsalsa20poly1305/$(DEPDIR)/$(am__dirstamp) +crypto_box/curve25519xsalsa20poly1305/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_box/curve25519xsalsa20poly1305/ref + @: > crypto_box/curve25519xsalsa20poly1305/ref/$(am__dirstamp) +crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR) + @: > crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/$(am__dirstamp) +crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-after_curve25519xsalsa20poly1305.lo: \ + crypto_box/curve25519xsalsa20poly1305/ref/$(am__dirstamp) \ + crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/$(am__dirstamp) +crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-before_curve25519xsalsa20poly1305.lo: \ + crypto_box/curve25519xsalsa20poly1305/ref/$(am__dirstamp) \ + crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/$(am__dirstamp) +crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-box_curve25519xsalsa20poly1305.lo: \ + crypto_box/curve25519xsalsa20poly1305/ref/$(am__dirstamp) \ + crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/$(am__dirstamp) +crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-keypair_curve25519xsalsa20poly1305.lo: \ + crypto_box/curve25519xsalsa20poly1305/ref/$(am__dirstamp) \ + crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/$(am__dirstamp) +crypto_core/hsalsa20/ref2/$(am__dirstamp): + @$(MKDIR_P) crypto_core/hsalsa20/ref2 + @: > crypto_core/hsalsa20/ref2/$(am__dirstamp) +crypto_core/hsalsa20/ref2/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_core/hsalsa20/ref2/$(DEPDIR) + @: > crypto_core/hsalsa20/ref2/$(DEPDIR)/$(am__dirstamp) +crypto_core/hsalsa20/ref2/libsodium_la-core_hsalsa20.lo: \ + crypto_core/hsalsa20/ref2/$(am__dirstamp) \ + crypto_core/hsalsa20/ref2/$(DEPDIR)/$(am__dirstamp) +crypto_core/hsalsa20/$(am__dirstamp): + @$(MKDIR_P) crypto_core/hsalsa20 + @: > crypto_core/hsalsa20/$(am__dirstamp) +crypto_core/hsalsa20/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_core/hsalsa20/$(DEPDIR) + @: > crypto_core/hsalsa20/$(DEPDIR)/$(am__dirstamp) +crypto_core/hsalsa20/libsodium_la-core_hsalsa20_api.lo: \ + crypto_core/hsalsa20/$(am__dirstamp) \ + crypto_core/hsalsa20/$(DEPDIR)/$(am__dirstamp) +crypto_core/salsa20/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_core/salsa20/ref + @: > crypto_core/salsa20/ref/$(am__dirstamp) +crypto_core/salsa20/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_core/salsa20/ref/$(DEPDIR) + @: > crypto_core/salsa20/ref/$(DEPDIR)/$(am__dirstamp) +crypto_core/salsa20/ref/libsodium_la-core_salsa20.lo: \ + crypto_core/salsa20/ref/$(am__dirstamp) \ + crypto_core/salsa20/ref/$(DEPDIR)/$(am__dirstamp) +crypto_core/salsa20/$(am__dirstamp): + @$(MKDIR_P) crypto_core/salsa20 + @: > crypto_core/salsa20/$(am__dirstamp) +crypto_core/salsa20/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_core/salsa20/$(DEPDIR) + @: > crypto_core/salsa20/$(DEPDIR)/$(am__dirstamp) +crypto_core/salsa20/libsodium_la-core_salsa20_api.lo: \ + crypto_core/salsa20/$(am__dirstamp) \ + crypto_core/salsa20/$(DEPDIR)/$(am__dirstamp) +crypto_core/salsa2012/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_core/salsa2012/ref + @: > crypto_core/salsa2012/ref/$(am__dirstamp) +crypto_core/salsa2012/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_core/salsa2012/ref/$(DEPDIR) + @: > crypto_core/salsa2012/ref/$(DEPDIR)/$(am__dirstamp) +crypto_core/salsa2012/ref/libsodium_la-core_salsa2012.lo: \ + crypto_core/salsa2012/ref/$(am__dirstamp) \ + crypto_core/salsa2012/ref/$(DEPDIR)/$(am__dirstamp) +crypto_core/salsa2012/$(am__dirstamp): + @$(MKDIR_P) crypto_core/salsa2012 + @: > crypto_core/salsa2012/$(am__dirstamp) +crypto_core/salsa2012/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_core/salsa2012/$(DEPDIR) + @: > crypto_core/salsa2012/$(DEPDIR)/$(am__dirstamp) +crypto_core/salsa2012/libsodium_la-core_salsa2012_api.lo: \ + crypto_core/salsa2012/$(am__dirstamp) \ + crypto_core/salsa2012/$(DEPDIR)/$(am__dirstamp) +crypto_core/salsa208/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_core/salsa208/ref + @: > crypto_core/salsa208/ref/$(am__dirstamp) +crypto_core/salsa208/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_core/salsa208/ref/$(DEPDIR) + @: > crypto_core/salsa208/ref/$(DEPDIR)/$(am__dirstamp) +crypto_core/salsa208/ref/libsodium_la-core_salsa208.lo: \ + crypto_core/salsa208/ref/$(am__dirstamp) \ + crypto_core/salsa208/ref/$(DEPDIR)/$(am__dirstamp) +crypto_core/salsa208/$(am__dirstamp): + @$(MKDIR_P) crypto_core/salsa208 + @: > crypto_core/salsa208/$(am__dirstamp) +crypto_core/salsa208/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_core/salsa208/$(DEPDIR) + @: > crypto_core/salsa208/$(DEPDIR)/$(am__dirstamp) +crypto_core/salsa208/libsodium_la-core_salsa208_api.lo: \ + crypto_core/salsa208/$(am__dirstamp) \ + crypto_core/salsa208/$(DEPDIR)/$(am__dirstamp) +crypto_generichash/$(am__dirstamp): + @$(MKDIR_P) crypto_generichash + @: > crypto_generichash/$(am__dirstamp) +crypto_generichash/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_generichash/$(DEPDIR) + @: > crypto_generichash/$(DEPDIR)/$(am__dirstamp) +crypto_generichash/libsodium_la-crypto_generichash.lo: \ + crypto_generichash/$(am__dirstamp) \ + crypto_generichash/$(DEPDIR)/$(am__dirstamp) +crypto_generichash/blake2/$(am__dirstamp): + @$(MKDIR_P) crypto_generichash/blake2 + @: > crypto_generichash/blake2/$(am__dirstamp) +crypto_generichash/blake2/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_generichash/blake2/$(DEPDIR) + @: > crypto_generichash/blake2/$(DEPDIR)/$(am__dirstamp) +crypto_generichash/blake2/libsodium_la-generichash_blake2_api.lo: \ + crypto_generichash/blake2/$(am__dirstamp) \ + crypto_generichash/blake2/$(DEPDIR)/$(am__dirstamp) +crypto_generichash/blake2/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_generichash/blake2/ref + @: > crypto_generichash/blake2/ref/$(am__dirstamp) +crypto_generichash/blake2/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_generichash/blake2/ref/$(DEPDIR) + @: > crypto_generichash/blake2/ref/$(DEPDIR)/$(am__dirstamp) +crypto_generichash/blake2/ref/libsodium_la-blake2b-ref.lo: \ + crypto_generichash/blake2/ref/$(am__dirstamp) \ + crypto_generichash/blake2/ref/$(DEPDIR)/$(am__dirstamp) +crypto_generichash/blake2/ref/libsodium_la-generichash_blake2b.lo: \ + crypto_generichash/blake2/ref/$(am__dirstamp) \ + crypto_generichash/blake2/ref/$(DEPDIR)/$(am__dirstamp) +crypto_hash/$(am__dirstamp): + @$(MKDIR_P) crypto_hash + @: > crypto_hash/$(am__dirstamp) +crypto_hash/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_hash/$(DEPDIR) + @: > crypto_hash/$(DEPDIR)/$(am__dirstamp) +crypto_hash/libsodium_la-crypto_hash.lo: crypto_hash/$(am__dirstamp) \ + crypto_hash/$(DEPDIR)/$(am__dirstamp) +crypto_hash/sha256/$(am__dirstamp): + @$(MKDIR_P) crypto_hash/sha256 + @: > crypto_hash/sha256/$(am__dirstamp) +crypto_hash/sha256/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_hash/sha256/$(DEPDIR) + @: > crypto_hash/sha256/$(DEPDIR)/$(am__dirstamp) +crypto_hash/sha256/libsodium_la-hash_sha256_api.lo: \ + crypto_hash/sha256/$(am__dirstamp) \ + crypto_hash/sha256/$(DEPDIR)/$(am__dirstamp) +crypto_hash/sha256/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_hash/sha256/ref + @: > crypto_hash/sha256/ref/$(am__dirstamp) +crypto_hash/sha256/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_hash/sha256/ref/$(DEPDIR) + @: > crypto_hash/sha256/ref/$(DEPDIR)/$(am__dirstamp) +crypto_hash/sha256/ref/libsodium_la-hash_sha256.lo: \ + crypto_hash/sha256/ref/$(am__dirstamp) \ + crypto_hash/sha256/ref/$(DEPDIR)/$(am__dirstamp) +crypto_hash/sha512/$(am__dirstamp): + @$(MKDIR_P) crypto_hash/sha512 + @: > crypto_hash/sha512/$(am__dirstamp) +crypto_hash/sha512/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_hash/sha512/$(DEPDIR) + @: > crypto_hash/sha512/$(DEPDIR)/$(am__dirstamp) +crypto_hash/sha512/libsodium_la-hash_sha512_api.lo: \ + crypto_hash/sha512/$(am__dirstamp) \ + crypto_hash/sha512/$(DEPDIR)/$(am__dirstamp) +crypto_hash/sha512/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_hash/sha512/ref + @: > crypto_hash/sha512/ref/$(am__dirstamp) +crypto_hash/sha512/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_hash/sha512/ref/$(DEPDIR) + @: > crypto_hash/sha512/ref/$(DEPDIR)/$(am__dirstamp) +crypto_hash/sha512/ref/libsodium_la-hash_sha512.lo: \ + crypto_hash/sha512/ref/$(am__dirstamp) \ + crypto_hash/sha512/ref/$(DEPDIR)/$(am__dirstamp) +crypto_hashblocks/sha256/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_hashblocks/sha256/ref + @: > crypto_hashblocks/sha256/ref/$(am__dirstamp) +crypto_hashblocks/sha256/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_hashblocks/sha256/ref/$(DEPDIR) + @: > crypto_hashblocks/sha256/ref/$(DEPDIR)/$(am__dirstamp) +crypto_hashblocks/sha256/ref/libsodium_la-blocks_sha256.lo: \ + crypto_hashblocks/sha256/ref/$(am__dirstamp) \ + crypto_hashblocks/sha256/ref/$(DEPDIR)/$(am__dirstamp) +crypto_hashblocks/sha256/$(am__dirstamp): + @$(MKDIR_P) crypto_hashblocks/sha256 + @: > crypto_hashblocks/sha256/$(am__dirstamp) +crypto_hashblocks/sha256/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_hashblocks/sha256/$(DEPDIR) + @: > crypto_hashblocks/sha256/$(DEPDIR)/$(am__dirstamp) +crypto_hashblocks/sha256/libsodium_la-hashblocks_sha256_api.lo: \ + crypto_hashblocks/sha256/$(am__dirstamp) \ + crypto_hashblocks/sha256/$(DEPDIR)/$(am__dirstamp) +crypto_hashblocks/sha512/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_hashblocks/sha512/ref + @: > crypto_hashblocks/sha512/ref/$(am__dirstamp) +crypto_hashblocks/sha512/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_hashblocks/sha512/ref/$(DEPDIR) + @: > crypto_hashblocks/sha512/ref/$(DEPDIR)/$(am__dirstamp) +crypto_hashblocks/sha512/ref/libsodium_la-blocks_sha512.lo: \ + crypto_hashblocks/sha512/ref/$(am__dirstamp) \ + crypto_hashblocks/sha512/ref/$(DEPDIR)/$(am__dirstamp) +crypto_hashblocks/sha512/$(am__dirstamp): + @$(MKDIR_P) crypto_hashblocks/sha512 + @: > crypto_hashblocks/sha512/$(am__dirstamp) +crypto_hashblocks/sha512/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_hashblocks/sha512/$(DEPDIR) + @: > crypto_hashblocks/sha512/$(DEPDIR)/$(am__dirstamp) +crypto_hashblocks/sha512/libsodium_la-hashblocks_sha512_api.lo: \ + crypto_hashblocks/sha512/$(am__dirstamp) \ + crypto_hashblocks/sha512/$(DEPDIR)/$(am__dirstamp) +crypto_onetimeauth/$(am__dirstamp): + @$(MKDIR_P) crypto_onetimeauth + @: > crypto_onetimeauth/$(am__dirstamp) +crypto_onetimeauth/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_onetimeauth/$(DEPDIR) + @: > crypto_onetimeauth/$(DEPDIR)/$(am__dirstamp) +crypto_onetimeauth/libsodium_la-crypto_onetimeauth.lo: \ + crypto_onetimeauth/$(am__dirstamp) \ + crypto_onetimeauth/$(DEPDIR)/$(am__dirstamp) +crypto_onetimeauth/poly1305/$(am__dirstamp): + @$(MKDIR_P) crypto_onetimeauth/poly1305 + @: > crypto_onetimeauth/poly1305/$(am__dirstamp) +crypto_onetimeauth/poly1305/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_onetimeauth/poly1305/$(DEPDIR) + @: > crypto_onetimeauth/poly1305/$(DEPDIR)/$(am__dirstamp) +crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305.lo: \ + crypto_onetimeauth/poly1305/$(am__dirstamp) \ + crypto_onetimeauth/poly1305/$(DEPDIR)/$(am__dirstamp) +crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_api.lo: \ + crypto_onetimeauth/poly1305/$(am__dirstamp) \ + crypto_onetimeauth/poly1305/$(DEPDIR)/$(am__dirstamp) +crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_try.lo: \ + crypto_onetimeauth/poly1305/$(am__dirstamp) \ + crypto_onetimeauth/poly1305/$(DEPDIR)/$(am__dirstamp) +crypto_onetimeauth/poly1305/53/$(am__dirstamp): + @$(MKDIR_P) crypto_onetimeauth/poly1305/53 + @: > crypto_onetimeauth/poly1305/53/$(am__dirstamp) +crypto_onetimeauth/poly1305/53/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_onetimeauth/poly1305/53/$(DEPDIR) + @: > crypto_onetimeauth/poly1305/53/$(DEPDIR)/$(am__dirstamp) +crypto_onetimeauth/poly1305/53/libsodium_la-auth_poly1305_53.lo: \ + crypto_onetimeauth/poly1305/53/$(am__dirstamp) \ + crypto_onetimeauth/poly1305/53/$(DEPDIR)/$(am__dirstamp) +crypto_onetimeauth/poly1305/53/libsodium_la-verify_poly1305_53.lo: \ + crypto_onetimeauth/poly1305/53/$(am__dirstamp) \ + crypto_onetimeauth/poly1305/53/$(DEPDIR)/$(am__dirstamp) +crypto_onetimeauth/poly1305/donna/$(am__dirstamp): + @$(MKDIR_P) crypto_onetimeauth/poly1305/donna + @: > crypto_onetimeauth/poly1305/donna/$(am__dirstamp) +crypto_onetimeauth/poly1305/donna/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_onetimeauth/poly1305/donna/$(DEPDIR) + @: > crypto_onetimeauth/poly1305/donna/$(DEPDIR)/$(am__dirstamp) +crypto_onetimeauth/poly1305/donna/libsodium_la-auth_poly1305_donna.lo: \ + crypto_onetimeauth/poly1305/donna/$(am__dirstamp) \ + crypto_onetimeauth/poly1305/donna/$(DEPDIR)/$(am__dirstamp) +crypto_onetimeauth/poly1305/donna/libsodium_la-verify_poly1305_donna.lo: \ + crypto_onetimeauth/poly1305/donna/$(am__dirstamp) \ + crypto_onetimeauth/poly1305/donna/$(DEPDIR)/$(am__dirstamp) +crypto_scalarmult/$(am__dirstamp): + @$(MKDIR_P) crypto_scalarmult + @: > crypto_scalarmult/$(am__dirstamp) +crypto_scalarmult/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_scalarmult/$(DEPDIR) + @: > crypto_scalarmult/$(DEPDIR)/$(am__dirstamp) +crypto_scalarmult/libsodium_la-crypto_scalarmult.lo: \ + crypto_scalarmult/$(am__dirstamp) \ + crypto_scalarmult/$(DEPDIR)/$(am__dirstamp) +crypto_secretbox/$(am__dirstamp): + @$(MKDIR_P) crypto_secretbox + @: > crypto_secretbox/$(am__dirstamp) +crypto_secretbox/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_secretbox/$(DEPDIR) + @: > crypto_secretbox/$(DEPDIR)/$(am__dirstamp) +crypto_secretbox/libsodium_la-crypto_secretbox.lo: \ + crypto_secretbox/$(am__dirstamp) \ + crypto_secretbox/$(DEPDIR)/$(am__dirstamp) +crypto_secretbox/xsalsa20poly1305/$(am__dirstamp): + @$(MKDIR_P) crypto_secretbox/xsalsa20poly1305 + @: > crypto_secretbox/xsalsa20poly1305/$(am__dirstamp) +crypto_secretbox/xsalsa20poly1305/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_secretbox/xsalsa20poly1305/$(DEPDIR) + @: > crypto_secretbox/xsalsa20poly1305/$(DEPDIR)/$(am__dirstamp) +crypto_secretbox/xsalsa20poly1305/libsodium_la-secretbox_xsalsa20poly1305_api.lo: \ + crypto_secretbox/xsalsa20poly1305/$(am__dirstamp) \ + crypto_secretbox/xsalsa20poly1305/$(DEPDIR)/$(am__dirstamp) +crypto_secretbox/xsalsa20poly1305/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_secretbox/xsalsa20poly1305/ref + @: > crypto_secretbox/xsalsa20poly1305/ref/$(am__dirstamp) +crypto_secretbox/xsalsa20poly1305/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_secretbox/xsalsa20poly1305/ref/$(DEPDIR) + @: > crypto_secretbox/xsalsa20poly1305/ref/$(DEPDIR)/$(am__dirstamp) +crypto_secretbox/xsalsa20poly1305/ref/libsodium_la-box_xsalsa20poly1305.lo: \ + crypto_secretbox/xsalsa20poly1305/ref/$(am__dirstamp) \ + crypto_secretbox/xsalsa20poly1305/ref/$(DEPDIR)/$(am__dirstamp) +crypto_shorthash/$(am__dirstamp): + @$(MKDIR_P) crypto_shorthash + @: > crypto_shorthash/$(am__dirstamp) +crypto_shorthash/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_shorthash/$(DEPDIR) + @: > crypto_shorthash/$(DEPDIR)/$(am__dirstamp) +crypto_shorthash/libsodium_la-crypto_shorthash.lo: \ + crypto_shorthash/$(am__dirstamp) \ + crypto_shorthash/$(DEPDIR)/$(am__dirstamp) +crypto_shorthash/siphash24/$(am__dirstamp): + @$(MKDIR_P) crypto_shorthash/siphash24 + @: > crypto_shorthash/siphash24/$(am__dirstamp) +crypto_shorthash/siphash24/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_shorthash/siphash24/$(DEPDIR) + @: > crypto_shorthash/siphash24/$(DEPDIR)/$(am__dirstamp) +crypto_shorthash/siphash24/libsodium_la-shorthash_siphash24_api.lo: \ + crypto_shorthash/siphash24/$(am__dirstamp) \ + crypto_shorthash/siphash24/$(DEPDIR)/$(am__dirstamp) +crypto_shorthash/siphash24/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_shorthash/siphash24/ref + @: > crypto_shorthash/siphash24/ref/$(am__dirstamp) +crypto_shorthash/siphash24/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_shorthash/siphash24/ref/$(DEPDIR) + @: > crypto_shorthash/siphash24/ref/$(DEPDIR)/$(am__dirstamp) +crypto_shorthash/siphash24/ref/libsodium_la-shorthash_siphash24.lo: \ + crypto_shorthash/siphash24/ref/$(am__dirstamp) \ + crypto_shorthash/siphash24/ref/$(DEPDIR)/$(am__dirstamp) +crypto_sign/$(am__dirstamp): + @$(MKDIR_P) crypto_sign + @: > crypto_sign/$(am__dirstamp) +crypto_sign/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_sign/$(DEPDIR) + @: > crypto_sign/$(DEPDIR)/$(am__dirstamp) +crypto_sign/libsodium_la-crypto_sign.lo: crypto_sign/$(am__dirstamp) \ + crypto_sign/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/$(am__dirstamp): + @$(MKDIR_P) crypto_sign/ed25519 + @: > crypto_sign/ed25519/$(am__dirstamp) +crypto_sign/ed25519/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_sign/ed25519/$(DEPDIR) + @: > crypto_sign/ed25519/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/libsodium_la-sign_ed25519_api.lo: \ + crypto_sign/ed25519/$(am__dirstamp) \ + crypto_sign/ed25519/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/$(am__dirstamp): + @$(MKDIR_P) crypto_sign/ed25519/ref10 + @: > crypto_sign/ed25519/ref10/$(am__dirstamp) +crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_sign/ed25519/ref10/$(DEPDIR) + @: > crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_0.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_1.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_add.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_cmov.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_copy.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_frombytes.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_invert.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_isnegative.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_isnonzero.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_mul.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_neg.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_pow22523.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_sq.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_sq2.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_sub.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-fe_tobytes.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_add.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_double_scalarmult.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_frombytes.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_madd.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_msub.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p2.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p3.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_p2_0.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_p2_dbl.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_p3_0.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_p3_dbl.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_cached.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_p2.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_p3_tobytes.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_precomp_0.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_scalarmult_base.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_sub.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-ge_tobytes.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-keypair.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-open.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-sc_muladd.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-sc_reduce.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/ed25519/ref10/libsodium_la-sign.lo: \ + crypto_sign/ed25519/ref10/$(am__dirstamp) \ + crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) +crypto_sign/edwards25519sha512batch/$(am__dirstamp): + @$(MKDIR_P) crypto_sign/edwards25519sha512batch + @: > crypto_sign/edwards25519sha512batch/$(am__dirstamp) +crypto_sign/edwards25519sha512batch/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_sign/edwards25519sha512batch/$(DEPDIR) + @: > crypto_sign/edwards25519sha512batch/$(DEPDIR)/$(am__dirstamp) +crypto_sign/edwards25519sha512batch/libsodium_la-sign_edwards25519sha512batch_api.lo: \ + crypto_sign/edwards25519sha512batch/$(am__dirstamp) \ + crypto_sign/edwards25519sha512batch/$(DEPDIR)/$(am__dirstamp) +crypto_sign/edwards25519sha512batch/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_sign/edwards25519sha512batch/ref + @: > crypto_sign/edwards25519sha512batch/ref/$(am__dirstamp) +crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_sign/edwards25519sha512batch/ref/$(DEPDIR) + @: > crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/$(am__dirstamp) +crypto_sign/edwards25519sha512batch/ref/libsodium_la-fe25519_edwards25519sha512batch.lo: \ + crypto_sign/edwards25519sha512batch/ref/$(am__dirstamp) \ + crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/$(am__dirstamp) +crypto_sign/edwards25519sha512batch/ref/libsodium_la-ge25519_edwards25519sha512batch.lo: \ + crypto_sign/edwards25519sha512batch/ref/$(am__dirstamp) \ + crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/$(am__dirstamp) +crypto_sign/edwards25519sha512batch/ref/libsodium_la-sc25519_edwards25519sha512batch.lo: \ + crypto_sign/edwards25519sha512batch/ref/$(am__dirstamp) \ + crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/$(am__dirstamp) +crypto_sign/edwards25519sha512batch/ref/libsodium_la-sign_edwards25519sha512batch.lo: \ + crypto_sign/edwards25519sha512batch/ref/$(am__dirstamp) \ + crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/$(am__dirstamp) +crypto_stream/$(am__dirstamp): + @$(MKDIR_P) crypto_stream + @: > crypto_stream/$(am__dirstamp) +crypto_stream/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/$(DEPDIR) + @: > crypto_stream/$(DEPDIR)/$(am__dirstamp) +crypto_stream/libsodium_la-crypto_stream.lo: \ + crypto_stream/$(am__dirstamp) \ + crypto_stream/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes128ctr/portable/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/aes128ctr/portable + @: > crypto_stream/aes128ctr/portable/$(am__dirstamp) +crypto_stream/aes128ctr/portable/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/aes128ctr/portable/$(DEPDIR) + @: > crypto_stream/aes128ctr/portable/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes128ctr/portable/libsodium_la-afternm_aes128ctr.lo: \ + crypto_stream/aes128ctr/portable/$(am__dirstamp) \ + crypto_stream/aes128ctr/portable/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes128ctr/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/aes128ctr + @: > crypto_stream/aes128ctr/$(am__dirstamp) +crypto_stream/aes128ctr/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/aes128ctr/$(DEPDIR) + @: > crypto_stream/aes128ctr/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes128ctr/libsodium_la-stream_aes128ctr_api.lo: \ + crypto_stream/aes128ctr/$(am__dirstamp) \ + crypto_stream/aes128ctr/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes128ctr/portable/libsodium_la-beforenm_aes128ctr.lo: \ + crypto_stream/aes128ctr/portable/$(am__dirstamp) \ + crypto_stream/aes128ctr/portable/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes128ctr/portable/libsodium_la-common_aes128ctr.lo: \ + crypto_stream/aes128ctr/portable/$(am__dirstamp) \ + crypto_stream/aes128ctr/portable/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes128ctr/portable/libsodium_la-consts_aes128ctr.lo: \ + crypto_stream/aes128ctr/portable/$(am__dirstamp) \ + crypto_stream/aes128ctr/portable/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes128ctr/portable/libsodium_la-int128_aes128ctr.lo: \ + crypto_stream/aes128ctr/portable/$(am__dirstamp) \ + crypto_stream/aes128ctr/portable/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes128ctr/portable/libsodium_la-stream_aes128ctr.lo: \ + crypto_stream/aes128ctr/portable/$(am__dirstamp) \ + crypto_stream/aes128ctr/portable/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes128ctr/portable/libsodium_la-xor_afternm_aes128ctr.lo: \ + crypto_stream/aes128ctr/portable/$(am__dirstamp) \ + crypto_stream/aes128ctr/portable/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes256estream/hongjun/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/aes256estream/hongjun + @: > crypto_stream/aes256estream/hongjun/$(am__dirstamp) +crypto_stream/aes256estream/hongjun/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/aes256estream/hongjun/$(DEPDIR) + @: > crypto_stream/aes256estream/hongjun/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes256estream/hongjun/libsodium_la-aes256-ctr.lo: \ + crypto_stream/aes256estream/hongjun/$(am__dirstamp) \ + crypto_stream/aes256estream/hongjun/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes256estream/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/aes256estream + @: > crypto_stream/aes256estream/$(am__dirstamp) +crypto_stream/aes256estream/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/aes256estream/$(DEPDIR) + @: > crypto_stream/aes256estream/$(DEPDIR)/$(am__dirstamp) +crypto_stream/aes256estream/libsodium_la-stream_aes256estream_api.lo: \ + crypto_stream/aes256estream/$(am__dirstamp) \ + crypto_stream/aes256estream/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa2012/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/salsa2012 + @: > crypto_stream/salsa2012/$(am__dirstamp) +crypto_stream/salsa2012/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/salsa2012/$(DEPDIR) + @: > crypto_stream/salsa2012/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa2012/libsodium_la-stream_salsa2012_api.lo: \ + crypto_stream/salsa2012/$(am__dirstamp) \ + crypto_stream/salsa2012/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa2012/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/salsa2012/ref + @: > crypto_stream/salsa2012/ref/$(am__dirstamp) +crypto_stream/salsa2012/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/salsa2012/ref/$(DEPDIR) + @: > crypto_stream/salsa2012/ref/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa2012/ref/libsodium_la-stream_salsa2012.lo: \ + crypto_stream/salsa2012/ref/$(am__dirstamp) \ + crypto_stream/salsa2012/ref/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa2012/ref/libsodium_la-xor_salsa2012.lo: \ + crypto_stream/salsa2012/ref/$(am__dirstamp) \ + crypto_stream/salsa2012/ref/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa208/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/salsa208 + @: > crypto_stream/salsa208/$(am__dirstamp) +crypto_stream/salsa208/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/salsa208/$(DEPDIR) + @: > crypto_stream/salsa208/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa208/libsodium_la-stream_salsa208_api.lo: \ + crypto_stream/salsa208/$(am__dirstamp) \ + crypto_stream/salsa208/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa208/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/salsa208/ref + @: > crypto_stream/salsa208/ref/$(am__dirstamp) +crypto_stream/salsa208/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/salsa208/ref/$(DEPDIR) + @: > crypto_stream/salsa208/ref/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa208/ref/libsodium_la-stream_salsa208.lo: \ + crypto_stream/salsa208/ref/$(am__dirstamp) \ + crypto_stream/salsa208/ref/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa208/ref/libsodium_la-xor_salsa208.lo: \ + crypto_stream/salsa208/ref/$(am__dirstamp) \ + crypto_stream/salsa208/ref/$(DEPDIR)/$(am__dirstamp) +crypto_stream/xsalsa20/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/xsalsa20 + @: > crypto_stream/xsalsa20/$(am__dirstamp) +crypto_stream/xsalsa20/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/xsalsa20/$(DEPDIR) + @: > crypto_stream/xsalsa20/$(DEPDIR)/$(am__dirstamp) +crypto_stream/xsalsa20/libsodium_la-stream_xsalsa20_api.lo: \ + crypto_stream/xsalsa20/$(am__dirstamp) \ + crypto_stream/xsalsa20/$(DEPDIR)/$(am__dirstamp) +crypto_stream/xsalsa20/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/xsalsa20/ref + @: > crypto_stream/xsalsa20/ref/$(am__dirstamp) +crypto_stream/xsalsa20/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/xsalsa20/ref/$(DEPDIR) + @: > crypto_stream/xsalsa20/ref/$(DEPDIR)/$(am__dirstamp) +crypto_stream/xsalsa20/ref/libsodium_la-stream_xsalsa20.lo: \ + crypto_stream/xsalsa20/ref/$(am__dirstamp) \ + crypto_stream/xsalsa20/ref/$(DEPDIR)/$(am__dirstamp) +crypto_stream/xsalsa20/ref/libsodium_la-xor_xsalsa20.lo: \ + crypto_stream/xsalsa20/ref/$(am__dirstamp) \ + crypto_stream/xsalsa20/ref/$(DEPDIR)/$(am__dirstamp) +crypto_verify/16/$(am__dirstamp): + @$(MKDIR_P) crypto_verify/16 + @: > crypto_verify/16/$(am__dirstamp) +crypto_verify/16/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_verify/16/$(DEPDIR) + @: > crypto_verify/16/$(DEPDIR)/$(am__dirstamp) +crypto_verify/16/libsodium_la-verify_16_api.lo: \ + crypto_verify/16/$(am__dirstamp) \ + crypto_verify/16/$(DEPDIR)/$(am__dirstamp) +crypto_verify/16/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_verify/16/ref + @: > crypto_verify/16/ref/$(am__dirstamp) +crypto_verify/16/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_verify/16/ref/$(DEPDIR) + @: > crypto_verify/16/ref/$(DEPDIR)/$(am__dirstamp) +crypto_verify/16/ref/libsodium_la-verify_16.lo: \ + crypto_verify/16/ref/$(am__dirstamp) \ + crypto_verify/16/ref/$(DEPDIR)/$(am__dirstamp) +crypto_verify/32/$(am__dirstamp): + @$(MKDIR_P) crypto_verify/32 + @: > crypto_verify/32/$(am__dirstamp) +crypto_verify/32/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_verify/32/$(DEPDIR) + @: > crypto_verify/32/$(DEPDIR)/$(am__dirstamp) +crypto_verify/32/libsodium_la-verify_32_api.lo: \ + crypto_verify/32/$(am__dirstamp) \ + crypto_verify/32/$(DEPDIR)/$(am__dirstamp) +crypto_verify/32/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_verify/32/ref + @: > crypto_verify/32/ref/$(am__dirstamp) +crypto_verify/32/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_verify/32/ref/$(DEPDIR) + @: > crypto_verify/32/ref/$(DEPDIR)/$(am__dirstamp) +crypto_verify/32/ref/libsodium_la-verify_32.lo: \ + crypto_verify/32/ref/$(am__dirstamp) \ + crypto_verify/32/ref/$(DEPDIR)/$(am__dirstamp) +randombytes/$(am__dirstamp): + @$(MKDIR_P) randombytes + @: > randombytes/$(am__dirstamp) +randombytes/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) randombytes/$(DEPDIR) + @: > randombytes/$(DEPDIR)/$(am__dirstamp) +randombytes/libsodium_la-randombytes.lo: randombytes/$(am__dirstamp) \ + randombytes/$(DEPDIR)/$(am__dirstamp) +randombytes/salsa20/$(am__dirstamp): + @$(MKDIR_P) randombytes/salsa20 + @: > randombytes/salsa20/$(am__dirstamp) +randombytes/salsa20/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) randombytes/salsa20/$(DEPDIR) + @: > randombytes/salsa20/$(DEPDIR)/$(am__dirstamp) +randombytes/salsa20/libsodium_la-randombytes_salsa20_random.lo: \ + randombytes/salsa20/$(am__dirstamp) \ + randombytes/salsa20/$(DEPDIR)/$(am__dirstamp) +randombytes/sysrandom/$(am__dirstamp): + @$(MKDIR_P) randombytes/sysrandom + @: > randombytes/sysrandom/$(am__dirstamp) +randombytes/sysrandom/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) randombytes/sysrandom/$(DEPDIR) + @: > randombytes/sysrandom/$(DEPDIR)/$(am__dirstamp) +randombytes/sysrandom/libsodium_la-randombytes_sysrandom.lo: \ + randombytes/sysrandom/$(am__dirstamp) \ + randombytes/sysrandom/$(DEPDIR)/$(am__dirstamp) +sodium/$(am__dirstamp): + @$(MKDIR_P) sodium + @: > sodium/$(am__dirstamp) +sodium/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) sodium/$(DEPDIR) + @: > sodium/$(DEPDIR)/$(am__dirstamp) +sodium/libsodium_la-compat.lo: sodium/$(am__dirstamp) \ + sodium/$(DEPDIR)/$(am__dirstamp) +sodium/libsodium_la-core.lo: sodium/$(am__dirstamp) \ + sodium/$(DEPDIR)/$(am__dirstamp) +sodium/libsodium_la-utils.lo: sodium/$(am__dirstamp) \ + sodium/$(DEPDIR)/$(am__dirstamp) +sodium/libsodium_la-version.lo: sodium/$(am__dirstamp) \ + sodium/$(DEPDIR)/$(am__dirstamp) +crypto_scalarmult/curve25519/donna_c64/$(am__dirstamp): + @$(MKDIR_P) crypto_scalarmult/curve25519/donna_c64 + @: > crypto_scalarmult/curve25519/donna_c64/$(am__dirstamp) +crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_scalarmult/curve25519/donna_c64/$(DEPDIR) + @: > crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/$(am__dirstamp) +crypto_scalarmult/curve25519/donna_c64/libsodium_la-base_curve25519_donna_c64.lo: \ + crypto_scalarmult/curve25519/donna_c64/$(am__dirstamp) \ + crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/$(am__dirstamp) +crypto_scalarmult/curve25519/donna_c64/libsodium_la-smult_curve25519_donna_c64.lo: \ + crypto_scalarmult/curve25519/donna_c64/$(am__dirstamp) \ + crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/$(am__dirstamp) +crypto_scalarmult/curve25519/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_scalarmult/curve25519/ref + @: > crypto_scalarmult/curve25519/ref/$(am__dirstamp) +crypto_scalarmult/curve25519/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_scalarmult/curve25519/ref/$(DEPDIR) + @: > crypto_scalarmult/curve25519/ref/$(DEPDIR)/$(am__dirstamp) +crypto_scalarmult/curve25519/ref/libsodium_la-base_curve25519_ref.lo: \ + crypto_scalarmult/curve25519/ref/$(am__dirstamp) \ + crypto_scalarmult/curve25519/ref/$(DEPDIR)/$(am__dirstamp) +crypto_scalarmult/curve25519/ref/libsodium_la-smult_curve25519_ref.lo: \ + crypto_scalarmult/curve25519/ref/$(am__dirstamp) \ + crypto_scalarmult/curve25519/ref/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa20/amd64_xmm6/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/salsa20/amd64_xmm6 + @: > crypto_stream/salsa20/amd64_xmm6/$(am__dirstamp) +crypto_stream/salsa20/amd64_xmm6/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/salsa20/amd64_xmm6/$(DEPDIR) + @: > crypto_stream/salsa20/amd64_xmm6/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa20/amd64_xmm6/libsodium_la-stream_salsa20_amd64_xmm6.lo: \ + crypto_stream/salsa20/amd64_xmm6/$(am__dirstamp) \ + crypto_stream/salsa20/amd64_xmm6/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa20/ref/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/salsa20/ref + @: > crypto_stream/salsa20/ref/$(am__dirstamp) +crypto_stream/salsa20/ref/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) crypto_stream/salsa20/ref/$(DEPDIR) + @: > crypto_stream/salsa20/ref/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa20/ref/libsodium_la-stream_salsa20_ref.lo: \ + crypto_stream/salsa20/ref/$(am__dirstamp) \ + crypto_stream/salsa20/ref/$(DEPDIR)/$(am__dirstamp) +crypto_stream/salsa20/ref/libsodium_la-xor_salsa20_ref.lo: \ + crypto_stream/salsa20/ref/$(am__dirstamp) \ + crypto_stream/salsa20/ref/$(DEPDIR)/$(am__dirstamp) + +libsodium.la: $(libsodium_la_OBJECTS) $(libsodium_la_DEPENDENCIES) $(EXTRA_libsodium_la_DEPENDENCIES) + $(AM_V_CCLD)$(libsodium_la_LINK) -rpath $(libdir) $(libsodium_la_OBJECTS) $(libsodium_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f crypto_auth/*.$(OBJEXT) + -rm -f crypto_auth/*.lo + -rm -f crypto_auth/hmacsha256/*.$(OBJEXT) + -rm -f crypto_auth/hmacsha256/*.lo + -rm -f crypto_auth/hmacsha256/ref/*.$(OBJEXT) + -rm -f crypto_auth/hmacsha256/ref/*.lo + -rm -f crypto_auth/hmacsha512256/*.$(OBJEXT) + -rm -f crypto_auth/hmacsha512256/*.lo + -rm -f crypto_auth/hmacsha512256/ref/*.$(OBJEXT) + -rm -f crypto_auth/hmacsha512256/ref/*.lo + -rm -f crypto_box/*.$(OBJEXT) + -rm -f crypto_box/*.lo + -rm -f crypto_box/curve25519xsalsa20poly1305/*.$(OBJEXT) + -rm -f crypto_box/curve25519xsalsa20poly1305/*.lo + -rm -f crypto_box/curve25519xsalsa20poly1305/ref/*.$(OBJEXT) + -rm -f crypto_box/curve25519xsalsa20poly1305/ref/*.lo + -rm -f crypto_core/hsalsa20/*.$(OBJEXT) + -rm -f crypto_core/hsalsa20/*.lo + -rm -f crypto_core/hsalsa20/ref2/*.$(OBJEXT) + -rm -f crypto_core/hsalsa20/ref2/*.lo + -rm -f crypto_core/salsa20/*.$(OBJEXT) + -rm -f crypto_core/salsa20/*.lo + -rm -f crypto_core/salsa20/ref/*.$(OBJEXT) + -rm -f crypto_core/salsa20/ref/*.lo + -rm -f crypto_core/salsa2012/*.$(OBJEXT) + -rm -f crypto_core/salsa2012/*.lo + -rm -f crypto_core/salsa2012/ref/*.$(OBJEXT) + -rm -f crypto_core/salsa2012/ref/*.lo + -rm -f crypto_core/salsa208/*.$(OBJEXT) + -rm -f crypto_core/salsa208/*.lo + -rm -f crypto_core/salsa208/ref/*.$(OBJEXT) + -rm -f crypto_core/salsa208/ref/*.lo + -rm -f crypto_generichash/*.$(OBJEXT) + -rm -f crypto_generichash/*.lo + -rm -f crypto_generichash/blake2/*.$(OBJEXT) + -rm -f crypto_generichash/blake2/*.lo + -rm -f crypto_generichash/blake2/ref/*.$(OBJEXT) + -rm -f crypto_generichash/blake2/ref/*.lo + -rm -f crypto_hash/*.$(OBJEXT) + -rm -f crypto_hash/*.lo + -rm -f crypto_hash/sha256/*.$(OBJEXT) + -rm -f crypto_hash/sha256/*.lo + -rm -f crypto_hash/sha256/ref/*.$(OBJEXT) + -rm -f crypto_hash/sha256/ref/*.lo + -rm -f crypto_hash/sha512/*.$(OBJEXT) + -rm -f crypto_hash/sha512/*.lo + -rm -f crypto_hash/sha512/ref/*.$(OBJEXT) + -rm -f crypto_hash/sha512/ref/*.lo + -rm -f crypto_hashblocks/sha256/*.$(OBJEXT) + -rm -f crypto_hashblocks/sha256/*.lo + -rm -f crypto_hashblocks/sha256/ref/*.$(OBJEXT) + -rm -f crypto_hashblocks/sha256/ref/*.lo + -rm -f crypto_hashblocks/sha512/*.$(OBJEXT) + -rm -f crypto_hashblocks/sha512/*.lo + -rm -f crypto_hashblocks/sha512/ref/*.$(OBJEXT) + -rm -f crypto_hashblocks/sha512/ref/*.lo + -rm -f crypto_onetimeauth/*.$(OBJEXT) + -rm -f crypto_onetimeauth/*.lo + -rm -f crypto_onetimeauth/poly1305/*.$(OBJEXT) + -rm -f crypto_onetimeauth/poly1305/*.lo + -rm -f crypto_onetimeauth/poly1305/53/*.$(OBJEXT) + -rm -f crypto_onetimeauth/poly1305/53/*.lo + -rm -f crypto_onetimeauth/poly1305/donna/*.$(OBJEXT) + -rm -f crypto_onetimeauth/poly1305/donna/*.lo + -rm -f crypto_scalarmult/*.$(OBJEXT) + -rm -f crypto_scalarmult/*.lo + -rm -f crypto_scalarmult/curve25519/donna_c64/*.$(OBJEXT) + -rm -f crypto_scalarmult/curve25519/donna_c64/*.lo + -rm -f crypto_scalarmult/curve25519/ref/*.$(OBJEXT) + -rm -f crypto_scalarmult/curve25519/ref/*.lo + -rm -f crypto_secretbox/*.$(OBJEXT) + -rm -f crypto_secretbox/*.lo + -rm -f crypto_secretbox/xsalsa20poly1305/*.$(OBJEXT) + -rm -f crypto_secretbox/xsalsa20poly1305/*.lo + -rm -f crypto_secretbox/xsalsa20poly1305/ref/*.$(OBJEXT) + -rm -f crypto_secretbox/xsalsa20poly1305/ref/*.lo + -rm -f crypto_shorthash/*.$(OBJEXT) + -rm -f crypto_shorthash/*.lo + -rm -f crypto_shorthash/siphash24/*.$(OBJEXT) + -rm -f crypto_shorthash/siphash24/*.lo + -rm -f crypto_shorthash/siphash24/ref/*.$(OBJEXT) + -rm -f crypto_shorthash/siphash24/ref/*.lo + -rm -f crypto_sign/*.$(OBJEXT) + -rm -f crypto_sign/*.lo + -rm -f crypto_sign/ed25519/*.$(OBJEXT) + -rm -f crypto_sign/ed25519/*.lo + -rm -f crypto_sign/ed25519/ref10/*.$(OBJEXT) + -rm -f crypto_sign/ed25519/ref10/*.lo + -rm -f crypto_sign/edwards25519sha512batch/*.$(OBJEXT) + -rm -f crypto_sign/edwards25519sha512batch/*.lo + -rm -f crypto_sign/edwards25519sha512batch/ref/*.$(OBJEXT) + -rm -f crypto_sign/edwards25519sha512batch/ref/*.lo + -rm -f crypto_stream/*.$(OBJEXT) + -rm -f crypto_stream/*.lo + -rm -f crypto_stream/aes128ctr/*.$(OBJEXT) + -rm -f crypto_stream/aes128ctr/*.lo + -rm -f crypto_stream/aes128ctr/portable/*.$(OBJEXT) + -rm -f crypto_stream/aes128ctr/portable/*.lo + -rm -f crypto_stream/aes256estream/*.$(OBJEXT) + -rm -f crypto_stream/aes256estream/*.lo + -rm -f crypto_stream/aes256estream/hongjun/*.$(OBJEXT) + -rm -f crypto_stream/aes256estream/hongjun/*.lo + -rm -f crypto_stream/salsa20/amd64_xmm6/*.$(OBJEXT) + -rm -f crypto_stream/salsa20/amd64_xmm6/*.lo + -rm -f crypto_stream/salsa20/ref/*.$(OBJEXT) + -rm -f crypto_stream/salsa20/ref/*.lo + -rm -f crypto_stream/salsa2012/*.$(OBJEXT) + -rm -f crypto_stream/salsa2012/*.lo + -rm -f crypto_stream/salsa2012/ref/*.$(OBJEXT) + -rm -f crypto_stream/salsa2012/ref/*.lo + -rm -f crypto_stream/salsa208/*.$(OBJEXT) + -rm -f crypto_stream/salsa208/*.lo + -rm -f crypto_stream/salsa208/ref/*.$(OBJEXT) + -rm -f crypto_stream/salsa208/ref/*.lo + -rm -f crypto_stream/xsalsa20/*.$(OBJEXT) + -rm -f crypto_stream/xsalsa20/*.lo + -rm -f crypto_stream/xsalsa20/ref/*.$(OBJEXT) + -rm -f crypto_stream/xsalsa20/ref/*.lo + -rm -f crypto_verify/16/*.$(OBJEXT) + -rm -f crypto_verify/16/*.lo + -rm -f crypto_verify/16/ref/*.$(OBJEXT) + -rm -f crypto_verify/16/ref/*.lo + -rm -f crypto_verify/32/*.$(OBJEXT) + -rm -f crypto_verify/32/*.lo + -rm -f crypto_verify/32/ref/*.$(OBJEXT) + -rm -f crypto_verify/32/ref/*.lo + -rm -f randombytes/*.$(OBJEXT) + -rm -f randombytes/*.lo + -rm -f randombytes/salsa20/*.$(OBJEXT) + -rm -f randombytes/salsa20/*.lo + -rm -f randombytes/sysrandom/*.$(OBJEXT) + -rm -f randombytes/sysrandom/*.lo + -rm -f sodium/*.$(OBJEXT) + -rm -f sodium/*.lo + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@crypto_auth/$(DEPDIR)/libsodium_la-crypto_auth.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_auth/hmacsha256/$(DEPDIR)/libsodium_la-auth_hmacsha256_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_auth/hmacsha256/ref/$(DEPDIR)/libsodium_la-hmac_hmacsha256.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_auth/hmacsha256/ref/$(DEPDIR)/libsodium_la-verify_hmacsha256.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_auth/hmacsha512256/$(DEPDIR)/libsodium_la-auth_hmacsha512256_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_auth/hmacsha512256/ref/$(DEPDIR)/libsodium_la-hmac_hmacsha512256.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_auth/hmacsha512256/ref/$(DEPDIR)/libsodium_la-verify_hmacsha512256.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_box/$(DEPDIR)/libsodium_la-crypto_box.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_box/curve25519xsalsa20poly1305/$(DEPDIR)/libsodium_la-box_curve25519xsalsa20poly1305_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-after_curve25519xsalsa20poly1305.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-before_curve25519xsalsa20poly1305.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-box_curve25519xsalsa20poly1305.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-keypair_curve25519xsalsa20poly1305.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_core/hsalsa20/$(DEPDIR)/libsodium_la-core_hsalsa20_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_core/hsalsa20/ref2/$(DEPDIR)/libsodium_la-core_hsalsa20.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_core/salsa20/$(DEPDIR)/libsodium_la-core_salsa20_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_core/salsa20/ref/$(DEPDIR)/libsodium_la-core_salsa20.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_core/salsa2012/$(DEPDIR)/libsodium_la-core_salsa2012_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_core/salsa2012/ref/$(DEPDIR)/libsodium_la-core_salsa2012.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_core/salsa208/$(DEPDIR)/libsodium_la-core_salsa208_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_core/salsa208/ref/$(DEPDIR)/libsodium_la-core_salsa208.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_generichash/$(DEPDIR)/libsodium_la-crypto_generichash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_generichash/blake2/$(DEPDIR)/libsodium_la-generichash_blake2_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_generichash/blake2/ref/$(DEPDIR)/libsodium_la-blake2b-ref.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_generichash/blake2/ref/$(DEPDIR)/libsodium_la-generichash_blake2b.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_hash/$(DEPDIR)/libsodium_la-crypto_hash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_hash/sha256/$(DEPDIR)/libsodium_la-hash_sha256_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_hash/sha256/ref/$(DEPDIR)/libsodium_la-hash_sha256.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_hash/sha512/$(DEPDIR)/libsodium_la-hash_sha512_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_hash/sha512/ref/$(DEPDIR)/libsodium_la-hash_sha512.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_hashblocks/sha256/$(DEPDIR)/libsodium_la-hashblocks_sha256_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_hashblocks/sha256/ref/$(DEPDIR)/libsodium_la-blocks_sha256.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_hashblocks/sha512/$(DEPDIR)/libsodium_la-hashblocks_sha512_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_hashblocks/sha512/ref/$(DEPDIR)/libsodium_la-blocks_sha512.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_onetimeauth/$(DEPDIR)/libsodium_la-crypto_onetimeauth.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_onetimeauth/poly1305/$(DEPDIR)/libsodium_la-onetimeauth_poly1305.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_onetimeauth/poly1305/$(DEPDIR)/libsodium_la-onetimeauth_poly1305_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_onetimeauth/poly1305/$(DEPDIR)/libsodium_la-onetimeauth_poly1305_try.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_onetimeauth/poly1305/53/$(DEPDIR)/libsodium_la-auth_poly1305_53.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_onetimeauth/poly1305/53/$(DEPDIR)/libsodium_la-verify_poly1305_53.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_onetimeauth/poly1305/donna/$(DEPDIR)/libsodium_la-auth_poly1305_donna.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_onetimeauth/poly1305/donna/$(DEPDIR)/libsodium_la-verify_poly1305_donna.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_scalarmult/$(DEPDIR)/libsodium_la-crypto_scalarmult.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/libsodium_la-base_curve25519_donna_c64.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/libsodium_la-smult_curve25519_donna_c64.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_scalarmult/curve25519/ref/$(DEPDIR)/libsodium_la-base_curve25519_ref.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_scalarmult/curve25519/ref/$(DEPDIR)/libsodium_la-smult_curve25519_ref.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_secretbox/$(DEPDIR)/libsodium_la-crypto_secretbox.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_secretbox/xsalsa20poly1305/$(DEPDIR)/libsodium_la-secretbox_xsalsa20poly1305_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_secretbox/xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-box_xsalsa20poly1305.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_shorthash/$(DEPDIR)/libsodium_la-crypto_shorthash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_shorthash/siphash24/$(DEPDIR)/libsodium_la-shorthash_siphash24_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_shorthash/siphash24/ref/$(DEPDIR)/libsodium_la-shorthash_siphash24.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/$(DEPDIR)/libsodium_la-crypto_sign.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/$(DEPDIR)/libsodium_la-sign_ed25519_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_0.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_add.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_cmov.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_copy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_frombytes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_invert.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_isnegative.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_isnonzero.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_mul.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_neg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_pow22523.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_sq.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_sq2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_sub.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_tobytes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_add.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_double_scalarmult.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_frombytes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_madd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_msub.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p1p1_to_p2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p1p1_to_p3.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p2_0.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p2_dbl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_0.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_dbl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_to_cached.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_to_p2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_tobytes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_precomp_0.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_scalarmult_base.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_sub.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_tobytes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-keypair.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-open.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-sc_muladd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-sc_reduce.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-sign.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/edwards25519sha512batch/$(DEPDIR)/libsodium_la-sign_edwards25519sha512batch_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-fe25519_edwards25519sha512batch.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-ge25519_edwards25519sha512batch.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-sc25519_edwards25519sha512batch.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-sign_edwards25519sha512batch.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/$(DEPDIR)/libsodium_la-crypto_stream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/aes128ctr/$(DEPDIR)/libsodium_la-stream_aes128ctr_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-afternm_aes128ctr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-beforenm_aes128ctr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-common_aes128ctr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-consts_aes128ctr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-int128_aes128ctr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-stream_aes128ctr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-xor_afternm_aes128ctr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/aes256estream/$(DEPDIR)/libsodium_la-stream_aes256estream_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/aes256estream/hongjun/$(DEPDIR)/libsodium_la-aes256-ctr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/salsa20/amd64_xmm6/$(DEPDIR)/libsodium_la-stream_salsa20_amd64_xmm6.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/salsa20/ref/$(DEPDIR)/libsodium_la-stream_salsa20_ref.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/salsa20/ref/$(DEPDIR)/libsodium_la-xor_salsa20_ref.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/salsa2012/$(DEPDIR)/libsodium_la-stream_salsa2012_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/salsa2012/ref/$(DEPDIR)/libsodium_la-stream_salsa2012.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/salsa2012/ref/$(DEPDIR)/libsodium_la-xor_salsa2012.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/salsa208/$(DEPDIR)/libsodium_la-stream_salsa208_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/salsa208/ref/$(DEPDIR)/libsodium_la-stream_salsa208.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/salsa208/ref/$(DEPDIR)/libsodium_la-xor_salsa208.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/xsalsa20/$(DEPDIR)/libsodium_la-stream_xsalsa20_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/xsalsa20/ref/$(DEPDIR)/libsodium_la-stream_xsalsa20.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_stream/xsalsa20/ref/$(DEPDIR)/libsodium_la-xor_xsalsa20.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_verify/16/$(DEPDIR)/libsodium_la-verify_16_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_verify/16/ref/$(DEPDIR)/libsodium_la-verify_16.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_verify/32/$(DEPDIR)/libsodium_la-verify_32_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crypto_verify/32/ref/$(DEPDIR)/libsodium_la-verify_32.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@randombytes/$(DEPDIR)/libsodium_la-randombytes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@randombytes/salsa20/$(DEPDIR)/libsodium_la-randombytes_salsa20_random.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@randombytes/sysrandom/$(DEPDIR)/libsodium_la-randombytes_sysrandom.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sodium/$(DEPDIR)/libsodium_la-compat.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sodium/$(DEPDIR)/libsodium_la-core.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sodium/$(DEPDIR)/libsodium_la-utils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sodium/$(DEPDIR)/libsodium_la-version.Plo@am__quote@ + +.S.o: +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $< + +.S.obj: +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.S.lo: +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o $@ $< + +crypto_stream/salsa20/amd64_xmm6/libsodium_la-stream_salsa20_amd64_xmm6.lo: crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT crypto_stream/salsa20/amd64_xmm6/libsodium_la-stream_salsa20_amd64_xmm6.lo -MD -MP -MF crypto_stream/salsa20/amd64_xmm6/$(DEPDIR)/libsodium_la-stream_salsa20_amd64_xmm6.Tpo -c -o crypto_stream/salsa20/amd64_xmm6/libsodium_la-stream_salsa20_amd64_xmm6.lo `test -f 'crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S' || echo '$(srcdir)/'`crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/salsa20/amd64_xmm6/$(DEPDIR)/libsodium_la-stream_salsa20_amd64_xmm6.Tpo crypto_stream/salsa20/amd64_xmm6/$(DEPDIR)/libsodium_la-stream_salsa20_amd64_xmm6.Plo +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S' object='crypto_stream/salsa20/amd64_xmm6/libsodium_la-stream_salsa20_amd64_xmm6.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o crypto_stream/salsa20/amd64_xmm6/libsodium_la-stream_salsa20_amd64_xmm6.lo `test -f 'crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S' || echo '$(srcdir)/'`crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +crypto_auth/libsodium_la-crypto_auth.lo: crypto_auth/crypto_auth.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_auth/libsodium_la-crypto_auth.lo -MD -MP -MF crypto_auth/$(DEPDIR)/libsodium_la-crypto_auth.Tpo -c -o crypto_auth/libsodium_la-crypto_auth.lo `test -f 'crypto_auth/crypto_auth.c' || echo '$(srcdir)/'`crypto_auth/crypto_auth.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_auth/$(DEPDIR)/libsodium_la-crypto_auth.Tpo crypto_auth/$(DEPDIR)/libsodium_la-crypto_auth.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_auth/crypto_auth.c' object='crypto_auth/libsodium_la-crypto_auth.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_auth/libsodium_la-crypto_auth.lo `test -f 'crypto_auth/crypto_auth.c' || echo '$(srcdir)/'`crypto_auth/crypto_auth.c + +crypto_auth/hmacsha256/libsodium_la-auth_hmacsha256_api.lo: crypto_auth/hmacsha256/auth_hmacsha256_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_auth/hmacsha256/libsodium_la-auth_hmacsha256_api.lo -MD -MP -MF crypto_auth/hmacsha256/$(DEPDIR)/libsodium_la-auth_hmacsha256_api.Tpo -c -o crypto_auth/hmacsha256/libsodium_la-auth_hmacsha256_api.lo `test -f 'crypto_auth/hmacsha256/auth_hmacsha256_api.c' || echo '$(srcdir)/'`crypto_auth/hmacsha256/auth_hmacsha256_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_auth/hmacsha256/$(DEPDIR)/libsodium_la-auth_hmacsha256_api.Tpo crypto_auth/hmacsha256/$(DEPDIR)/libsodium_la-auth_hmacsha256_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_auth/hmacsha256/auth_hmacsha256_api.c' object='crypto_auth/hmacsha256/libsodium_la-auth_hmacsha256_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_auth/hmacsha256/libsodium_la-auth_hmacsha256_api.lo `test -f 'crypto_auth/hmacsha256/auth_hmacsha256_api.c' || echo '$(srcdir)/'`crypto_auth/hmacsha256/auth_hmacsha256_api.c + +crypto_auth/hmacsha256/ref/libsodium_la-hmac_hmacsha256.lo: crypto_auth/hmacsha256/ref/hmac_hmacsha256.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_auth/hmacsha256/ref/libsodium_la-hmac_hmacsha256.lo -MD -MP -MF crypto_auth/hmacsha256/ref/$(DEPDIR)/libsodium_la-hmac_hmacsha256.Tpo -c -o crypto_auth/hmacsha256/ref/libsodium_la-hmac_hmacsha256.lo `test -f 'crypto_auth/hmacsha256/ref/hmac_hmacsha256.c' || echo '$(srcdir)/'`crypto_auth/hmacsha256/ref/hmac_hmacsha256.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_auth/hmacsha256/ref/$(DEPDIR)/libsodium_la-hmac_hmacsha256.Tpo crypto_auth/hmacsha256/ref/$(DEPDIR)/libsodium_la-hmac_hmacsha256.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_auth/hmacsha256/ref/hmac_hmacsha256.c' object='crypto_auth/hmacsha256/ref/libsodium_la-hmac_hmacsha256.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_auth/hmacsha256/ref/libsodium_la-hmac_hmacsha256.lo `test -f 'crypto_auth/hmacsha256/ref/hmac_hmacsha256.c' || echo '$(srcdir)/'`crypto_auth/hmacsha256/ref/hmac_hmacsha256.c + +crypto_auth/hmacsha256/ref/libsodium_la-verify_hmacsha256.lo: crypto_auth/hmacsha256/ref/verify_hmacsha256.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_auth/hmacsha256/ref/libsodium_la-verify_hmacsha256.lo -MD -MP -MF crypto_auth/hmacsha256/ref/$(DEPDIR)/libsodium_la-verify_hmacsha256.Tpo -c -o crypto_auth/hmacsha256/ref/libsodium_la-verify_hmacsha256.lo `test -f 'crypto_auth/hmacsha256/ref/verify_hmacsha256.c' || echo '$(srcdir)/'`crypto_auth/hmacsha256/ref/verify_hmacsha256.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_auth/hmacsha256/ref/$(DEPDIR)/libsodium_la-verify_hmacsha256.Tpo crypto_auth/hmacsha256/ref/$(DEPDIR)/libsodium_la-verify_hmacsha256.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_auth/hmacsha256/ref/verify_hmacsha256.c' object='crypto_auth/hmacsha256/ref/libsodium_la-verify_hmacsha256.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_auth/hmacsha256/ref/libsodium_la-verify_hmacsha256.lo `test -f 'crypto_auth/hmacsha256/ref/verify_hmacsha256.c' || echo '$(srcdir)/'`crypto_auth/hmacsha256/ref/verify_hmacsha256.c + +crypto_auth/hmacsha512256/libsodium_la-auth_hmacsha512256_api.lo: crypto_auth/hmacsha512256/auth_hmacsha512256_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_auth/hmacsha512256/libsodium_la-auth_hmacsha512256_api.lo -MD -MP -MF crypto_auth/hmacsha512256/$(DEPDIR)/libsodium_la-auth_hmacsha512256_api.Tpo -c -o crypto_auth/hmacsha512256/libsodium_la-auth_hmacsha512256_api.lo `test -f 'crypto_auth/hmacsha512256/auth_hmacsha512256_api.c' || echo '$(srcdir)/'`crypto_auth/hmacsha512256/auth_hmacsha512256_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_auth/hmacsha512256/$(DEPDIR)/libsodium_la-auth_hmacsha512256_api.Tpo crypto_auth/hmacsha512256/$(DEPDIR)/libsodium_la-auth_hmacsha512256_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_auth/hmacsha512256/auth_hmacsha512256_api.c' object='crypto_auth/hmacsha512256/libsodium_la-auth_hmacsha512256_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_auth/hmacsha512256/libsodium_la-auth_hmacsha512256_api.lo `test -f 'crypto_auth/hmacsha512256/auth_hmacsha512256_api.c' || echo '$(srcdir)/'`crypto_auth/hmacsha512256/auth_hmacsha512256_api.c + +crypto_auth/hmacsha512256/ref/libsodium_la-hmac_hmacsha512256.lo: crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_auth/hmacsha512256/ref/libsodium_la-hmac_hmacsha512256.lo -MD -MP -MF crypto_auth/hmacsha512256/ref/$(DEPDIR)/libsodium_la-hmac_hmacsha512256.Tpo -c -o crypto_auth/hmacsha512256/ref/libsodium_la-hmac_hmacsha512256.lo `test -f 'crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c' || echo '$(srcdir)/'`crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_auth/hmacsha512256/ref/$(DEPDIR)/libsodium_la-hmac_hmacsha512256.Tpo crypto_auth/hmacsha512256/ref/$(DEPDIR)/libsodium_la-hmac_hmacsha512256.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c' object='crypto_auth/hmacsha512256/ref/libsodium_la-hmac_hmacsha512256.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_auth/hmacsha512256/ref/libsodium_la-hmac_hmacsha512256.lo `test -f 'crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c' || echo '$(srcdir)/'`crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c + +crypto_auth/hmacsha512256/ref/libsodium_la-verify_hmacsha512256.lo: crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_auth/hmacsha512256/ref/libsodium_la-verify_hmacsha512256.lo -MD -MP -MF crypto_auth/hmacsha512256/ref/$(DEPDIR)/libsodium_la-verify_hmacsha512256.Tpo -c -o crypto_auth/hmacsha512256/ref/libsodium_la-verify_hmacsha512256.lo `test -f 'crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c' || echo '$(srcdir)/'`crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_auth/hmacsha512256/ref/$(DEPDIR)/libsodium_la-verify_hmacsha512256.Tpo crypto_auth/hmacsha512256/ref/$(DEPDIR)/libsodium_la-verify_hmacsha512256.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c' object='crypto_auth/hmacsha512256/ref/libsodium_la-verify_hmacsha512256.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_auth/hmacsha512256/ref/libsodium_la-verify_hmacsha512256.lo `test -f 'crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c' || echo '$(srcdir)/'`crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c + +crypto_box/libsodium_la-crypto_box.lo: crypto_box/crypto_box.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_box/libsodium_la-crypto_box.lo -MD -MP -MF crypto_box/$(DEPDIR)/libsodium_la-crypto_box.Tpo -c -o crypto_box/libsodium_la-crypto_box.lo `test -f 'crypto_box/crypto_box.c' || echo '$(srcdir)/'`crypto_box/crypto_box.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_box/$(DEPDIR)/libsodium_la-crypto_box.Tpo crypto_box/$(DEPDIR)/libsodium_la-crypto_box.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_box/crypto_box.c' object='crypto_box/libsodium_la-crypto_box.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_box/libsodium_la-crypto_box.lo `test -f 'crypto_box/crypto_box.c' || echo '$(srcdir)/'`crypto_box/crypto_box.c + +crypto_box/curve25519xsalsa20poly1305/libsodium_la-box_curve25519xsalsa20poly1305_api.lo: crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_box/curve25519xsalsa20poly1305/libsodium_la-box_curve25519xsalsa20poly1305_api.lo -MD -MP -MF crypto_box/curve25519xsalsa20poly1305/$(DEPDIR)/libsodium_la-box_curve25519xsalsa20poly1305_api.Tpo -c -o crypto_box/curve25519xsalsa20poly1305/libsodium_la-box_curve25519xsalsa20poly1305_api.lo `test -f 'crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c' || echo '$(srcdir)/'`crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_box/curve25519xsalsa20poly1305/$(DEPDIR)/libsodium_la-box_curve25519xsalsa20poly1305_api.Tpo crypto_box/curve25519xsalsa20poly1305/$(DEPDIR)/libsodium_la-box_curve25519xsalsa20poly1305_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c' object='crypto_box/curve25519xsalsa20poly1305/libsodium_la-box_curve25519xsalsa20poly1305_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_box/curve25519xsalsa20poly1305/libsodium_la-box_curve25519xsalsa20poly1305_api.lo `test -f 'crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c' || echo '$(srcdir)/'`crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c + +crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-after_curve25519xsalsa20poly1305.lo: crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-after_curve25519xsalsa20poly1305.lo -MD -MP -MF crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-after_curve25519xsalsa20poly1305.Tpo -c -o crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-after_curve25519xsalsa20poly1305.lo `test -f 'crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c' || echo '$(srcdir)/'`crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-after_curve25519xsalsa20poly1305.Tpo crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-after_curve25519xsalsa20poly1305.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c' object='crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-after_curve25519xsalsa20poly1305.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-after_curve25519xsalsa20poly1305.lo `test -f 'crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c' || echo '$(srcdir)/'`crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c + +crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-before_curve25519xsalsa20poly1305.lo: crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-before_curve25519xsalsa20poly1305.lo -MD -MP -MF crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-before_curve25519xsalsa20poly1305.Tpo -c -o crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-before_curve25519xsalsa20poly1305.lo `test -f 'crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c' || echo '$(srcdir)/'`crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-before_curve25519xsalsa20poly1305.Tpo crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-before_curve25519xsalsa20poly1305.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c' object='crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-before_curve25519xsalsa20poly1305.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-before_curve25519xsalsa20poly1305.lo `test -f 'crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c' || echo '$(srcdir)/'`crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c + +crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-box_curve25519xsalsa20poly1305.lo: crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-box_curve25519xsalsa20poly1305.lo -MD -MP -MF crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-box_curve25519xsalsa20poly1305.Tpo -c -o crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-box_curve25519xsalsa20poly1305.lo `test -f 'crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c' || echo '$(srcdir)/'`crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-box_curve25519xsalsa20poly1305.Tpo crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-box_curve25519xsalsa20poly1305.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c' object='crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-box_curve25519xsalsa20poly1305.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-box_curve25519xsalsa20poly1305.lo `test -f 'crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c' || echo '$(srcdir)/'`crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c + +crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-keypair_curve25519xsalsa20poly1305.lo: crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-keypair_curve25519xsalsa20poly1305.lo -MD -MP -MF crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-keypair_curve25519xsalsa20poly1305.Tpo -c -o crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-keypair_curve25519xsalsa20poly1305.lo `test -f 'crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c' || echo '$(srcdir)/'`crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-keypair_curve25519xsalsa20poly1305.Tpo crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-keypair_curve25519xsalsa20poly1305.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c' object='crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-keypair_curve25519xsalsa20poly1305.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_box/curve25519xsalsa20poly1305/ref/libsodium_la-keypair_curve25519xsalsa20poly1305.lo `test -f 'crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c' || echo '$(srcdir)/'`crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c + +crypto_core/hsalsa20/ref2/libsodium_la-core_hsalsa20.lo: crypto_core/hsalsa20/ref2/core_hsalsa20.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_core/hsalsa20/ref2/libsodium_la-core_hsalsa20.lo -MD -MP -MF crypto_core/hsalsa20/ref2/$(DEPDIR)/libsodium_la-core_hsalsa20.Tpo -c -o crypto_core/hsalsa20/ref2/libsodium_la-core_hsalsa20.lo `test -f 'crypto_core/hsalsa20/ref2/core_hsalsa20.c' || echo '$(srcdir)/'`crypto_core/hsalsa20/ref2/core_hsalsa20.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_core/hsalsa20/ref2/$(DEPDIR)/libsodium_la-core_hsalsa20.Tpo crypto_core/hsalsa20/ref2/$(DEPDIR)/libsodium_la-core_hsalsa20.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_core/hsalsa20/ref2/core_hsalsa20.c' object='crypto_core/hsalsa20/ref2/libsodium_la-core_hsalsa20.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_core/hsalsa20/ref2/libsodium_la-core_hsalsa20.lo `test -f 'crypto_core/hsalsa20/ref2/core_hsalsa20.c' || echo '$(srcdir)/'`crypto_core/hsalsa20/ref2/core_hsalsa20.c + +crypto_core/hsalsa20/libsodium_la-core_hsalsa20_api.lo: crypto_core/hsalsa20/core_hsalsa20_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_core/hsalsa20/libsodium_la-core_hsalsa20_api.lo -MD -MP -MF crypto_core/hsalsa20/$(DEPDIR)/libsodium_la-core_hsalsa20_api.Tpo -c -o crypto_core/hsalsa20/libsodium_la-core_hsalsa20_api.lo `test -f 'crypto_core/hsalsa20/core_hsalsa20_api.c' || echo '$(srcdir)/'`crypto_core/hsalsa20/core_hsalsa20_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_core/hsalsa20/$(DEPDIR)/libsodium_la-core_hsalsa20_api.Tpo crypto_core/hsalsa20/$(DEPDIR)/libsodium_la-core_hsalsa20_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_core/hsalsa20/core_hsalsa20_api.c' object='crypto_core/hsalsa20/libsodium_la-core_hsalsa20_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_core/hsalsa20/libsodium_la-core_hsalsa20_api.lo `test -f 'crypto_core/hsalsa20/core_hsalsa20_api.c' || echo '$(srcdir)/'`crypto_core/hsalsa20/core_hsalsa20_api.c + +crypto_core/salsa20/ref/libsodium_la-core_salsa20.lo: crypto_core/salsa20/ref/core_salsa20.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_core/salsa20/ref/libsodium_la-core_salsa20.lo -MD -MP -MF crypto_core/salsa20/ref/$(DEPDIR)/libsodium_la-core_salsa20.Tpo -c -o crypto_core/salsa20/ref/libsodium_la-core_salsa20.lo `test -f 'crypto_core/salsa20/ref/core_salsa20.c' || echo '$(srcdir)/'`crypto_core/salsa20/ref/core_salsa20.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_core/salsa20/ref/$(DEPDIR)/libsodium_la-core_salsa20.Tpo crypto_core/salsa20/ref/$(DEPDIR)/libsodium_la-core_salsa20.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_core/salsa20/ref/core_salsa20.c' object='crypto_core/salsa20/ref/libsodium_la-core_salsa20.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_core/salsa20/ref/libsodium_la-core_salsa20.lo `test -f 'crypto_core/salsa20/ref/core_salsa20.c' || echo '$(srcdir)/'`crypto_core/salsa20/ref/core_salsa20.c + +crypto_core/salsa20/libsodium_la-core_salsa20_api.lo: crypto_core/salsa20/core_salsa20_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_core/salsa20/libsodium_la-core_salsa20_api.lo -MD -MP -MF crypto_core/salsa20/$(DEPDIR)/libsodium_la-core_salsa20_api.Tpo -c -o crypto_core/salsa20/libsodium_la-core_salsa20_api.lo `test -f 'crypto_core/salsa20/core_salsa20_api.c' || echo '$(srcdir)/'`crypto_core/salsa20/core_salsa20_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_core/salsa20/$(DEPDIR)/libsodium_la-core_salsa20_api.Tpo crypto_core/salsa20/$(DEPDIR)/libsodium_la-core_salsa20_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_core/salsa20/core_salsa20_api.c' object='crypto_core/salsa20/libsodium_la-core_salsa20_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_core/salsa20/libsodium_la-core_salsa20_api.lo `test -f 'crypto_core/salsa20/core_salsa20_api.c' || echo '$(srcdir)/'`crypto_core/salsa20/core_salsa20_api.c + +crypto_core/salsa2012/ref/libsodium_la-core_salsa2012.lo: crypto_core/salsa2012/ref/core_salsa2012.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_core/salsa2012/ref/libsodium_la-core_salsa2012.lo -MD -MP -MF crypto_core/salsa2012/ref/$(DEPDIR)/libsodium_la-core_salsa2012.Tpo -c -o crypto_core/salsa2012/ref/libsodium_la-core_salsa2012.lo `test -f 'crypto_core/salsa2012/ref/core_salsa2012.c' || echo '$(srcdir)/'`crypto_core/salsa2012/ref/core_salsa2012.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_core/salsa2012/ref/$(DEPDIR)/libsodium_la-core_salsa2012.Tpo crypto_core/salsa2012/ref/$(DEPDIR)/libsodium_la-core_salsa2012.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_core/salsa2012/ref/core_salsa2012.c' object='crypto_core/salsa2012/ref/libsodium_la-core_salsa2012.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_core/salsa2012/ref/libsodium_la-core_salsa2012.lo `test -f 'crypto_core/salsa2012/ref/core_salsa2012.c' || echo '$(srcdir)/'`crypto_core/salsa2012/ref/core_salsa2012.c + +crypto_core/salsa2012/libsodium_la-core_salsa2012_api.lo: crypto_core/salsa2012/core_salsa2012_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_core/salsa2012/libsodium_la-core_salsa2012_api.lo -MD -MP -MF crypto_core/salsa2012/$(DEPDIR)/libsodium_la-core_salsa2012_api.Tpo -c -o crypto_core/salsa2012/libsodium_la-core_salsa2012_api.lo `test -f 'crypto_core/salsa2012/core_salsa2012_api.c' || echo '$(srcdir)/'`crypto_core/salsa2012/core_salsa2012_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_core/salsa2012/$(DEPDIR)/libsodium_la-core_salsa2012_api.Tpo crypto_core/salsa2012/$(DEPDIR)/libsodium_la-core_salsa2012_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_core/salsa2012/core_salsa2012_api.c' object='crypto_core/salsa2012/libsodium_la-core_salsa2012_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_core/salsa2012/libsodium_la-core_salsa2012_api.lo `test -f 'crypto_core/salsa2012/core_salsa2012_api.c' || echo '$(srcdir)/'`crypto_core/salsa2012/core_salsa2012_api.c + +crypto_core/salsa208/ref/libsodium_la-core_salsa208.lo: crypto_core/salsa208/ref/core_salsa208.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_core/salsa208/ref/libsodium_la-core_salsa208.lo -MD -MP -MF crypto_core/salsa208/ref/$(DEPDIR)/libsodium_la-core_salsa208.Tpo -c -o crypto_core/salsa208/ref/libsodium_la-core_salsa208.lo `test -f 'crypto_core/salsa208/ref/core_salsa208.c' || echo '$(srcdir)/'`crypto_core/salsa208/ref/core_salsa208.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_core/salsa208/ref/$(DEPDIR)/libsodium_la-core_salsa208.Tpo crypto_core/salsa208/ref/$(DEPDIR)/libsodium_la-core_salsa208.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_core/salsa208/ref/core_salsa208.c' object='crypto_core/salsa208/ref/libsodium_la-core_salsa208.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_core/salsa208/ref/libsodium_la-core_salsa208.lo `test -f 'crypto_core/salsa208/ref/core_salsa208.c' || echo '$(srcdir)/'`crypto_core/salsa208/ref/core_salsa208.c + +crypto_core/salsa208/libsodium_la-core_salsa208_api.lo: crypto_core/salsa208/core_salsa208_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_core/salsa208/libsodium_la-core_salsa208_api.lo -MD -MP -MF crypto_core/salsa208/$(DEPDIR)/libsodium_la-core_salsa208_api.Tpo -c -o crypto_core/salsa208/libsodium_la-core_salsa208_api.lo `test -f 'crypto_core/salsa208/core_salsa208_api.c' || echo '$(srcdir)/'`crypto_core/salsa208/core_salsa208_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_core/salsa208/$(DEPDIR)/libsodium_la-core_salsa208_api.Tpo crypto_core/salsa208/$(DEPDIR)/libsodium_la-core_salsa208_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_core/salsa208/core_salsa208_api.c' object='crypto_core/salsa208/libsodium_la-core_salsa208_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_core/salsa208/libsodium_la-core_salsa208_api.lo `test -f 'crypto_core/salsa208/core_salsa208_api.c' || echo '$(srcdir)/'`crypto_core/salsa208/core_salsa208_api.c + +crypto_generichash/libsodium_la-crypto_generichash.lo: crypto_generichash/crypto_generichash.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_generichash/libsodium_la-crypto_generichash.lo -MD -MP -MF crypto_generichash/$(DEPDIR)/libsodium_la-crypto_generichash.Tpo -c -o crypto_generichash/libsodium_la-crypto_generichash.lo `test -f 'crypto_generichash/crypto_generichash.c' || echo '$(srcdir)/'`crypto_generichash/crypto_generichash.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_generichash/$(DEPDIR)/libsodium_la-crypto_generichash.Tpo crypto_generichash/$(DEPDIR)/libsodium_la-crypto_generichash.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_generichash/crypto_generichash.c' object='crypto_generichash/libsodium_la-crypto_generichash.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_generichash/libsodium_la-crypto_generichash.lo `test -f 'crypto_generichash/crypto_generichash.c' || echo '$(srcdir)/'`crypto_generichash/crypto_generichash.c + +crypto_generichash/blake2/libsodium_la-generichash_blake2_api.lo: crypto_generichash/blake2/generichash_blake2_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_generichash/blake2/libsodium_la-generichash_blake2_api.lo -MD -MP -MF crypto_generichash/blake2/$(DEPDIR)/libsodium_la-generichash_blake2_api.Tpo -c -o crypto_generichash/blake2/libsodium_la-generichash_blake2_api.lo `test -f 'crypto_generichash/blake2/generichash_blake2_api.c' || echo '$(srcdir)/'`crypto_generichash/blake2/generichash_blake2_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_generichash/blake2/$(DEPDIR)/libsodium_la-generichash_blake2_api.Tpo crypto_generichash/blake2/$(DEPDIR)/libsodium_la-generichash_blake2_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_generichash/blake2/generichash_blake2_api.c' object='crypto_generichash/blake2/libsodium_la-generichash_blake2_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_generichash/blake2/libsodium_la-generichash_blake2_api.lo `test -f 'crypto_generichash/blake2/generichash_blake2_api.c' || echo '$(srcdir)/'`crypto_generichash/blake2/generichash_blake2_api.c + +crypto_generichash/blake2/ref/libsodium_la-blake2b-ref.lo: crypto_generichash/blake2/ref/blake2b-ref.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_generichash/blake2/ref/libsodium_la-blake2b-ref.lo -MD -MP -MF crypto_generichash/blake2/ref/$(DEPDIR)/libsodium_la-blake2b-ref.Tpo -c -o crypto_generichash/blake2/ref/libsodium_la-blake2b-ref.lo `test -f 'crypto_generichash/blake2/ref/blake2b-ref.c' || echo '$(srcdir)/'`crypto_generichash/blake2/ref/blake2b-ref.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_generichash/blake2/ref/$(DEPDIR)/libsodium_la-blake2b-ref.Tpo crypto_generichash/blake2/ref/$(DEPDIR)/libsodium_la-blake2b-ref.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_generichash/blake2/ref/blake2b-ref.c' object='crypto_generichash/blake2/ref/libsodium_la-blake2b-ref.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_generichash/blake2/ref/libsodium_la-blake2b-ref.lo `test -f 'crypto_generichash/blake2/ref/blake2b-ref.c' || echo '$(srcdir)/'`crypto_generichash/blake2/ref/blake2b-ref.c + +crypto_generichash/blake2/ref/libsodium_la-generichash_blake2b.lo: crypto_generichash/blake2/ref/generichash_blake2b.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_generichash/blake2/ref/libsodium_la-generichash_blake2b.lo -MD -MP -MF crypto_generichash/blake2/ref/$(DEPDIR)/libsodium_la-generichash_blake2b.Tpo -c -o crypto_generichash/blake2/ref/libsodium_la-generichash_blake2b.lo `test -f 'crypto_generichash/blake2/ref/generichash_blake2b.c' || echo '$(srcdir)/'`crypto_generichash/blake2/ref/generichash_blake2b.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_generichash/blake2/ref/$(DEPDIR)/libsodium_la-generichash_blake2b.Tpo crypto_generichash/blake2/ref/$(DEPDIR)/libsodium_la-generichash_blake2b.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_generichash/blake2/ref/generichash_blake2b.c' object='crypto_generichash/blake2/ref/libsodium_la-generichash_blake2b.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_generichash/blake2/ref/libsodium_la-generichash_blake2b.lo `test -f 'crypto_generichash/blake2/ref/generichash_blake2b.c' || echo '$(srcdir)/'`crypto_generichash/blake2/ref/generichash_blake2b.c + +crypto_hash/libsodium_la-crypto_hash.lo: crypto_hash/crypto_hash.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_hash/libsodium_la-crypto_hash.lo -MD -MP -MF crypto_hash/$(DEPDIR)/libsodium_la-crypto_hash.Tpo -c -o crypto_hash/libsodium_la-crypto_hash.lo `test -f 'crypto_hash/crypto_hash.c' || echo '$(srcdir)/'`crypto_hash/crypto_hash.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_hash/$(DEPDIR)/libsodium_la-crypto_hash.Tpo crypto_hash/$(DEPDIR)/libsodium_la-crypto_hash.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_hash/crypto_hash.c' object='crypto_hash/libsodium_la-crypto_hash.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_hash/libsodium_la-crypto_hash.lo `test -f 'crypto_hash/crypto_hash.c' || echo '$(srcdir)/'`crypto_hash/crypto_hash.c + +crypto_hash/sha256/libsodium_la-hash_sha256_api.lo: crypto_hash/sha256/hash_sha256_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_hash/sha256/libsodium_la-hash_sha256_api.lo -MD -MP -MF crypto_hash/sha256/$(DEPDIR)/libsodium_la-hash_sha256_api.Tpo -c -o crypto_hash/sha256/libsodium_la-hash_sha256_api.lo `test -f 'crypto_hash/sha256/hash_sha256_api.c' || echo '$(srcdir)/'`crypto_hash/sha256/hash_sha256_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_hash/sha256/$(DEPDIR)/libsodium_la-hash_sha256_api.Tpo crypto_hash/sha256/$(DEPDIR)/libsodium_la-hash_sha256_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_hash/sha256/hash_sha256_api.c' object='crypto_hash/sha256/libsodium_la-hash_sha256_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_hash/sha256/libsodium_la-hash_sha256_api.lo `test -f 'crypto_hash/sha256/hash_sha256_api.c' || echo '$(srcdir)/'`crypto_hash/sha256/hash_sha256_api.c + +crypto_hash/sha256/ref/libsodium_la-hash_sha256.lo: crypto_hash/sha256/ref/hash_sha256.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_hash/sha256/ref/libsodium_la-hash_sha256.lo -MD -MP -MF crypto_hash/sha256/ref/$(DEPDIR)/libsodium_la-hash_sha256.Tpo -c -o crypto_hash/sha256/ref/libsodium_la-hash_sha256.lo `test -f 'crypto_hash/sha256/ref/hash_sha256.c' || echo '$(srcdir)/'`crypto_hash/sha256/ref/hash_sha256.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_hash/sha256/ref/$(DEPDIR)/libsodium_la-hash_sha256.Tpo crypto_hash/sha256/ref/$(DEPDIR)/libsodium_la-hash_sha256.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_hash/sha256/ref/hash_sha256.c' object='crypto_hash/sha256/ref/libsodium_la-hash_sha256.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_hash/sha256/ref/libsodium_la-hash_sha256.lo `test -f 'crypto_hash/sha256/ref/hash_sha256.c' || echo '$(srcdir)/'`crypto_hash/sha256/ref/hash_sha256.c + +crypto_hash/sha512/libsodium_la-hash_sha512_api.lo: crypto_hash/sha512/hash_sha512_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_hash/sha512/libsodium_la-hash_sha512_api.lo -MD -MP -MF crypto_hash/sha512/$(DEPDIR)/libsodium_la-hash_sha512_api.Tpo -c -o crypto_hash/sha512/libsodium_la-hash_sha512_api.lo `test -f 'crypto_hash/sha512/hash_sha512_api.c' || echo '$(srcdir)/'`crypto_hash/sha512/hash_sha512_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_hash/sha512/$(DEPDIR)/libsodium_la-hash_sha512_api.Tpo crypto_hash/sha512/$(DEPDIR)/libsodium_la-hash_sha512_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_hash/sha512/hash_sha512_api.c' object='crypto_hash/sha512/libsodium_la-hash_sha512_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_hash/sha512/libsodium_la-hash_sha512_api.lo `test -f 'crypto_hash/sha512/hash_sha512_api.c' || echo '$(srcdir)/'`crypto_hash/sha512/hash_sha512_api.c + +crypto_hash/sha512/ref/libsodium_la-hash_sha512.lo: crypto_hash/sha512/ref/hash_sha512.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_hash/sha512/ref/libsodium_la-hash_sha512.lo -MD -MP -MF crypto_hash/sha512/ref/$(DEPDIR)/libsodium_la-hash_sha512.Tpo -c -o crypto_hash/sha512/ref/libsodium_la-hash_sha512.lo `test -f 'crypto_hash/sha512/ref/hash_sha512.c' || echo '$(srcdir)/'`crypto_hash/sha512/ref/hash_sha512.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_hash/sha512/ref/$(DEPDIR)/libsodium_la-hash_sha512.Tpo crypto_hash/sha512/ref/$(DEPDIR)/libsodium_la-hash_sha512.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_hash/sha512/ref/hash_sha512.c' object='crypto_hash/sha512/ref/libsodium_la-hash_sha512.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_hash/sha512/ref/libsodium_la-hash_sha512.lo `test -f 'crypto_hash/sha512/ref/hash_sha512.c' || echo '$(srcdir)/'`crypto_hash/sha512/ref/hash_sha512.c + +crypto_hashblocks/sha256/ref/libsodium_la-blocks_sha256.lo: crypto_hashblocks/sha256/ref/blocks_sha256.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_hashblocks/sha256/ref/libsodium_la-blocks_sha256.lo -MD -MP -MF crypto_hashblocks/sha256/ref/$(DEPDIR)/libsodium_la-blocks_sha256.Tpo -c -o crypto_hashblocks/sha256/ref/libsodium_la-blocks_sha256.lo `test -f 'crypto_hashblocks/sha256/ref/blocks_sha256.c' || echo '$(srcdir)/'`crypto_hashblocks/sha256/ref/blocks_sha256.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_hashblocks/sha256/ref/$(DEPDIR)/libsodium_la-blocks_sha256.Tpo crypto_hashblocks/sha256/ref/$(DEPDIR)/libsodium_la-blocks_sha256.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_hashblocks/sha256/ref/blocks_sha256.c' object='crypto_hashblocks/sha256/ref/libsodium_la-blocks_sha256.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_hashblocks/sha256/ref/libsodium_la-blocks_sha256.lo `test -f 'crypto_hashblocks/sha256/ref/blocks_sha256.c' || echo '$(srcdir)/'`crypto_hashblocks/sha256/ref/blocks_sha256.c + +crypto_hashblocks/sha256/libsodium_la-hashblocks_sha256_api.lo: crypto_hashblocks/sha256/hashblocks_sha256_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_hashblocks/sha256/libsodium_la-hashblocks_sha256_api.lo -MD -MP -MF crypto_hashblocks/sha256/$(DEPDIR)/libsodium_la-hashblocks_sha256_api.Tpo -c -o crypto_hashblocks/sha256/libsodium_la-hashblocks_sha256_api.lo `test -f 'crypto_hashblocks/sha256/hashblocks_sha256_api.c' || echo '$(srcdir)/'`crypto_hashblocks/sha256/hashblocks_sha256_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_hashblocks/sha256/$(DEPDIR)/libsodium_la-hashblocks_sha256_api.Tpo crypto_hashblocks/sha256/$(DEPDIR)/libsodium_la-hashblocks_sha256_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_hashblocks/sha256/hashblocks_sha256_api.c' object='crypto_hashblocks/sha256/libsodium_la-hashblocks_sha256_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_hashblocks/sha256/libsodium_la-hashblocks_sha256_api.lo `test -f 'crypto_hashblocks/sha256/hashblocks_sha256_api.c' || echo '$(srcdir)/'`crypto_hashblocks/sha256/hashblocks_sha256_api.c + +crypto_hashblocks/sha512/ref/libsodium_la-blocks_sha512.lo: crypto_hashblocks/sha512/ref/blocks_sha512.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_hashblocks/sha512/ref/libsodium_la-blocks_sha512.lo -MD -MP -MF crypto_hashblocks/sha512/ref/$(DEPDIR)/libsodium_la-blocks_sha512.Tpo -c -o crypto_hashblocks/sha512/ref/libsodium_la-blocks_sha512.lo `test -f 'crypto_hashblocks/sha512/ref/blocks_sha512.c' || echo '$(srcdir)/'`crypto_hashblocks/sha512/ref/blocks_sha512.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_hashblocks/sha512/ref/$(DEPDIR)/libsodium_la-blocks_sha512.Tpo crypto_hashblocks/sha512/ref/$(DEPDIR)/libsodium_la-blocks_sha512.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_hashblocks/sha512/ref/blocks_sha512.c' object='crypto_hashblocks/sha512/ref/libsodium_la-blocks_sha512.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_hashblocks/sha512/ref/libsodium_la-blocks_sha512.lo `test -f 'crypto_hashblocks/sha512/ref/blocks_sha512.c' || echo '$(srcdir)/'`crypto_hashblocks/sha512/ref/blocks_sha512.c + +crypto_hashblocks/sha512/libsodium_la-hashblocks_sha512_api.lo: crypto_hashblocks/sha512/hashblocks_sha512_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_hashblocks/sha512/libsodium_la-hashblocks_sha512_api.lo -MD -MP -MF crypto_hashblocks/sha512/$(DEPDIR)/libsodium_la-hashblocks_sha512_api.Tpo -c -o crypto_hashblocks/sha512/libsodium_la-hashblocks_sha512_api.lo `test -f 'crypto_hashblocks/sha512/hashblocks_sha512_api.c' || echo '$(srcdir)/'`crypto_hashblocks/sha512/hashblocks_sha512_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_hashblocks/sha512/$(DEPDIR)/libsodium_la-hashblocks_sha512_api.Tpo crypto_hashblocks/sha512/$(DEPDIR)/libsodium_la-hashblocks_sha512_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_hashblocks/sha512/hashblocks_sha512_api.c' object='crypto_hashblocks/sha512/libsodium_la-hashblocks_sha512_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_hashblocks/sha512/libsodium_la-hashblocks_sha512_api.lo `test -f 'crypto_hashblocks/sha512/hashblocks_sha512_api.c' || echo '$(srcdir)/'`crypto_hashblocks/sha512/hashblocks_sha512_api.c + +crypto_onetimeauth/libsodium_la-crypto_onetimeauth.lo: crypto_onetimeauth/crypto_onetimeauth.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_onetimeauth/libsodium_la-crypto_onetimeauth.lo -MD -MP -MF crypto_onetimeauth/$(DEPDIR)/libsodium_la-crypto_onetimeauth.Tpo -c -o crypto_onetimeauth/libsodium_la-crypto_onetimeauth.lo `test -f 'crypto_onetimeauth/crypto_onetimeauth.c' || echo '$(srcdir)/'`crypto_onetimeauth/crypto_onetimeauth.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_onetimeauth/$(DEPDIR)/libsodium_la-crypto_onetimeauth.Tpo crypto_onetimeauth/$(DEPDIR)/libsodium_la-crypto_onetimeauth.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_onetimeauth/crypto_onetimeauth.c' object='crypto_onetimeauth/libsodium_la-crypto_onetimeauth.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_onetimeauth/libsodium_la-crypto_onetimeauth.lo `test -f 'crypto_onetimeauth/crypto_onetimeauth.c' || echo '$(srcdir)/'`crypto_onetimeauth/crypto_onetimeauth.c + +crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305.lo: crypto_onetimeauth/poly1305/onetimeauth_poly1305.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305.lo -MD -MP -MF crypto_onetimeauth/poly1305/$(DEPDIR)/libsodium_la-onetimeauth_poly1305.Tpo -c -o crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305.lo `test -f 'crypto_onetimeauth/poly1305/onetimeauth_poly1305.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/onetimeauth_poly1305.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_onetimeauth/poly1305/$(DEPDIR)/libsodium_la-onetimeauth_poly1305.Tpo crypto_onetimeauth/poly1305/$(DEPDIR)/libsodium_la-onetimeauth_poly1305.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_onetimeauth/poly1305/onetimeauth_poly1305.c' object='crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305.lo `test -f 'crypto_onetimeauth/poly1305/onetimeauth_poly1305.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/onetimeauth_poly1305.c + +crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_api.lo: crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_api.lo -MD -MP -MF crypto_onetimeauth/poly1305/$(DEPDIR)/libsodium_la-onetimeauth_poly1305_api.Tpo -c -o crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_api.lo `test -f 'crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_onetimeauth/poly1305/$(DEPDIR)/libsodium_la-onetimeauth_poly1305_api.Tpo crypto_onetimeauth/poly1305/$(DEPDIR)/libsodium_la-onetimeauth_poly1305_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c' object='crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_api.lo `test -f 'crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c + +crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_try.lo: crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_try.lo -MD -MP -MF crypto_onetimeauth/poly1305/$(DEPDIR)/libsodium_la-onetimeauth_poly1305_try.Tpo -c -o crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_try.lo `test -f 'crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_onetimeauth/poly1305/$(DEPDIR)/libsodium_la-onetimeauth_poly1305_try.Tpo crypto_onetimeauth/poly1305/$(DEPDIR)/libsodium_la-onetimeauth_poly1305_try.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c' object='crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_try.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_onetimeauth/poly1305/libsodium_la-onetimeauth_poly1305_try.lo `test -f 'crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c + +crypto_onetimeauth/poly1305/53/libsodium_la-auth_poly1305_53.lo: crypto_onetimeauth/poly1305/53/auth_poly1305_53.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_onetimeauth/poly1305/53/libsodium_la-auth_poly1305_53.lo -MD -MP -MF crypto_onetimeauth/poly1305/53/$(DEPDIR)/libsodium_la-auth_poly1305_53.Tpo -c -o crypto_onetimeauth/poly1305/53/libsodium_la-auth_poly1305_53.lo `test -f 'crypto_onetimeauth/poly1305/53/auth_poly1305_53.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/53/auth_poly1305_53.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_onetimeauth/poly1305/53/$(DEPDIR)/libsodium_la-auth_poly1305_53.Tpo crypto_onetimeauth/poly1305/53/$(DEPDIR)/libsodium_la-auth_poly1305_53.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_onetimeauth/poly1305/53/auth_poly1305_53.c' object='crypto_onetimeauth/poly1305/53/libsodium_la-auth_poly1305_53.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_onetimeauth/poly1305/53/libsodium_la-auth_poly1305_53.lo `test -f 'crypto_onetimeauth/poly1305/53/auth_poly1305_53.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/53/auth_poly1305_53.c + +crypto_onetimeauth/poly1305/53/libsodium_la-verify_poly1305_53.lo: crypto_onetimeauth/poly1305/53/verify_poly1305_53.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_onetimeauth/poly1305/53/libsodium_la-verify_poly1305_53.lo -MD -MP -MF crypto_onetimeauth/poly1305/53/$(DEPDIR)/libsodium_la-verify_poly1305_53.Tpo -c -o crypto_onetimeauth/poly1305/53/libsodium_la-verify_poly1305_53.lo `test -f 'crypto_onetimeauth/poly1305/53/verify_poly1305_53.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/53/verify_poly1305_53.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_onetimeauth/poly1305/53/$(DEPDIR)/libsodium_la-verify_poly1305_53.Tpo crypto_onetimeauth/poly1305/53/$(DEPDIR)/libsodium_la-verify_poly1305_53.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_onetimeauth/poly1305/53/verify_poly1305_53.c' object='crypto_onetimeauth/poly1305/53/libsodium_la-verify_poly1305_53.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_onetimeauth/poly1305/53/libsodium_la-verify_poly1305_53.lo `test -f 'crypto_onetimeauth/poly1305/53/verify_poly1305_53.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/53/verify_poly1305_53.c + +crypto_onetimeauth/poly1305/donna/libsodium_la-auth_poly1305_donna.lo: crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_onetimeauth/poly1305/donna/libsodium_la-auth_poly1305_donna.lo -MD -MP -MF crypto_onetimeauth/poly1305/donna/$(DEPDIR)/libsodium_la-auth_poly1305_donna.Tpo -c -o crypto_onetimeauth/poly1305/donna/libsodium_la-auth_poly1305_donna.lo `test -f 'crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_onetimeauth/poly1305/donna/$(DEPDIR)/libsodium_la-auth_poly1305_donna.Tpo crypto_onetimeauth/poly1305/donna/$(DEPDIR)/libsodium_la-auth_poly1305_donna.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c' object='crypto_onetimeauth/poly1305/donna/libsodium_la-auth_poly1305_donna.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_onetimeauth/poly1305/donna/libsodium_la-auth_poly1305_donna.lo `test -f 'crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c + +crypto_onetimeauth/poly1305/donna/libsodium_la-verify_poly1305_donna.lo: crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_onetimeauth/poly1305/donna/libsodium_la-verify_poly1305_donna.lo -MD -MP -MF crypto_onetimeauth/poly1305/donna/$(DEPDIR)/libsodium_la-verify_poly1305_donna.Tpo -c -o crypto_onetimeauth/poly1305/donna/libsodium_la-verify_poly1305_donna.lo `test -f 'crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_onetimeauth/poly1305/donna/$(DEPDIR)/libsodium_la-verify_poly1305_donna.Tpo crypto_onetimeauth/poly1305/donna/$(DEPDIR)/libsodium_la-verify_poly1305_donna.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c' object='crypto_onetimeauth/poly1305/donna/libsodium_la-verify_poly1305_donna.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_onetimeauth/poly1305/donna/libsodium_la-verify_poly1305_donna.lo `test -f 'crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c' || echo '$(srcdir)/'`crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c + +crypto_scalarmult/libsodium_la-crypto_scalarmult.lo: crypto_scalarmult/crypto_scalarmult.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_scalarmult/libsodium_la-crypto_scalarmult.lo -MD -MP -MF crypto_scalarmult/$(DEPDIR)/libsodium_la-crypto_scalarmult.Tpo -c -o crypto_scalarmult/libsodium_la-crypto_scalarmult.lo `test -f 'crypto_scalarmult/crypto_scalarmult.c' || echo '$(srcdir)/'`crypto_scalarmult/crypto_scalarmult.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_scalarmult/$(DEPDIR)/libsodium_la-crypto_scalarmult.Tpo crypto_scalarmult/$(DEPDIR)/libsodium_la-crypto_scalarmult.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_scalarmult/crypto_scalarmult.c' object='crypto_scalarmult/libsodium_la-crypto_scalarmult.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_scalarmult/libsodium_la-crypto_scalarmult.lo `test -f 'crypto_scalarmult/crypto_scalarmult.c' || echo '$(srcdir)/'`crypto_scalarmult/crypto_scalarmult.c + +crypto_secretbox/libsodium_la-crypto_secretbox.lo: crypto_secretbox/crypto_secretbox.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_secretbox/libsodium_la-crypto_secretbox.lo -MD -MP -MF crypto_secretbox/$(DEPDIR)/libsodium_la-crypto_secretbox.Tpo -c -o crypto_secretbox/libsodium_la-crypto_secretbox.lo `test -f 'crypto_secretbox/crypto_secretbox.c' || echo '$(srcdir)/'`crypto_secretbox/crypto_secretbox.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_secretbox/$(DEPDIR)/libsodium_la-crypto_secretbox.Tpo crypto_secretbox/$(DEPDIR)/libsodium_la-crypto_secretbox.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_secretbox/crypto_secretbox.c' object='crypto_secretbox/libsodium_la-crypto_secretbox.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_secretbox/libsodium_la-crypto_secretbox.lo `test -f 'crypto_secretbox/crypto_secretbox.c' || echo '$(srcdir)/'`crypto_secretbox/crypto_secretbox.c + +crypto_secretbox/xsalsa20poly1305/libsodium_la-secretbox_xsalsa20poly1305_api.lo: crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_secretbox/xsalsa20poly1305/libsodium_la-secretbox_xsalsa20poly1305_api.lo -MD -MP -MF crypto_secretbox/xsalsa20poly1305/$(DEPDIR)/libsodium_la-secretbox_xsalsa20poly1305_api.Tpo -c -o crypto_secretbox/xsalsa20poly1305/libsodium_la-secretbox_xsalsa20poly1305_api.lo `test -f 'crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c' || echo '$(srcdir)/'`crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_secretbox/xsalsa20poly1305/$(DEPDIR)/libsodium_la-secretbox_xsalsa20poly1305_api.Tpo crypto_secretbox/xsalsa20poly1305/$(DEPDIR)/libsodium_la-secretbox_xsalsa20poly1305_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c' object='crypto_secretbox/xsalsa20poly1305/libsodium_la-secretbox_xsalsa20poly1305_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_secretbox/xsalsa20poly1305/libsodium_la-secretbox_xsalsa20poly1305_api.lo `test -f 'crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c' || echo '$(srcdir)/'`crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c + +crypto_secretbox/xsalsa20poly1305/ref/libsodium_la-box_xsalsa20poly1305.lo: crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_secretbox/xsalsa20poly1305/ref/libsodium_la-box_xsalsa20poly1305.lo -MD -MP -MF crypto_secretbox/xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-box_xsalsa20poly1305.Tpo -c -o crypto_secretbox/xsalsa20poly1305/ref/libsodium_la-box_xsalsa20poly1305.lo `test -f 'crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c' || echo '$(srcdir)/'`crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_secretbox/xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-box_xsalsa20poly1305.Tpo crypto_secretbox/xsalsa20poly1305/ref/$(DEPDIR)/libsodium_la-box_xsalsa20poly1305.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c' object='crypto_secretbox/xsalsa20poly1305/ref/libsodium_la-box_xsalsa20poly1305.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_secretbox/xsalsa20poly1305/ref/libsodium_la-box_xsalsa20poly1305.lo `test -f 'crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c' || echo '$(srcdir)/'`crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c + +crypto_shorthash/libsodium_la-crypto_shorthash.lo: crypto_shorthash/crypto_shorthash.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_shorthash/libsodium_la-crypto_shorthash.lo -MD -MP -MF crypto_shorthash/$(DEPDIR)/libsodium_la-crypto_shorthash.Tpo -c -o crypto_shorthash/libsodium_la-crypto_shorthash.lo `test -f 'crypto_shorthash/crypto_shorthash.c' || echo '$(srcdir)/'`crypto_shorthash/crypto_shorthash.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_shorthash/$(DEPDIR)/libsodium_la-crypto_shorthash.Tpo crypto_shorthash/$(DEPDIR)/libsodium_la-crypto_shorthash.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_shorthash/crypto_shorthash.c' object='crypto_shorthash/libsodium_la-crypto_shorthash.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_shorthash/libsodium_la-crypto_shorthash.lo `test -f 'crypto_shorthash/crypto_shorthash.c' || echo '$(srcdir)/'`crypto_shorthash/crypto_shorthash.c + +crypto_shorthash/siphash24/libsodium_la-shorthash_siphash24_api.lo: crypto_shorthash/siphash24/shorthash_siphash24_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_shorthash/siphash24/libsodium_la-shorthash_siphash24_api.lo -MD -MP -MF crypto_shorthash/siphash24/$(DEPDIR)/libsodium_la-shorthash_siphash24_api.Tpo -c -o crypto_shorthash/siphash24/libsodium_la-shorthash_siphash24_api.lo `test -f 'crypto_shorthash/siphash24/shorthash_siphash24_api.c' || echo '$(srcdir)/'`crypto_shorthash/siphash24/shorthash_siphash24_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_shorthash/siphash24/$(DEPDIR)/libsodium_la-shorthash_siphash24_api.Tpo crypto_shorthash/siphash24/$(DEPDIR)/libsodium_la-shorthash_siphash24_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_shorthash/siphash24/shorthash_siphash24_api.c' object='crypto_shorthash/siphash24/libsodium_la-shorthash_siphash24_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_shorthash/siphash24/libsodium_la-shorthash_siphash24_api.lo `test -f 'crypto_shorthash/siphash24/shorthash_siphash24_api.c' || echo '$(srcdir)/'`crypto_shorthash/siphash24/shorthash_siphash24_api.c + +crypto_shorthash/siphash24/ref/libsodium_la-shorthash_siphash24.lo: crypto_shorthash/siphash24/ref/shorthash_siphash24.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_shorthash/siphash24/ref/libsodium_la-shorthash_siphash24.lo -MD -MP -MF crypto_shorthash/siphash24/ref/$(DEPDIR)/libsodium_la-shorthash_siphash24.Tpo -c -o crypto_shorthash/siphash24/ref/libsodium_la-shorthash_siphash24.lo `test -f 'crypto_shorthash/siphash24/ref/shorthash_siphash24.c' || echo '$(srcdir)/'`crypto_shorthash/siphash24/ref/shorthash_siphash24.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_shorthash/siphash24/ref/$(DEPDIR)/libsodium_la-shorthash_siphash24.Tpo crypto_shorthash/siphash24/ref/$(DEPDIR)/libsodium_la-shorthash_siphash24.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_shorthash/siphash24/ref/shorthash_siphash24.c' object='crypto_shorthash/siphash24/ref/libsodium_la-shorthash_siphash24.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_shorthash/siphash24/ref/libsodium_la-shorthash_siphash24.lo `test -f 'crypto_shorthash/siphash24/ref/shorthash_siphash24.c' || echo '$(srcdir)/'`crypto_shorthash/siphash24/ref/shorthash_siphash24.c + +crypto_sign/libsodium_la-crypto_sign.lo: crypto_sign/crypto_sign.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/libsodium_la-crypto_sign.lo -MD -MP -MF crypto_sign/$(DEPDIR)/libsodium_la-crypto_sign.Tpo -c -o crypto_sign/libsodium_la-crypto_sign.lo `test -f 'crypto_sign/crypto_sign.c' || echo '$(srcdir)/'`crypto_sign/crypto_sign.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/$(DEPDIR)/libsodium_la-crypto_sign.Tpo crypto_sign/$(DEPDIR)/libsodium_la-crypto_sign.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/crypto_sign.c' object='crypto_sign/libsodium_la-crypto_sign.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/libsodium_la-crypto_sign.lo `test -f 'crypto_sign/crypto_sign.c' || echo '$(srcdir)/'`crypto_sign/crypto_sign.c + +crypto_sign/ed25519/libsodium_la-sign_ed25519_api.lo: crypto_sign/ed25519/sign_ed25519_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/libsodium_la-sign_ed25519_api.lo -MD -MP -MF crypto_sign/ed25519/$(DEPDIR)/libsodium_la-sign_ed25519_api.Tpo -c -o crypto_sign/ed25519/libsodium_la-sign_ed25519_api.lo `test -f 'crypto_sign/ed25519/sign_ed25519_api.c' || echo '$(srcdir)/'`crypto_sign/ed25519/sign_ed25519_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/$(DEPDIR)/libsodium_la-sign_ed25519_api.Tpo crypto_sign/ed25519/$(DEPDIR)/libsodium_la-sign_ed25519_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/sign_ed25519_api.c' object='crypto_sign/ed25519/libsodium_la-sign_ed25519_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/libsodium_la-sign_ed25519_api.lo `test -f 'crypto_sign/ed25519/sign_ed25519_api.c' || echo '$(srcdir)/'`crypto_sign/ed25519/sign_ed25519_api.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_0.lo: crypto_sign/ed25519/ref10/fe_0.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_0.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_0.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_0.lo `test -f 'crypto_sign/ed25519/ref10/fe_0.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_0.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_0.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_0.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_0.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_0.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_0.lo `test -f 'crypto_sign/ed25519/ref10/fe_0.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_0.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_1.lo: crypto_sign/ed25519/ref10/fe_1.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_1.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_1.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_1.lo `test -f 'crypto_sign/ed25519/ref10/fe_1.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_1.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_1.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_1.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_1.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_1.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_1.lo `test -f 'crypto_sign/ed25519/ref10/fe_1.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_1.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_add.lo: crypto_sign/ed25519/ref10/fe_add.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_add.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_add.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_add.lo `test -f 'crypto_sign/ed25519/ref10/fe_add.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_add.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_add.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_add.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_add.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_add.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_add.lo `test -f 'crypto_sign/ed25519/ref10/fe_add.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_add.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_cmov.lo: crypto_sign/ed25519/ref10/fe_cmov.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_cmov.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_cmov.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_cmov.lo `test -f 'crypto_sign/ed25519/ref10/fe_cmov.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_cmov.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_cmov.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_cmov.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_cmov.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_cmov.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_cmov.lo `test -f 'crypto_sign/ed25519/ref10/fe_cmov.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_cmov.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_copy.lo: crypto_sign/ed25519/ref10/fe_copy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_copy.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_copy.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_copy.lo `test -f 'crypto_sign/ed25519/ref10/fe_copy.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_copy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_copy.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_copy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_copy.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_copy.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_copy.lo `test -f 'crypto_sign/ed25519/ref10/fe_copy.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_copy.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_frombytes.lo: crypto_sign/ed25519/ref10/fe_frombytes.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_frombytes.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_frombytes.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_frombytes.lo `test -f 'crypto_sign/ed25519/ref10/fe_frombytes.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_frombytes.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_frombytes.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_frombytes.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_frombytes.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_frombytes.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_frombytes.lo `test -f 'crypto_sign/ed25519/ref10/fe_frombytes.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_frombytes.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_invert.lo: crypto_sign/ed25519/ref10/fe_invert.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_invert.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_invert.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_invert.lo `test -f 'crypto_sign/ed25519/ref10/fe_invert.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_invert.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_invert.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_invert.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_invert.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_invert.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_invert.lo `test -f 'crypto_sign/ed25519/ref10/fe_invert.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_invert.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_isnegative.lo: crypto_sign/ed25519/ref10/fe_isnegative.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_isnegative.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_isnegative.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_isnegative.lo `test -f 'crypto_sign/ed25519/ref10/fe_isnegative.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_isnegative.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_isnegative.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_isnegative.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_isnegative.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_isnegative.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_isnegative.lo `test -f 'crypto_sign/ed25519/ref10/fe_isnegative.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_isnegative.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_isnonzero.lo: crypto_sign/ed25519/ref10/fe_isnonzero.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_isnonzero.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_isnonzero.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_isnonzero.lo `test -f 'crypto_sign/ed25519/ref10/fe_isnonzero.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_isnonzero.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_isnonzero.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_isnonzero.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_isnonzero.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_isnonzero.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_isnonzero.lo `test -f 'crypto_sign/ed25519/ref10/fe_isnonzero.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_isnonzero.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_mul.lo: crypto_sign/ed25519/ref10/fe_mul.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_mul.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_mul.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_mul.lo `test -f 'crypto_sign/ed25519/ref10/fe_mul.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_mul.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_mul.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_mul.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_mul.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_mul.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_mul.lo `test -f 'crypto_sign/ed25519/ref10/fe_mul.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_mul.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_neg.lo: crypto_sign/ed25519/ref10/fe_neg.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_neg.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_neg.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_neg.lo `test -f 'crypto_sign/ed25519/ref10/fe_neg.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_neg.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_neg.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_neg.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_neg.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_neg.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_neg.lo `test -f 'crypto_sign/ed25519/ref10/fe_neg.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_neg.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_pow22523.lo: crypto_sign/ed25519/ref10/fe_pow22523.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_pow22523.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_pow22523.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_pow22523.lo `test -f 'crypto_sign/ed25519/ref10/fe_pow22523.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_pow22523.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_pow22523.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_pow22523.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_pow22523.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_pow22523.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_pow22523.lo `test -f 'crypto_sign/ed25519/ref10/fe_pow22523.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_pow22523.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_sq.lo: crypto_sign/ed25519/ref10/fe_sq.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_sq.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_sq.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_sq.lo `test -f 'crypto_sign/ed25519/ref10/fe_sq.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_sq.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_sq.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_sq.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_sq.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_sq.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_sq.lo `test -f 'crypto_sign/ed25519/ref10/fe_sq.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_sq.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_sq2.lo: crypto_sign/ed25519/ref10/fe_sq2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_sq2.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_sq2.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_sq2.lo `test -f 'crypto_sign/ed25519/ref10/fe_sq2.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_sq2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_sq2.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_sq2.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_sq2.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_sq2.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_sq2.lo `test -f 'crypto_sign/ed25519/ref10/fe_sq2.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_sq2.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_sub.lo: crypto_sign/ed25519/ref10/fe_sub.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_sub.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_sub.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_sub.lo `test -f 'crypto_sign/ed25519/ref10/fe_sub.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_sub.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_sub.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_sub.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_sub.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_sub.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_sub.lo `test -f 'crypto_sign/ed25519/ref10/fe_sub.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_sub.c + +crypto_sign/ed25519/ref10/libsodium_la-fe_tobytes.lo: crypto_sign/ed25519/ref10/fe_tobytes.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-fe_tobytes.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_tobytes.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_tobytes.lo `test -f 'crypto_sign/ed25519/ref10/fe_tobytes.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_tobytes.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_tobytes.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-fe_tobytes.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/fe_tobytes.c' object='crypto_sign/ed25519/ref10/libsodium_la-fe_tobytes.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-fe_tobytes.lo `test -f 'crypto_sign/ed25519/ref10/fe_tobytes.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/fe_tobytes.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_add.lo: crypto_sign/ed25519/ref10/ge_add.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_add.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_add.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_add.lo `test -f 'crypto_sign/ed25519/ref10/ge_add.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_add.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_add.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_add.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_add.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_add.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_add.lo `test -f 'crypto_sign/ed25519/ref10/ge_add.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_add.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_double_scalarmult.lo: crypto_sign/ed25519/ref10/ge_double_scalarmult.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_double_scalarmult.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_double_scalarmult.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_double_scalarmult.lo `test -f 'crypto_sign/ed25519/ref10/ge_double_scalarmult.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_double_scalarmult.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_double_scalarmult.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_double_scalarmult.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_double_scalarmult.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_double_scalarmult.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_double_scalarmult.lo `test -f 'crypto_sign/ed25519/ref10/ge_double_scalarmult.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_double_scalarmult.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_frombytes.lo: crypto_sign/ed25519/ref10/ge_frombytes.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_frombytes.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_frombytes.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_frombytes.lo `test -f 'crypto_sign/ed25519/ref10/ge_frombytes.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_frombytes.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_frombytes.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_frombytes.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_frombytes.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_frombytes.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_frombytes.lo `test -f 'crypto_sign/ed25519/ref10/ge_frombytes.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_frombytes.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_madd.lo: crypto_sign/ed25519/ref10/ge_madd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_madd.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_madd.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_madd.lo `test -f 'crypto_sign/ed25519/ref10/ge_madd.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_madd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_madd.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_madd.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_madd.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_madd.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_madd.lo `test -f 'crypto_sign/ed25519/ref10/ge_madd.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_madd.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_msub.lo: crypto_sign/ed25519/ref10/ge_msub.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_msub.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_msub.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_msub.lo `test -f 'crypto_sign/ed25519/ref10/ge_msub.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_msub.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_msub.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_msub.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_msub.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_msub.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_msub.lo `test -f 'crypto_sign/ed25519/ref10/ge_msub.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_msub.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p2.lo: crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p2.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p1p1_to_p2.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p2.lo `test -f 'crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p1p1_to_p2.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p1p1_to_p2.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p2.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p2.lo `test -f 'crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p3.lo: crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p3.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p1p1_to_p3.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p3.lo `test -f 'crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p1p1_to_p3.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p1p1_to_p3.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p3.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p1p1_to_p3.lo `test -f 'crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_p2_0.lo: crypto_sign/ed25519/ref10/ge_p2_0.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_p2_0.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p2_0.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p2_0.lo `test -f 'crypto_sign/ed25519/ref10/ge_p2_0.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p2_0.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p2_0.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p2_0.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_p2_0.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_p2_0.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p2_0.lo `test -f 'crypto_sign/ed25519/ref10/ge_p2_0.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p2_0.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_p2_dbl.lo: crypto_sign/ed25519/ref10/ge_p2_dbl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_p2_dbl.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p2_dbl.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p2_dbl.lo `test -f 'crypto_sign/ed25519/ref10/ge_p2_dbl.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p2_dbl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p2_dbl.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p2_dbl.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_p2_dbl.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_p2_dbl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p2_dbl.lo `test -f 'crypto_sign/ed25519/ref10/ge_p2_dbl.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p2_dbl.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_p3_0.lo: crypto_sign/ed25519/ref10/ge_p3_0.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_p3_0.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_0.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p3_0.lo `test -f 'crypto_sign/ed25519/ref10/ge_p3_0.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p3_0.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_0.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_0.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_p3_0.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_p3_0.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p3_0.lo `test -f 'crypto_sign/ed25519/ref10/ge_p3_0.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p3_0.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_p3_dbl.lo: crypto_sign/ed25519/ref10/ge_p3_dbl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_p3_dbl.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_dbl.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p3_dbl.lo `test -f 'crypto_sign/ed25519/ref10/ge_p3_dbl.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p3_dbl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_dbl.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_dbl.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_p3_dbl.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_p3_dbl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p3_dbl.lo `test -f 'crypto_sign/ed25519/ref10/ge_p3_dbl.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p3_dbl.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_cached.lo: crypto_sign/ed25519/ref10/ge_p3_to_cached.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_cached.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_to_cached.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_cached.lo `test -f 'crypto_sign/ed25519/ref10/ge_p3_to_cached.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p3_to_cached.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_to_cached.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_to_cached.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_p3_to_cached.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_cached.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_cached.lo `test -f 'crypto_sign/ed25519/ref10/ge_p3_to_cached.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p3_to_cached.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_p2.lo: crypto_sign/ed25519/ref10/ge_p3_to_p2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_p2.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_to_p2.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_p2.lo `test -f 'crypto_sign/ed25519/ref10/ge_p3_to_p2.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p3_to_p2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_to_p2.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_to_p2.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_p3_to_p2.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_p2.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p3_to_p2.lo `test -f 'crypto_sign/ed25519/ref10/ge_p3_to_p2.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p3_to_p2.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_p3_tobytes.lo: crypto_sign/ed25519/ref10/ge_p3_tobytes.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_p3_tobytes.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_tobytes.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p3_tobytes.lo `test -f 'crypto_sign/ed25519/ref10/ge_p3_tobytes.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p3_tobytes.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_tobytes.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_p3_tobytes.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_p3_tobytes.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_p3_tobytes.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_p3_tobytes.lo `test -f 'crypto_sign/ed25519/ref10/ge_p3_tobytes.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_p3_tobytes.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_precomp_0.lo: crypto_sign/ed25519/ref10/ge_precomp_0.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_precomp_0.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_precomp_0.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_precomp_0.lo `test -f 'crypto_sign/ed25519/ref10/ge_precomp_0.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_precomp_0.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_precomp_0.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_precomp_0.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_precomp_0.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_precomp_0.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_precomp_0.lo `test -f 'crypto_sign/ed25519/ref10/ge_precomp_0.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_precomp_0.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_scalarmult_base.lo: crypto_sign/ed25519/ref10/ge_scalarmult_base.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_scalarmult_base.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_scalarmult_base.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_scalarmult_base.lo `test -f 'crypto_sign/ed25519/ref10/ge_scalarmult_base.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_scalarmult_base.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_scalarmult_base.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_scalarmult_base.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_scalarmult_base.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_scalarmult_base.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_scalarmult_base.lo `test -f 'crypto_sign/ed25519/ref10/ge_scalarmult_base.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_scalarmult_base.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_sub.lo: crypto_sign/ed25519/ref10/ge_sub.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_sub.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_sub.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_sub.lo `test -f 'crypto_sign/ed25519/ref10/ge_sub.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_sub.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_sub.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_sub.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_sub.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_sub.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_sub.lo `test -f 'crypto_sign/ed25519/ref10/ge_sub.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_sub.c + +crypto_sign/ed25519/ref10/libsodium_la-ge_tobytes.lo: crypto_sign/ed25519/ref10/ge_tobytes.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-ge_tobytes.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_tobytes.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_tobytes.lo `test -f 'crypto_sign/ed25519/ref10/ge_tobytes.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_tobytes.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_tobytes.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-ge_tobytes.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/ge_tobytes.c' object='crypto_sign/ed25519/ref10/libsodium_la-ge_tobytes.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-ge_tobytes.lo `test -f 'crypto_sign/ed25519/ref10/ge_tobytes.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/ge_tobytes.c + +crypto_sign/ed25519/ref10/libsodium_la-keypair.lo: crypto_sign/ed25519/ref10/keypair.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-keypair.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-keypair.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-keypair.lo `test -f 'crypto_sign/ed25519/ref10/keypair.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/keypair.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-keypair.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-keypair.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/keypair.c' object='crypto_sign/ed25519/ref10/libsodium_la-keypair.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-keypair.lo `test -f 'crypto_sign/ed25519/ref10/keypair.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/keypair.c + +crypto_sign/ed25519/ref10/libsodium_la-open.lo: crypto_sign/ed25519/ref10/open.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-open.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-open.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-open.lo `test -f 'crypto_sign/ed25519/ref10/open.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/open.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-open.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-open.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/open.c' object='crypto_sign/ed25519/ref10/libsodium_la-open.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-open.lo `test -f 'crypto_sign/ed25519/ref10/open.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/open.c + +crypto_sign/ed25519/ref10/libsodium_la-sc_muladd.lo: crypto_sign/ed25519/ref10/sc_muladd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-sc_muladd.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-sc_muladd.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-sc_muladd.lo `test -f 'crypto_sign/ed25519/ref10/sc_muladd.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/sc_muladd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-sc_muladd.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-sc_muladd.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/sc_muladd.c' object='crypto_sign/ed25519/ref10/libsodium_la-sc_muladd.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-sc_muladd.lo `test -f 'crypto_sign/ed25519/ref10/sc_muladd.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/sc_muladd.c + +crypto_sign/ed25519/ref10/libsodium_la-sc_reduce.lo: crypto_sign/ed25519/ref10/sc_reduce.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-sc_reduce.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-sc_reduce.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-sc_reduce.lo `test -f 'crypto_sign/ed25519/ref10/sc_reduce.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/sc_reduce.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-sc_reduce.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-sc_reduce.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/sc_reduce.c' object='crypto_sign/ed25519/ref10/libsodium_la-sc_reduce.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-sc_reduce.lo `test -f 'crypto_sign/ed25519/ref10/sc_reduce.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/sc_reduce.c + +crypto_sign/ed25519/ref10/libsodium_la-sign.lo: crypto_sign/ed25519/ref10/sign.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/ed25519/ref10/libsodium_la-sign.lo -MD -MP -MF crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-sign.Tpo -c -o crypto_sign/ed25519/ref10/libsodium_la-sign.lo `test -f 'crypto_sign/ed25519/ref10/sign.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/sign.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-sign.Tpo crypto_sign/ed25519/ref10/$(DEPDIR)/libsodium_la-sign.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/ed25519/ref10/sign.c' object='crypto_sign/ed25519/ref10/libsodium_la-sign.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/ed25519/ref10/libsodium_la-sign.lo `test -f 'crypto_sign/ed25519/ref10/sign.c' || echo '$(srcdir)/'`crypto_sign/ed25519/ref10/sign.c + +crypto_sign/edwards25519sha512batch/libsodium_la-sign_edwards25519sha512batch_api.lo: crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/edwards25519sha512batch/libsodium_la-sign_edwards25519sha512batch_api.lo -MD -MP -MF crypto_sign/edwards25519sha512batch/$(DEPDIR)/libsodium_la-sign_edwards25519sha512batch_api.Tpo -c -o crypto_sign/edwards25519sha512batch/libsodium_la-sign_edwards25519sha512batch_api.lo `test -f 'crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c' || echo '$(srcdir)/'`crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/edwards25519sha512batch/$(DEPDIR)/libsodium_la-sign_edwards25519sha512batch_api.Tpo crypto_sign/edwards25519sha512batch/$(DEPDIR)/libsodium_la-sign_edwards25519sha512batch_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c' object='crypto_sign/edwards25519sha512batch/libsodium_la-sign_edwards25519sha512batch_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/edwards25519sha512batch/libsodium_la-sign_edwards25519sha512batch_api.lo `test -f 'crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c' || echo '$(srcdir)/'`crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c + +crypto_sign/edwards25519sha512batch/ref/libsodium_la-fe25519_edwards25519sha512batch.lo: crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/edwards25519sha512batch/ref/libsodium_la-fe25519_edwards25519sha512batch.lo -MD -MP -MF crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-fe25519_edwards25519sha512batch.Tpo -c -o crypto_sign/edwards25519sha512batch/ref/libsodium_la-fe25519_edwards25519sha512batch.lo `test -f 'crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c' || echo '$(srcdir)/'`crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-fe25519_edwards25519sha512batch.Tpo crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-fe25519_edwards25519sha512batch.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c' object='crypto_sign/edwards25519sha512batch/ref/libsodium_la-fe25519_edwards25519sha512batch.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/edwards25519sha512batch/ref/libsodium_la-fe25519_edwards25519sha512batch.lo `test -f 'crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c' || echo '$(srcdir)/'`crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c + +crypto_sign/edwards25519sha512batch/ref/libsodium_la-ge25519_edwards25519sha512batch.lo: crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/edwards25519sha512batch/ref/libsodium_la-ge25519_edwards25519sha512batch.lo -MD -MP -MF crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-ge25519_edwards25519sha512batch.Tpo -c -o crypto_sign/edwards25519sha512batch/ref/libsodium_la-ge25519_edwards25519sha512batch.lo `test -f 'crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c' || echo '$(srcdir)/'`crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-ge25519_edwards25519sha512batch.Tpo crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-ge25519_edwards25519sha512batch.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c' object='crypto_sign/edwards25519sha512batch/ref/libsodium_la-ge25519_edwards25519sha512batch.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/edwards25519sha512batch/ref/libsodium_la-ge25519_edwards25519sha512batch.lo `test -f 'crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c' || echo '$(srcdir)/'`crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c + +crypto_sign/edwards25519sha512batch/ref/libsodium_la-sc25519_edwards25519sha512batch.lo: crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/edwards25519sha512batch/ref/libsodium_la-sc25519_edwards25519sha512batch.lo -MD -MP -MF crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-sc25519_edwards25519sha512batch.Tpo -c -o crypto_sign/edwards25519sha512batch/ref/libsodium_la-sc25519_edwards25519sha512batch.lo `test -f 'crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c' || echo '$(srcdir)/'`crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-sc25519_edwards25519sha512batch.Tpo crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-sc25519_edwards25519sha512batch.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c' object='crypto_sign/edwards25519sha512batch/ref/libsodium_la-sc25519_edwards25519sha512batch.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/edwards25519sha512batch/ref/libsodium_la-sc25519_edwards25519sha512batch.lo `test -f 'crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c' || echo '$(srcdir)/'`crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c + +crypto_sign/edwards25519sha512batch/ref/libsodium_la-sign_edwards25519sha512batch.lo: crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_sign/edwards25519sha512batch/ref/libsodium_la-sign_edwards25519sha512batch.lo -MD -MP -MF crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-sign_edwards25519sha512batch.Tpo -c -o crypto_sign/edwards25519sha512batch/ref/libsodium_la-sign_edwards25519sha512batch.lo `test -f 'crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c' || echo '$(srcdir)/'`crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-sign_edwards25519sha512batch.Tpo crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/libsodium_la-sign_edwards25519sha512batch.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c' object='crypto_sign/edwards25519sha512batch/ref/libsodium_la-sign_edwards25519sha512batch.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_sign/edwards25519sha512batch/ref/libsodium_la-sign_edwards25519sha512batch.lo `test -f 'crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c' || echo '$(srcdir)/'`crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c + +crypto_stream/libsodium_la-crypto_stream.lo: crypto_stream/crypto_stream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/libsodium_la-crypto_stream.lo -MD -MP -MF crypto_stream/$(DEPDIR)/libsodium_la-crypto_stream.Tpo -c -o crypto_stream/libsodium_la-crypto_stream.lo `test -f 'crypto_stream/crypto_stream.c' || echo '$(srcdir)/'`crypto_stream/crypto_stream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/$(DEPDIR)/libsodium_la-crypto_stream.Tpo crypto_stream/$(DEPDIR)/libsodium_la-crypto_stream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/crypto_stream.c' object='crypto_stream/libsodium_la-crypto_stream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/libsodium_la-crypto_stream.lo `test -f 'crypto_stream/crypto_stream.c' || echo '$(srcdir)/'`crypto_stream/crypto_stream.c + +crypto_stream/aes128ctr/portable/libsodium_la-afternm_aes128ctr.lo: crypto_stream/aes128ctr/portable/afternm_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/aes128ctr/portable/libsodium_la-afternm_aes128ctr.lo -MD -MP -MF crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-afternm_aes128ctr.Tpo -c -o crypto_stream/aes128ctr/portable/libsodium_la-afternm_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/afternm_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/afternm_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-afternm_aes128ctr.Tpo crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-afternm_aes128ctr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/aes128ctr/portable/afternm_aes128ctr.c' object='crypto_stream/aes128ctr/portable/libsodium_la-afternm_aes128ctr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/aes128ctr/portable/libsodium_la-afternm_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/afternm_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/afternm_aes128ctr.c + +crypto_stream/aes128ctr/libsodium_la-stream_aes128ctr_api.lo: crypto_stream/aes128ctr/stream_aes128ctr_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/aes128ctr/libsodium_la-stream_aes128ctr_api.lo -MD -MP -MF crypto_stream/aes128ctr/$(DEPDIR)/libsodium_la-stream_aes128ctr_api.Tpo -c -o crypto_stream/aes128ctr/libsodium_la-stream_aes128ctr_api.lo `test -f 'crypto_stream/aes128ctr/stream_aes128ctr_api.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/stream_aes128ctr_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/aes128ctr/$(DEPDIR)/libsodium_la-stream_aes128ctr_api.Tpo crypto_stream/aes128ctr/$(DEPDIR)/libsodium_la-stream_aes128ctr_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/aes128ctr/stream_aes128ctr_api.c' object='crypto_stream/aes128ctr/libsodium_la-stream_aes128ctr_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/aes128ctr/libsodium_la-stream_aes128ctr_api.lo `test -f 'crypto_stream/aes128ctr/stream_aes128ctr_api.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/stream_aes128ctr_api.c + +crypto_stream/aes128ctr/portable/libsodium_la-beforenm_aes128ctr.lo: crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/aes128ctr/portable/libsodium_la-beforenm_aes128ctr.lo -MD -MP -MF crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-beforenm_aes128ctr.Tpo -c -o crypto_stream/aes128ctr/portable/libsodium_la-beforenm_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-beforenm_aes128ctr.Tpo crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-beforenm_aes128ctr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c' object='crypto_stream/aes128ctr/portable/libsodium_la-beforenm_aes128ctr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/aes128ctr/portable/libsodium_la-beforenm_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c + +crypto_stream/aes128ctr/portable/libsodium_la-common_aes128ctr.lo: crypto_stream/aes128ctr/portable/common_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/aes128ctr/portable/libsodium_la-common_aes128ctr.lo -MD -MP -MF crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-common_aes128ctr.Tpo -c -o crypto_stream/aes128ctr/portable/libsodium_la-common_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/common_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/common_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-common_aes128ctr.Tpo crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-common_aes128ctr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/aes128ctr/portable/common_aes128ctr.c' object='crypto_stream/aes128ctr/portable/libsodium_la-common_aes128ctr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/aes128ctr/portable/libsodium_la-common_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/common_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/common_aes128ctr.c + +crypto_stream/aes128ctr/portable/libsodium_la-consts_aes128ctr.lo: crypto_stream/aes128ctr/portable/consts_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/aes128ctr/portable/libsodium_la-consts_aes128ctr.lo -MD -MP -MF crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-consts_aes128ctr.Tpo -c -o crypto_stream/aes128ctr/portable/libsodium_la-consts_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/consts_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/consts_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-consts_aes128ctr.Tpo crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-consts_aes128ctr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/aes128ctr/portable/consts_aes128ctr.c' object='crypto_stream/aes128ctr/portable/libsodium_la-consts_aes128ctr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/aes128ctr/portable/libsodium_la-consts_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/consts_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/consts_aes128ctr.c + +crypto_stream/aes128ctr/portable/libsodium_la-int128_aes128ctr.lo: crypto_stream/aes128ctr/portable/int128_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/aes128ctr/portable/libsodium_la-int128_aes128ctr.lo -MD -MP -MF crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-int128_aes128ctr.Tpo -c -o crypto_stream/aes128ctr/portable/libsodium_la-int128_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/int128_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/int128_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-int128_aes128ctr.Tpo crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-int128_aes128ctr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/aes128ctr/portable/int128_aes128ctr.c' object='crypto_stream/aes128ctr/portable/libsodium_la-int128_aes128ctr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/aes128ctr/portable/libsodium_la-int128_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/int128_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/int128_aes128ctr.c + +crypto_stream/aes128ctr/portable/libsodium_la-stream_aes128ctr.lo: crypto_stream/aes128ctr/portable/stream_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/aes128ctr/portable/libsodium_la-stream_aes128ctr.lo -MD -MP -MF crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-stream_aes128ctr.Tpo -c -o crypto_stream/aes128ctr/portable/libsodium_la-stream_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/stream_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/stream_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-stream_aes128ctr.Tpo crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-stream_aes128ctr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/aes128ctr/portable/stream_aes128ctr.c' object='crypto_stream/aes128ctr/portable/libsodium_la-stream_aes128ctr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/aes128ctr/portable/libsodium_la-stream_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/stream_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/stream_aes128ctr.c + +crypto_stream/aes128ctr/portable/libsodium_la-xor_afternm_aes128ctr.lo: crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/aes128ctr/portable/libsodium_la-xor_afternm_aes128ctr.lo -MD -MP -MF crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-xor_afternm_aes128ctr.Tpo -c -o crypto_stream/aes128ctr/portable/libsodium_la-xor_afternm_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-xor_afternm_aes128ctr.Tpo crypto_stream/aes128ctr/portable/$(DEPDIR)/libsodium_la-xor_afternm_aes128ctr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c' object='crypto_stream/aes128ctr/portable/libsodium_la-xor_afternm_aes128ctr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/aes128ctr/portable/libsodium_la-xor_afternm_aes128ctr.lo `test -f 'crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c' || echo '$(srcdir)/'`crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c + +crypto_stream/aes256estream/hongjun/libsodium_la-aes256-ctr.lo: crypto_stream/aes256estream/hongjun/aes256-ctr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/aes256estream/hongjun/libsodium_la-aes256-ctr.lo -MD -MP -MF crypto_stream/aes256estream/hongjun/$(DEPDIR)/libsodium_la-aes256-ctr.Tpo -c -o crypto_stream/aes256estream/hongjun/libsodium_la-aes256-ctr.lo `test -f 'crypto_stream/aes256estream/hongjun/aes256-ctr.c' || echo '$(srcdir)/'`crypto_stream/aes256estream/hongjun/aes256-ctr.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/aes256estream/hongjun/$(DEPDIR)/libsodium_la-aes256-ctr.Tpo crypto_stream/aes256estream/hongjun/$(DEPDIR)/libsodium_la-aes256-ctr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/aes256estream/hongjun/aes256-ctr.c' object='crypto_stream/aes256estream/hongjun/libsodium_la-aes256-ctr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/aes256estream/hongjun/libsodium_la-aes256-ctr.lo `test -f 'crypto_stream/aes256estream/hongjun/aes256-ctr.c' || echo '$(srcdir)/'`crypto_stream/aes256estream/hongjun/aes256-ctr.c + +crypto_stream/aes256estream/libsodium_la-stream_aes256estream_api.lo: crypto_stream/aes256estream/stream_aes256estream_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/aes256estream/libsodium_la-stream_aes256estream_api.lo -MD -MP -MF crypto_stream/aes256estream/$(DEPDIR)/libsodium_la-stream_aes256estream_api.Tpo -c -o crypto_stream/aes256estream/libsodium_la-stream_aes256estream_api.lo `test -f 'crypto_stream/aes256estream/stream_aes256estream_api.c' || echo '$(srcdir)/'`crypto_stream/aes256estream/stream_aes256estream_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/aes256estream/$(DEPDIR)/libsodium_la-stream_aes256estream_api.Tpo crypto_stream/aes256estream/$(DEPDIR)/libsodium_la-stream_aes256estream_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/aes256estream/stream_aes256estream_api.c' object='crypto_stream/aes256estream/libsodium_la-stream_aes256estream_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/aes256estream/libsodium_la-stream_aes256estream_api.lo `test -f 'crypto_stream/aes256estream/stream_aes256estream_api.c' || echo '$(srcdir)/'`crypto_stream/aes256estream/stream_aes256estream_api.c + +crypto_stream/salsa2012/libsodium_la-stream_salsa2012_api.lo: crypto_stream/salsa2012/stream_salsa2012_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/salsa2012/libsodium_la-stream_salsa2012_api.lo -MD -MP -MF crypto_stream/salsa2012/$(DEPDIR)/libsodium_la-stream_salsa2012_api.Tpo -c -o crypto_stream/salsa2012/libsodium_la-stream_salsa2012_api.lo `test -f 'crypto_stream/salsa2012/stream_salsa2012_api.c' || echo '$(srcdir)/'`crypto_stream/salsa2012/stream_salsa2012_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/salsa2012/$(DEPDIR)/libsodium_la-stream_salsa2012_api.Tpo crypto_stream/salsa2012/$(DEPDIR)/libsodium_la-stream_salsa2012_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/salsa2012/stream_salsa2012_api.c' object='crypto_stream/salsa2012/libsodium_la-stream_salsa2012_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/salsa2012/libsodium_la-stream_salsa2012_api.lo `test -f 'crypto_stream/salsa2012/stream_salsa2012_api.c' || echo '$(srcdir)/'`crypto_stream/salsa2012/stream_salsa2012_api.c + +crypto_stream/salsa2012/ref/libsodium_la-stream_salsa2012.lo: crypto_stream/salsa2012/ref/stream_salsa2012.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/salsa2012/ref/libsodium_la-stream_salsa2012.lo -MD -MP -MF crypto_stream/salsa2012/ref/$(DEPDIR)/libsodium_la-stream_salsa2012.Tpo -c -o crypto_stream/salsa2012/ref/libsodium_la-stream_salsa2012.lo `test -f 'crypto_stream/salsa2012/ref/stream_salsa2012.c' || echo '$(srcdir)/'`crypto_stream/salsa2012/ref/stream_salsa2012.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/salsa2012/ref/$(DEPDIR)/libsodium_la-stream_salsa2012.Tpo crypto_stream/salsa2012/ref/$(DEPDIR)/libsodium_la-stream_salsa2012.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/salsa2012/ref/stream_salsa2012.c' object='crypto_stream/salsa2012/ref/libsodium_la-stream_salsa2012.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/salsa2012/ref/libsodium_la-stream_salsa2012.lo `test -f 'crypto_stream/salsa2012/ref/stream_salsa2012.c' || echo '$(srcdir)/'`crypto_stream/salsa2012/ref/stream_salsa2012.c + +crypto_stream/salsa2012/ref/libsodium_la-xor_salsa2012.lo: crypto_stream/salsa2012/ref/xor_salsa2012.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/salsa2012/ref/libsodium_la-xor_salsa2012.lo -MD -MP -MF crypto_stream/salsa2012/ref/$(DEPDIR)/libsodium_la-xor_salsa2012.Tpo -c -o crypto_stream/salsa2012/ref/libsodium_la-xor_salsa2012.lo `test -f 'crypto_stream/salsa2012/ref/xor_salsa2012.c' || echo '$(srcdir)/'`crypto_stream/salsa2012/ref/xor_salsa2012.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/salsa2012/ref/$(DEPDIR)/libsodium_la-xor_salsa2012.Tpo crypto_stream/salsa2012/ref/$(DEPDIR)/libsodium_la-xor_salsa2012.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/salsa2012/ref/xor_salsa2012.c' object='crypto_stream/salsa2012/ref/libsodium_la-xor_salsa2012.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/salsa2012/ref/libsodium_la-xor_salsa2012.lo `test -f 'crypto_stream/salsa2012/ref/xor_salsa2012.c' || echo '$(srcdir)/'`crypto_stream/salsa2012/ref/xor_salsa2012.c + +crypto_stream/salsa208/libsodium_la-stream_salsa208_api.lo: crypto_stream/salsa208/stream_salsa208_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/salsa208/libsodium_la-stream_salsa208_api.lo -MD -MP -MF crypto_stream/salsa208/$(DEPDIR)/libsodium_la-stream_salsa208_api.Tpo -c -o crypto_stream/salsa208/libsodium_la-stream_salsa208_api.lo `test -f 'crypto_stream/salsa208/stream_salsa208_api.c' || echo '$(srcdir)/'`crypto_stream/salsa208/stream_salsa208_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/salsa208/$(DEPDIR)/libsodium_la-stream_salsa208_api.Tpo crypto_stream/salsa208/$(DEPDIR)/libsodium_la-stream_salsa208_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/salsa208/stream_salsa208_api.c' object='crypto_stream/salsa208/libsodium_la-stream_salsa208_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/salsa208/libsodium_la-stream_salsa208_api.lo `test -f 'crypto_stream/salsa208/stream_salsa208_api.c' || echo '$(srcdir)/'`crypto_stream/salsa208/stream_salsa208_api.c + +crypto_stream/salsa208/ref/libsodium_la-stream_salsa208.lo: crypto_stream/salsa208/ref/stream_salsa208.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/salsa208/ref/libsodium_la-stream_salsa208.lo -MD -MP -MF crypto_stream/salsa208/ref/$(DEPDIR)/libsodium_la-stream_salsa208.Tpo -c -o crypto_stream/salsa208/ref/libsodium_la-stream_salsa208.lo `test -f 'crypto_stream/salsa208/ref/stream_salsa208.c' || echo '$(srcdir)/'`crypto_stream/salsa208/ref/stream_salsa208.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/salsa208/ref/$(DEPDIR)/libsodium_la-stream_salsa208.Tpo crypto_stream/salsa208/ref/$(DEPDIR)/libsodium_la-stream_salsa208.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/salsa208/ref/stream_salsa208.c' object='crypto_stream/salsa208/ref/libsodium_la-stream_salsa208.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/salsa208/ref/libsodium_la-stream_salsa208.lo `test -f 'crypto_stream/salsa208/ref/stream_salsa208.c' || echo '$(srcdir)/'`crypto_stream/salsa208/ref/stream_salsa208.c + +crypto_stream/salsa208/ref/libsodium_la-xor_salsa208.lo: crypto_stream/salsa208/ref/xor_salsa208.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/salsa208/ref/libsodium_la-xor_salsa208.lo -MD -MP -MF crypto_stream/salsa208/ref/$(DEPDIR)/libsodium_la-xor_salsa208.Tpo -c -o crypto_stream/salsa208/ref/libsodium_la-xor_salsa208.lo `test -f 'crypto_stream/salsa208/ref/xor_salsa208.c' || echo '$(srcdir)/'`crypto_stream/salsa208/ref/xor_salsa208.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/salsa208/ref/$(DEPDIR)/libsodium_la-xor_salsa208.Tpo crypto_stream/salsa208/ref/$(DEPDIR)/libsodium_la-xor_salsa208.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/salsa208/ref/xor_salsa208.c' object='crypto_stream/salsa208/ref/libsodium_la-xor_salsa208.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/salsa208/ref/libsodium_la-xor_salsa208.lo `test -f 'crypto_stream/salsa208/ref/xor_salsa208.c' || echo '$(srcdir)/'`crypto_stream/salsa208/ref/xor_salsa208.c + +crypto_stream/xsalsa20/libsodium_la-stream_xsalsa20_api.lo: crypto_stream/xsalsa20/stream_xsalsa20_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/xsalsa20/libsodium_la-stream_xsalsa20_api.lo -MD -MP -MF crypto_stream/xsalsa20/$(DEPDIR)/libsodium_la-stream_xsalsa20_api.Tpo -c -o crypto_stream/xsalsa20/libsodium_la-stream_xsalsa20_api.lo `test -f 'crypto_stream/xsalsa20/stream_xsalsa20_api.c' || echo '$(srcdir)/'`crypto_stream/xsalsa20/stream_xsalsa20_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/xsalsa20/$(DEPDIR)/libsodium_la-stream_xsalsa20_api.Tpo crypto_stream/xsalsa20/$(DEPDIR)/libsodium_la-stream_xsalsa20_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/xsalsa20/stream_xsalsa20_api.c' object='crypto_stream/xsalsa20/libsodium_la-stream_xsalsa20_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/xsalsa20/libsodium_la-stream_xsalsa20_api.lo `test -f 'crypto_stream/xsalsa20/stream_xsalsa20_api.c' || echo '$(srcdir)/'`crypto_stream/xsalsa20/stream_xsalsa20_api.c + +crypto_stream/xsalsa20/ref/libsodium_la-stream_xsalsa20.lo: crypto_stream/xsalsa20/ref/stream_xsalsa20.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/xsalsa20/ref/libsodium_la-stream_xsalsa20.lo -MD -MP -MF crypto_stream/xsalsa20/ref/$(DEPDIR)/libsodium_la-stream_xsalsa20.Tpo -c -o crypto_stream/xsalsa20/ref/libsodium_la-stream_xsalsa20.lo `test -f 'crypto_stream/xsalsa20/ref/stream_xsalsa20.c' || echo '$(srcdir)/'`crypto_stream/xsalsa20/ref/stream_xsalsa20.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/xsalsa20/ref/$(DEPDIR)/libsodium_la-stream_xsalsa20.Tpo crypto_stream/xsalsa20/ref/$(DEPDIR)/libsodium_la-stream_xsalsa20.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/xsalsa20/ref/stream_xsalsa20.c' object='crypto_stream/xsalsa20/ref/libsodium_la-stream_xsalsa20.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/xsalsa20/ref/libsodium_la-stream_xsalsa20.lo `test -f 'crypto_stream/xsalsa20/ref/stream_xsalsa20.c' || echo '$(srcdir)/'`crypto_stream/xsalsa20/ref/stream_xsalsa20.c + +crypto_stream/xsalsa20/ref/libsodium_la-xor_xsalsa20.lo: crypto_stream/xsalsa20/ref/xor_xsalsa20.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/xsalsa20/ref/libsodium_la-xor_xsalsa20.lo -MD -MP -MF crypto_stream/xsalsa20/ref/$(DEPDIR)/libsodium_la-xor_xsalsa20.Tpo -c -o crypto_stream/xsalsa20/ref/libsodium_la-xor_xsalsa20.lo `test -f 'crypto_stream/xsalsa20/ref/xor_xsalsa20.c' || echo '$(srcdir)/'`crypto_stream/xsalsa20/ref/xor_xsalsa20.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/xsalsa20/ref/$(DEPDIR)/libsodium_la-xor_xsalsa20.Tpo crypto_stream/xsalsa20/ref/$(DEPDIR)/libsodium_la-xor_xsalsa20.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/xsalsa20/ref/xor_xsalsa20.c' object='crypto_stream/xsalsa20/ref/libsodium_la-xor_xsalsa20.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/xsalsa20/ref/libsodium_la-xor_xsalsa20.lo `test -f 'crypto_stream/xsalsa20/ref/xor_xsalsa20.c' || echo '$(srcdir)/'`crypto_stream/xsalsa20/ref/xor_xsalsa20.c + +crypto_verify/16/libsodium_la-verify_16_api.lo: crypto_verify/16/verify_16_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_verify/16/libsodium_la-verify_16_api.lo -MD -MP -MF crypto_verify/16/$(DEPDIR)/libsodium_la-verify_16_api.Tpo -c -o crypto_verify/16/libsodium_la-verify_16_api.lo `test -f 'crypto_verify/16/verify_16_api.c' || echo '$(srcdir)/'`crypto_verify/16/verify_16_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_verify/16/$(DEPDIR)/libsodium_la-verify_16_api.Tpo crypto_verify/16/$(DEPDIR)/libsodium_la-verify_16_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_verify/16/verify_16_api.c' object='crypto_verify/16/libsodium_la-verify_16_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_verify/16/libsodium_la-verify_16_api.lo `test -f 'crypto_verify/16/verify_16_api.c' || echo '$(srcdir)/'`crypto_verify/16/verify_16_api.c + +crypto_verify/16/ref/libsodium_la-verify_16.lo: crypto_verify/16/ref/verify_16.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_verify/16/ref/libsodium_la-verify_16.lo -MD -MP -MF crypto_verify/16/ref/$(DEPDIR)/libsodium_la-verify_16.Tpo -c -o crypto_verify/16/ref/libsodium_la-verify_16.lo `test -f 'crypto_verify/16/ref/verify_16.c' || echo '$(srcdir)/'`crypto_verify/16/ref/verify_16.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_verify/16/ref/$(DEPDIR)/libsodium_la-verify_16.Tpo crypto_verify/16/ref/$(DEPDIR)/libsodium_la-verify_16.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_verify/16/ref/verify_16.c' object='crypto_verify/16/ref/libsodium_la-verify_16.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_verify/16/ref/libsodium_la-verify_16.lo `test -f 'crypto_verify/16/ref/verify_16.c' || echo '$(srcdir)/'`crypto_verify/16/ref/verify_16.c + +crypto_verify/32/libsodium_la-verify_32_api.lo: crypto_verify/32/verify_32_api.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_verify/32/libsodium_la-verify_32_api.lo -MD -MP -MF crypto_verify/32/$(DEPDIR)/libsodium_la-verify_32_api.Tpo -c -o crypto_verify/32/libsodium_la-verify_32_api.lo `test -f 'crypto_verify/32/verify_32_api.c' || echo '$(srcdir)/'`crypto_verify/32/verify_32_api.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_verify/32/$(DEPDIR)/libsodium_la-verify_32_api.Tpo crypto_verify/32/$(DEPDIR)/libsodium_la-verify_32_api.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_verify/32/verify_32_api.c' object='crypto_verify/32/libsodium_la-verify_32_api.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_verify/32/libsodium_la-verify_32_api.lo `test -f 'crypto_verify/32/verify_32_api.c' || echo '$(srcdir)/'`crypto_verify/32/verify_32_api.c + +crypto_verify/32/ref/libsodium_la-verify_32.lo: crypto_verify/32/ref/verify_32.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_verify/32/ref/libsodium_la-verify_32.lo -MD -MP -MF crypto_verify/32/ref/$(DEPDIR)/libsodium_la-verify_32.Tpo -c -o crypto_verify/32/ref/libsodium_la-verify_32.lo `test -f 'crypto_verify/32/ref/verify_32.c' || echo '$(srcdir)/'`crypto_verify/32/ref/verify_32.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_verify/32/ref/$(DEPDIR)/libsodium_la-verify_32.Tpo crypto_verify/32/ref/$(DEPDIR)/libsodium_la-verify_32.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_verify/32/ref/verify_32.c' object='crypto_verify/32/ref/libsodium_la-verify_32.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_verify/32/ref/libsodium_la-verify_32.lo `test -f 'crypto_verify/32/ref/verify_32.c' || echo '$(srcdir)/'`crypto_verify/32/ref/verify_32.c + +randombytes/libsodium_la-randombytes.lo: randombytes/randombytes.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT randombytes/libsodium_la-randombytes.lo -MD -MP -MF randombytes/$(DEPDIR)/libsodium_la-randombytes.Tpo -c -o randombytes/libsodium_la-randombytes.lo `test -f 'randombytes/randombytes.c' || echo '$(srcdir)/'`randombytes/randombytes.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) randombytes/$(DEPDIR)/libsodium_la-randombytes.Tpo randombytes/$(DEPDIR)/libsodium_la-randombytes.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randombytes/randombytes.c' object='randombytes/libsodium_la-randombytes.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o randombytes/libsodium_la-randombytes.lo `test -f 'randombytes/randombytes.c' || echo '$(srcdir)/'`randombytes/randombytes.c + +randombytes/salsa20/libsodium_la-randombytes_salsa20_random.lo: randombytes/salsa20/randombytes_salsa20_random.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT randombytes/salsa20/libsodium_la-randombytes_salsa20_random.lo -MD -MP -MF randombytes/salsa20/$(DEPDIR)/libsodium_la-randombytes_salsa20_random.Tpo -c -o randombytes/salsa20/libsodium_la-randombytes_salsa20_random.lo `test -f 'randombytes/salsa20/randombytes_salsa20_random.c' || echo '$(srcdir)/'`randombytes/salsa20/randombytes_salsa20_random.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) randombytes/salsa20/$(DEPDIR)/libsodium_la-randombytes_salsa20_random.Tpo randombytes/salsa20/$(DEPDIR)/libsodium_la-randombytes_salsa20_random.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randombytes/salsa20/randombytes_salsa20_random.c' object='randombytes/salsa20/libsodium_la-randombytes_salsa20_random.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o randombytes/salsa20/libsodium_la-randombytes_salsa20_random.lo `test -f 'randombytes/salsa20/randombytes_salsa20_random.c' || echo '$(srcdir)/'`randombytes/salsa20/randombytes_salsa20_random.c + +randombytes/sysrandom/libsodium_la-randombytes_sysrandom.lo: randombytes/sysrandom/randombytes_sysrandom.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT randombytes/sysrandom/libsodium_la-randombytes_sysrandom.lo -MD -MP -MF randombytes/sysrandom/$(DEPDIR)/libsodium_la-randombytes_sysrandom.Tpo -c -o randombytes/sysrandom/libsodium_la-randombytes_sysrandom.lo `test -f 'randombytes/sysrandom/randombytes_sysrandom.c' || echo '$(srcdir)/'`randombytes/sysrandom/randombytes_sysrandom.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) randombytes/sysrandom/$(DEPDIR)/libsodium_la-randombytes_sysrandom.Tpo randombytes/sysrandom/$(DEPDIR)/libsodium_la-randombytes_sysrandom.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='randombytes/sysrandom/randombytes_sysrandom.c' object='randombytes/sysrandom/libsodium_la-randombytes_sysrandom.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o randombytes/sysrandom/libsodium_la-randombytes_sysrandom.lo `test -f 'randombytes/sysrandom/randombytes_sysrandom.c' || echo '$(srcdir)/'`randombytes/sysrandom/randombytes_sysrandom.c + +sodium/libsodium_la-compat.lo: sodium/compat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sodium/libsodium_la-compat.lo -MD -MP -MF sodium/$(DEPDIR)/libsodium_la-compat.Tpo -c -o sodium/libsodium_la-compat.lo `test -f 'sodium/compat.c' || echo '$(srcdir)/'`sodium/compat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sodium/$(DEPDIR)/libsodium_la-compat.Tpo sodium/$(DEPDIR)/libsodium_la-compat.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sodium/compat.c' object='sodium/libsodium_la-compat.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sodium/libsodium_la-compat.lo `test -f 'sodium/compat.c' || echo '$(srcdir)/'`sodium/compat.c + +sodium/libsodium_la-core.lo: sodium/core.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sodium/libsodium_la-core.lo -MD -MP -MF sodium/$(DEPDIR)/libsodium_la-core.Tpo -c -o sodium/libsodium_la-core.lo `test -f 'sodium/core.c' || echo '$(srcdir)/'`sodium/core.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sodium/$(DEPDIR)/libsodium_la-core.Tpo sodium/$(DEPDIR)/libsodium_la-core.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sodium/core.c' object='sodium/libsodium_la-core.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sodium/libsodium_la-core.lo `test -f 'sodium/core.c' || echo '$(srcdir)/'`sodium/core.c + +sodium/libsodium_la-utils.lo: sodium/utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sodium/libsodium_la-utils.lo -MD -MP -MF sodium/$(DEPDIR)/libsodium_la-utils.Tpo -c -o sodium/libsodium_la-utils.lo `test -f 'sodium/utils.c' || echo '$(srcdir)/'`sodium/utils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sodium/$(DEPDIR)/libsodium_la-utils.Tpo sodium/$(DEPDIR)/libsodium_la-utils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sodium/utils.c' object='sodium/libsodium_la-utils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sodium/libsodium_la-utils.lo `test -f 'sodium/utils.c' || echo '$(srcdir)/'`sodium/utils.c + +sodium/libsodium_la-version.lo: sodium/version.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sodium/libsodium_la-version.lo -MD -MP -MF sodium/$(DEPDIR)/libsodium_la-version.Tpo -c -o sodium/libsodium_la-version.lo `test -f 'sodium/version.c' || echo '$(srcdir)/'`sodium/version.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sodium/$(DEPDIR)/libsodium_la-version.Tpo sodium/$(DEPDIR)/libsodium_la-version.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sodium/version.c' object='sodium/libsodium_la-version.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sodium/libsodium_la-version.lo `test -f 'sodium/version.c' || echo '$(srcdir)/'`sodium/version.c + +crypto_scalarmult/curve25519/donna_c64/libsodium_la-base_curve25519_donna_c64.lo: crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_scalarmult/curve25519/donna_c64/libsodium_la-base_curve25519_donna_c64.lo -MD -MP -MF crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/libsodium_la-base_curve25519_donna_c64.Tpo -c -o crypto_scalarmult/curve25519/donna_c64/libsodium_la-base_curve25519_donna_c64.lo `test -f 'crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c' || echo '$(srcdir)/'`crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/libsodium_la-base_curve25519_donna_c64.Tpo crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/libsodium_la-base_curve25519_donna_c64.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c' object='crypto_scalarmult/curve25519/donna_c64/libsodium_la-base_curve25519_donna_c64.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_scalarmult/curve25519/donna_c64/libsodium_la-base_curve25519_donna_c64.lo `test -f 'crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c' || echo '$(srcdir)/'`crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c + +crypto_scalarmult/curve25519/donna_c64/libsodium_la-smult_curve25519_donna_c64.lo: crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_scalarmult/curve25519/donna_c64/libsodium_la-smult_curve25519_donna_c64.lo -MD -MP -MF crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/libsodium_la-smult_curve25519_donna_c64.Tpo -c -o crypto_scalarmult/curve25519/donna_c64/libsodium_la-smult_curve25519_donna_c64.lo `test -f 'crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c' || echo '$(srcdir)/'`crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/libsodium_la-smult_curve25519_donna_c64.Tpo crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/libsodium_la-smult_curve25519_donna_c64.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c' object='crypto_scalarmult/curve25519/donna_c64/libsodium_la-smult_curve25519_donna_c64.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_scalarmult/curve25519/donna_c64/libsodium_la-smult_curve25519_donna_c64.lo `test -f 'crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c' || echo '$(srcdir)/'`crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c + +crypto_scalarmult/curve25519/ref/libsodium_la-base_curve25519_ref.lo: crypto_scalarmult/curve25519/ref/base_curve25519_ref.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_scalarmult/curve25519/ref/libsodium_la-base_curve25519_ref.lo -MD -MP -MF crypto_scalarmult/curve25519/ref/$(DEPDIR)/libsodium_la-base_curve25519_ref.Tpo -c -o crypto_scalarmult/curve25519/ref/libsodium_la-base_curve25519_ref.lo `test -f 'crypto_scalarmult/curve25519/ref/base_curve25519_ref.c' || echo '$(srcdir)/'`crypto_scalarmult/curve25519/ref/base_curve25519_ref.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_scalarmult/curve25519/ref/$(DEPDIR)/libsodium_la-base_curve25519_ref.Tpo crypto_scalarmult/curve25519/ref/$(DEPDIR)/libsodium_la-base_curve25519_ref.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_scalarmult/curve25519/ref/base_curve25519_ref.c' object='crypto_scalarmult/curve25519/ref/libsodium_la-base_curve25519_ref.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_scalarmult/curve25519/ref/libsodium_la-base_curve25519_ref.lo `test -f 'crypto_scalarmult/curve25519/ref/base_curve25519_ref.c' || echo '$(srcdir)/'`crypto_scalarmult/curve25519/ref/base_curve25519_ref.c + +crypto_scalarmult/curve25519/ref/libsodium_la-smult_curve25519_ref.lo: crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_scalarmult/curve25519/ref/libsodium_la-smult_curve25519_ref.lo -MD -MP -MF crypto_scalarmult/curve25519/ref/$(DEPDIR)/libsodium_la-smult_curve25519_ref.Tpo -c -o crypto_scalarmult/curve25519/ref/libsodium_la-smult_curve25519_ref.lo `test -f 'crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c' || echo '$(srcdir)/'`crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_scalarmult/curve25519/ref/$(DEPDIR)/libsodium_la-smult_curve25519_ref.Tpo crypto_scalarmult/curve25519/ref/$(DEPDIR)/libsodium_la-smult_curve25519_ref.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c' object='crypto_scalarmult/curve25519/ref/libsodium_la-smult_curve25519_ref.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_scalarmult/curve25519/ref/libsodium_la-smult_curve25519_ref.lo `test -f 'crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c' || echo '$(srcdir)/'`crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c + +crypto_stream/salsa20/ref/libsodium_la-stream_salsa20_ref.lo: crypto_stream/salsa20/ref/stream_salsa20_ref.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/salsa20/ref/libsodium_la-stream_salsa20_ref.lo -MD -MP -MF crypto_stream/salsa20/ref/$(DEPDIR)/libsodium_la-stream_salsa20_ref.Tpo -c -o crypto_stream/salsa20/ref/libsodium_la-stream_salsa20_ref.lo `test -f 'crypto_stream/salsa20/ref/stream_salsa20_ref.c' || echo '$(srcdir)/'`crypto_stream/salsa20/ref/stream_salsa20_ref.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/salsa20/ref/$(DEPDIR)/libsodium_la-stream_salsa20_ref.Tpo crypto_stream/salsa20/ref/$(DEPDIR)/libsodium_la-stream_salsa20_ref.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/salsa20/ref/stream_salsa20_ref.c' object='crypto_stream/salsa20/ref/libsodium_la-stream_salsa20_ref.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/salsa20/ref/libsodium_la-stream_salsa20_ref.lo `test -f 'crypto_stream/salsa20/ref/stream_salsa20_ref.c' || echo '$(srcdir)/'`crypto_stream/salsa20/ref/stream_salsa20_ref.c + +crypto_stream/salsa20/ref/libsodium_la-xor_salsa20_ref.lo: crypto_stream/salsa20/ref/xor_salsa20_ref.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_stream/salsa20/ref/libsodium_la-xor_salsa20_ref.lo -MD -MP -MF crypto_stream/salsa20/ref/$(DEPDIR)/libsodium_la-xor_salsa20_ref.Tpo -c -o crypto_stream/salsa20/ref/libsodium_la-xor_salsa20_ref.lo `test -f 'crypto_stream/salsa20/ref/xor_salsa20_ref.c' || echo '$(srcdir)/'`crypto_stream/salsa20/ref/xor_salsa20_ref.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_stream/salsa20/ref/$(DEPDIR)/libsodium_la-xor_salsa20_ref.Tpo crypto_stream/salsa20/ref/$(DEPDIR)/libsodium_la-xor_salsa20_ref.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_stream/salsa20/ref/xor_salsa20_ref.c' object='crypto_stream/salsa20/ref/libsodium_la-xor_salsa20_ref.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_stream/salsa20/ref/libsodium_la-xor_salsa20_ref.lo `test -f 'crypto_stream/salsa20/ref/xor_salsa20_ref.c' || echo '$(srcdir)/'`crypto_stream/salsa20/ref/xor_salsa20_ref.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + -rm -rf crypto_auth/.libs crypto_auth/_libs + -rm -rf crypto_auth/hmacsha256/.libs crypto_auth/hmacsha256/_libs + -rm -rf crypto_auth/hmacsha256/ref/.libs crypto_auth/hmacsha256/ref/_libs + -rm -rf crypto_auth/hmacsha512256/.libs crypto_auth/hmacsha512256/_libs + -rm -rf crypto_auth/hmacsha512256/ref/.libs crypto_auth/hmacsha512256/ref/_libs + -rm -rf crypto_box/.libs crypto_box/_libs + -rm -rf crypto_box/curve25519xsalsa20poly1305/.libs crypto_box/curve25519xsalsa20poly1305/_libs + -rm -rf crypto_box/curve25519xsalsa20poly1305/ref/.libs crypto_box/curve25519xsalsa20poly1305/ref/_libs + -rm -rf crypto_core/hsalsa20/.libs crypto_core/hsalsa20/_libs + -rm -rf crypto_core/hsalsa20/ref2/.libs crypto_core/hsalsa20/ref2/_libs + -rm -rf crypto_core/salsa20/.libs crypto_core/salsa20/_libs + -rm -rf crypto_core/salsa20/ref/.libs crypto_core/salsa20/ref/_libs + -rm -rf crypto_core/salsa2012/.libs crypto_core/salsa2012/_libs + -rm -rf crypto_core/salsa2012/ref/.libs crypto_core/salsa2012/ref/_libs + -rm -rf crypto_core/salsa208/.libs crypto_core/salsa208/_libs + -rm -rf crypto_core/salsa208/ref/.libs crypto_core/salsa208/ref/_libs + -rm -rf crypto_generichash/.libs crypto_generichash/_libs + -rm -rf crypto_generichash/blake2/.libs crypto_generichash/blake2/_libs + -rm -rf crypto_generichash/blake2/ref/.libs crypto_generichash/blake2/ref/_libs + -rm -rf crypto_hash/.libs crypto_hash/_libs + -rm -rf crypto_hash/sha256/.libs crypto_hash/sha256/_libs + -rm -rf crypto_hash/sha256/ref/.libs crypto_hash/sha256/ref/_libs + -rm -rf crypto_hash/sha512/.libs crypto_hash/sha512/_libs + -rm -rf crypto_hash/sha512/ref/.libs crypto_hash/sha512/ref/_libs + -rm -rf crypto_hashblocks/sha256/.libs crypto_hashblocks/sha256/_libs + -rm -rf crypto_hashblocks/sha256/ref/.libs crypto_hashblocks/sha256/ref/_libs + -rm -rf crypto_hashblocks/sha512/.libs crypto_hashblocks/sha512/_libs + -rm -rf crypto_hashblocks/sha512/ref/.libs crypto_hashblocks/sha512/ref/_libs + -rm -rf crypto_onetimeauth/.libs crypto_onetimeauth/_libs + -rm -rf crypto_onetimeauth/poly1305/.libs crypto_onetimeauth/poly1305/_libs + -rm -rf crypto_onetimeauth/poly1305/53/.libs crypto_onetimeauth/poly1305/53/_libs + -rm -rf crypto_onetimeauth/poly1305/donna/.libs crypto_onetimeauth/poly1305/donna/_libs + -rm -rf crypto_scalarmult/.libs crypto_scalarmult/_libs + -rm -rf crypto_scalarmult/curve25519/donna_c64/.libs crypto_scalarmult/curve25519/donna_c64/_libs + -rm -rf crypto_scalarmult/curve25519/ref/.libs crypto_scalarmult/curve25519/ref/_libs + -rm -rf crypto_secretbox/.libs crypto_secretbox/_libs + -rm -rf crypto_secretbox/xsalsa20poly1305/.libs crypto_secretbox/xsalsa20poly1305/_libs + -rm -rf crypto_secretbox/xsalsa20poly1305/ref/.libs crypto_secretbox/xsalsa20poly1305/ref/_libs + -rm -rf crypto_shorthash/.libs crypto_shorthash/_libs + -rm -rf crypto_shorthash/siphash24/.libs crypto_shorthash/siphash24/_libs + -rm -rf crypto_shorthash/siphash24/ref/.libs crypto_shorthash/siphash24/ref/_libs + -rm -rf crypto_sign/.libs crypto_sign/_libs + -rm -rf crypto_sign/ed25519/.libs crypto_sign/ed25519/_libs + -rm -rf crypto_sign/ed25519/ref10/.libs crypto_sign/ed25519/ref10/_libs + -rm -rf crypto_sign/edwards25519sha512batch/.libs crypto_sign/edwards25519sha512batch/_libs + -rm -rf crypto_sign/edwards25519sha512batch/ref/.libs crypto_sign/edwards25519sha512batch/ref/_libs + -rm -rf crypto_stream/.libs crypto_stream/_libs + -rm -rf crypto_stream/aes128ctr/.libs crypto_stream/aes128ctr/_libs + -rm -rf crypto_stream/aes128ctr/portable/.libs crypto_stream/aes128ctr/portable/_libs + -rm -rf crypto_stream/aes256estream/.libs crypto_stream/aes256estream/_libs + -rm -rf crypto_stream/aes256estream/hongjun/.libs crypto_stream/aes256estream/hongjun/_libs + -rm -rf crypto_stream/salsa20/amd64_xmm6/.libs crypto_stream/salsa20/amd64_xmm6/_libs + -rm -rf crypto_stream/salsa20/ref/.libs crypto_stream/salsa20/ref/_libs + -rm -rf crypto_stream/salsa2012/.libs crypto_stream/salsa2012/_libs + -rm -rf crypto_stream/salsa2012/ref/.libs crypto_stream/salsa2012/ref/_libs + -rm -rf crypto_stream/salsa208/.libs crypto_stream/salsa208/_libs + -rm -rf crypto_stream/salsa208/ref/.libs crypto_stream/salsa208/ref/_libs + -rm -rf crypto_stream/xsalsa20/.libs crypto_stream/xsalsa20/_libs + -rm -rf crypto_stream/xsalsa20/ref/.libs crypto_stream/xsalsa20/ref/_libs + -rm -rf crypto_verify/16/.libs crypto_verify/16/_libs + -rm -rf crypto_verify/16/ref/.libs crypto_verify/16/ref/_libs + -rm -rf crypto_verify/32/.libs crypto_verify/32/_libs + -rm -rf crypto_verify/32/ref/.libs crypto_verify/32/ref/_libs + -rm -rf randombytes/.libs randombytes/_libs + -rm -rf randombytes/salsa20/.libs randombytes/salsa20/_libs + -rm -rf randombytes/sysrandom/.libs randombytes/sysrandom/_libs + -rm -rf sodium/.libs sodium/_libs +install-defexecDATA: $(defexec_DATA) + @$(NORMAL_INSTALL) + @list='$(defexec_DATA)'; test -n "$(defexecdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(defexecdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(defexecdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defexecdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(defexecdir)" || exit $$?; \ + done + +uninstall-defexecDATA: + @$(NORMAL_UNINSTALL) + @list='$(defexec_DATA)'; test -n "$(defexecdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(defexecdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LTLIBRARIES) $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(defexecdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f crypto_auth/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_auth/$(am__dirstamp) + -rm -f crypto_auth/hmacsha256/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_auth/hmacsha256/$(am__dirstamp) + -rm -f crypto_auth/hmacsha256/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_auth/hmacsha256/ref/$(am__dirstamp) + -rm -f crypto_auth/hmacsha512256/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_auth/hmacsha512256/$(am__dirstamp) + -rm -f crypto_auth/hmacsha512256/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_auth/hmacsha512256/ref/$(am__dirstamp) + -rm -f crypto_box/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_box/$(am__dirstamp) + -rm -f crypto_box/curve25519xsalsa20poly1305/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_box/curve25519xsalsa20poly1305/$(am__dirstamp) + -rm -f crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_box/curve25519xsalsa20poly1305/ref/$(am__dirstamp) + -rm -f crypto_core/hsalsa20/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_core/hsalsa20/$(am__dirstamp) + -rm -f crypto_core/hsalsa20/ref2/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_core/hsalsa20/ref2/$(am__dirstamp) + -rm -f crypto_core/salsa20/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_core/salsa20/$(am__dirstamp) + -rm -f crypto_core/salsa20/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_core/salsa20/ref/$(am__dirstamp) + -rm -f crypto_core/salsa2012/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_core/salsa2012/$(am__dirstamp) + -rm -f crypto_core/salsa2012/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_core/salsa2012/ref/$(am__dirstamp) + -rm -f crypto_core/salsa208/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_core/salsa208/$(am__dirstamp) + -rm -f crypto_core/salsa208/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_core/salsa208/ref/$(am__dirstamp) + -rm -f crypto_generichash/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_generichash/$(am__dirstamp) + -rm -f crypto_generichash/blake2/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_generichash/blake2/$(am__dirstamp) + -rm -f crypto_generichash/blake2/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_generichash/blake2/ref/$(am__dirstamp) + -rm -f crypto_hash/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_hash/$(am__dirstamp) + -rm -f crypto_hash/sha256/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_hash/sha256/$(am__dirstamp) + -rm -f crypto_hash/sha256/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_hash/sha256/ref/$(am__dirstamp) + -rm -f crypto_hash/sha512/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_hash/sha512/$(am__dirstamp) + -rm -f crypto_hash/sha512/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_hash/sha512/ref/$(am__dirstamp) + -rm -f crypto_hashblocks/sha256/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_hashblocks/sha256/$(am__dirstamp) + -rm -f crypto_hashblocks/sha256/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_hashblocks/sha256/ref/$(am__dirstamp) + -rm -f crypto_hashblocks/sha512/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_hashblocks/sha512/$(am__dirstamp) + -rm -f crypto_hashblocks/sha512/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_hashblocks/sha512/ref/$(am__dirstamp) + -rm -f crypto_onetimeauth/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_onetimeauth/$(am__dirstamp) + -rm -f crypto_onetimeauth/poly1305/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_onetimeauth/poly1305/$(am__dirstamp) + -rm -f crypto_onetimeauth/poly1305/53/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_onetimeauth/poly1305/53/$(am__dirstamp) + -rm -f crypto_onetimeauth/poly1305/donna/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_onetimeauth/poly1305/donna/$(am__dirstamp) + -rm -f crypto_scalarmult/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_scalarmult/$(am__dirstamp) + -rm -f crypto_scalarmult/curve25519/donna_c64/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_scalarmult/curve25519/donna_c64/$(am__dirstamp) + -rm -f crypto_scalarmult/curve25519/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_scalarmult/curve25519/ref/$(am__dirstamp) + -rm -f crypto_secretbox/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_secretbox/$(am__dirstamp) + -rm -f crypto_secretbox/xsalsa20poly1305/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_secretbox/xsalsa20poly1305/$(am__dirstamp) + -rm -f crypto_secretbox/xsalsa20poly1305/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_secretbox/xsalsa20poly1305/ref/$(am__dirstamp) + -rm -f crypto_shorthash/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_shorthash/$(am__dirstamp) + -rm -f crypto_shorthash/siphash24/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_shorthash/siphash24/$(am__dirstamp) + -rm -f crypto_shorthash/siphash24/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_shorthash/siphash24/ref/$(am__dirstamp) + -rm -f crypto_sign/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_sign/$(am__dirstamp) + -rm -f crypto_sign/ed25519/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_sign/ed25519/$(am__dirstamp) + -rm -f crypto_sign/ed25519/ref10/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_sign/ed25519/ref10/$(am__dirstamp) + -rm -f crypto_sign/edwards25519sha512batch/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_sign/edwards25519sha512batch/$(am__dirstamp) + -rm -f crypto_sign/edwards25519sha512batch/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_sign/edwards25519sha512batch/ref/$(am__dirstamp) + -rm -f crypto_stream/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/$(am__dirstamp) + -rm -f crypto_stream/aes128ctr/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/aes128ctr/$(am__dirstamp) + -rm -f crypto_stream/aes128ctr/portable/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/aes128ctr/portable/$(am__dirstamp) + -rm -f crypto_stream/aes256estream/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/aes256estream/$(am__dirstamp) + -rm -f crypto_stream/aes256estream/hongjun/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/aes256estream/hongjun/$(am__dirstamp) + -rm -f crypto_stream/salsa20/amd64_xmm6/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/salsa20/amd64_xmm6/$(am__dirstamp) + -rm -f crypto_stream/salsa20/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/salsa20/ref/$(am__dirstamp) + -rm -f crypto_stream/salsa2012/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/salsa2012/$(am__dirstamp) + -rm -f crypto_stream/salsa2012/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/salsa2012/ref/$(am__dirstamp) + -rm -f crypto_stream/salsa208/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/salsa208/$(am__dirstamp) + -rm -f crypto_stream/salsa208/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/salsa208/ref/$(am__dirstamp) + -rm -f crypto_stream/xsalsa20/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/xsalsa20/$(am__dirstamp) + -rm -f crypto_stream/xsalsa20/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_stream/xsalsa20/ref/$(am__dirstamp) + -rm -f crypto_verify/16/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_verify/16/$(am__dirstamp) + -rm -f crypto_verify/16/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_verify/16/ref/$(am__dirstamp) + -rm -f crypto_verify/32/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_verify/32/$(am__dirstamp) + -rm -f crypto_verify/32/ref/$(DEPDIR)/$(am__dirstamp) + -rm -f crypto_verify/32/ref/$(am__dirstamp) + -rm -f randombytes/$(DEPDIR)/$(am__dirstamp) + -rm -f randombytes/$(am__dirstamp) + -rm -f randombytes/salsa20/$(DEPDIR)/$(am__dirstamp) + -rm -f randombytes/salsa20/$(am__dirstamp) + -rm -f randombytes/sysrandom/$(DEPDIR)/$(am__dirstamp) + -rm -f randombytes/sysrandom/$(am__dirstamp) + -rm -f sodium/$(DEPDIR)/$(am__dirstamp) + -rm -f sodium/$(am__dirstamp) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf crypto_auth/$(DEPDIR) crypto_auth/hmacsha256/$(DEPDIR) crypto_auth/hmacsha256/ref/$(DEPDIR) crypto_auth/hmacsha512256/$(DEPDIR) crypto_auth/hmacsha512256/ref/$(DEPDIR) crypto_box/$(DEPDIR) crypto_box/curve25519xsalsa20poly1305/$(DEPDIR) crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR) crypto_core/hsalsa20/$(DEPDIR) crypto_core/hsalsa20/ref2/$(DEPDIR) crypto_core/salsa20/$(DEPDIR) crypto_core/salsa20/ref/$(DEPDIR) crypto_core/salsa2012/$(DEPDIR) crypto_core/salsa2012/ref/$(DEPDIR) crypto_core/salsa208/$(DEPDIR) crypto_core/salsa208/ref/$(DEPDIR) crypto_generichash/$(DEPDIR) crypto_generichash/blake2/$(DEPDIR) crypto_generichash/blake2/ref/$(DEPDIR) crypto_hash/$(DEPDIR) crypto_hash/sha256/$(DEPDIR) crypto_hash/sha256/ref/$(DEPDIR) crypto_hash/sha512/$(DEPDIR) crypto_hash/sha512/ref/$(DEPDIR) crypto_hashblocks/sha256/$(DEPDIR) crypto_hashblocks/sha256/ref/$(DEPDIR) crypto_hashblocks/sha512/$(DEPDIR) crypto_hashblocks/sha512/ref/$(DEPDIR) crypto_onetimeauth/$(DEPDIR) crypto_onetimeauth/poly1305/$(DEPDIR) crypto_onetimeauth/poly1305/53/$(DEPDIR) crypto_onetimeauth/poly1305/donna/$(DEPDIR) crypto_scalarmult/$(DEPDIR) crypto_scalarmult/curve25519/donna_c64/$(DEPDIR) crypto_scalarmult/curve25519/ref/$(DEPDIR) crypto_secretbox/$(DEPDIR) crypto_secretbox/xsalsa20poly1305/$(DEPDIR) crypto_secretbox/xsalsa20poly1305/ref/$(DEPDIR) crypto_shorthash/$(DEPDIR) crypto_shorthash/siphash24/$(DEPDIR) crypto_shorthash/siphash24/ref/$(DEPDIR) crypto_sign/$(DEPDIR) crypto_sign/ed25519/$(DEPDIR) crypto_sign/ed25519/ref10/$(DEPDIR) crypto_sign/edwards25519sha512batch/$(DEPDIR) crypto_sign/edwards25519sha512batch/ref/$(DEPDIR) crypto_stream/$(DEPDIR) crypto_stream/aes128ctr/$(DEPDIR) crypto_stream/aes128ctr/portable/$(DEPDIR) crypto_stream/aes256estream/$(DEPDIR) crypto_stream/aes256estream/hongjun/$(DEPDIR) crypto_stream/salsa20/amd64_xmm6/$(DEPDIR) crypto_stream/salsa20/ref/$(DEPDIR) crypto_stream/salsa2012/$(DEPDIR) crypto_stream/salsa2012/ref/$(DEPDIR) crypto_stream/salsa208/$(DEPDIR) crypto_stream/salsa208/ref/$(DEPDIR) crypto_stream/xsalsa20/$(DEPDIR) crypto_stream/xsalsa20/ref/$(DEPDIR) crypto_verify/16/$(DEPDIR) crypto_verify/16/ref/$(DEPDIR) crypto_verify/32/$(DEPDIR) crypto_verify/32/ref/$(DEPDIR) randombytes/$(DEPDIR) randombytes/salsa20/$(DEPDIR) randombytes/sysrandom/$(DEPDIR) sodium/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-defexecDATA install-libLTLIBRARIES + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf crypto_auth/$(DEPDIR) crypto_auth/hmacsha256/$(DEPDIR) crypto_auth/hmacsha256/ref/$(DEPDIR) crypto_auth/hmacsha512256/$(DEPDIR) crypto_auth/hmacsha512256/ref/$(DEPDIR) crypto_box/$(DEPDIR) crypto_box/curve25519xsalsa20poly1305/$(DEPDIR) crypto_box/curve25519xsalsa20poly1305/ref/$(DEPDIR) crypto_core/hsalsa20/$(DEPDIR) crypto_core/hsalsa20/ref2/$(DEPDIR) crypto_core/salsa20/$(DEPDIR) crypto_core/salsa20/ref/$(DEPDIR) crypto_core/salsa2012/$(DEPDIR) crypto_core/salsa2012/ref/$(DEPDIR) crypto_core/salsa208/$(DEPDIR) crypto_core/salsa208/ref/$(DEPDIR) crypto_generichash/$(DEPDIR) crypto_generichash/blake2/$(DEPDIR) crypto_generichash/blake2/ref/$(DEPDIR) crypto_hash/$(DEPDIR) crypto_hash/sha256/$(DEPDIR) crypto_hash/sha256/ref/$(DEPDIR) crypto_hash/sha512/$(DEPDIR) crypto_hash/sha512/ref/$(DEPDIR) crypto_hashblocks/sha256/$(DEPDIR) crypto_hashblocks/sha256/ref/$(DEPDIR) crypto_hashblocks/sha512/$(DEPDIR) crypto_hashblocks/sha512/ref/$(DEPDIR) crypto_onetimeauth/$(DEPDIR) crypto_onetimeauth/poly1305/$(DEPDIR) crypto_onetimeauth/poly1305/53/$(DEPDIR) crypto_onetimeauth/poly1305/donna/$(DEPDIR) crypto_scalarmult/$(DEPDIR) crypto_scalarmult/curve25519/donna_c64/$(DEPDIR) crypto_scalarmult/curve25519/ref/$(DEPDIR) crypto_secretbox/$(DEPDIR) crypto_secretbox/xsalsa20poly1305/$(DEPDIR) crypto_secretbox/xsalsa20poly1305/ref/$(DEPDIR) crypto_shorthash/$(DEPDIR) crypto_shorthash/siphash24/$(DEPDIR) crypto_shorthash/siphash24/ref/$(DEPDIR) crypto_sign/$(DEPDIR) crypto_sign/ed25519/$(DEPDIR) crypto_sign/ed25519/ref10/$(DEPDIR) crypto_sign/edwards25519sha512batch/$(DEPDIR) crypto_sign/edwards25519sha512batch/ref/$(DEPDIR) crypto_stream/$(DEPDIR) crypto_stream/aes128ctr/$(DEPDIR) crypto_stream/aes128ctr/portable/$(DEPDIR) crypto_stream/aes256estream/$(DEPDIR) crypto_stream/aes256estream/hongjun/$(DEPDIR) crypto_stream/salsa20/amd64_xmm6/$(DEPDIR) crypto_stream/salsa20/ref/$(DEPDIR) crypto_stream/salsa2012/$(DEPDIR) crypto_stream/salsa2012/ref/$(DEPDIR) crypto_stream/salsa208/$(DEPDIR) crypto_stream/salsa208/ref/$(DEPDIR) crypto_stream/xsalsa20/$(DEPDIR) crypto_stream/xsalsa20/ref/$(DEPDIR) crypto_verify/16/$(DEPDIR) crypto_verify/16/ref/$(DEPDIR) crypto_verify/32/$(DEPDIR) crypto_verify/32/ref/$(DEPDIR) randombytes/$(DEPDIR) randombytes/salsa20/$(DEPDIR) randombytes/sysrandom/$(DEPDIR) sodium/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-defexecDATA uninstall-libLTLIBRARIES + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libLTLIBRARIES \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-defexecDATA install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-defexecDATA uninstall-libLTLIBRARIES + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/libsodium/src/libsodium/crypto_auth/crypto_auth.c b/src/libsodium/src/libsodium/crypto_auth/crypto_auth.c new file mode 100644 index 00000000..e76b1494 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_auth/crypto_auth.c @@ -0,0 +1,34 @@ + +#include "crypto_auth.h" + +size_t +crypto_auth_bytes(void) +{ + return crypto_auth_BYTES; +} + +size_t +crypto_auth_keybytes(void) +{ + return crypto_auth_KEYBYTES; +} + +const char * +crypto_auth_primitive(void) +{ + return crypto_auth_PRIMITIVE; +} + +int +crypto_auth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + return crypto_auth_hmacsha512256(out, in, inlen, k); +} + +int +crypto_auth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen,const unsigned char *k) +{ + return crypto_auth_hmacsha512256_verify(h, in, inlen, k); +} diff --git a/src/libsodium/src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256_api.c b/src/libsodium/src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256_api.c new file mode 100644 index 00000000..0ac96dcd --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256_api.c @@ -0,0 +1,16 @@ +#include "crypto_auth_hmacsha256.h" + +size_t +crypto_auth_hmacsha256_bytes(void) { + return crypto_auth_hmacsha256_BYTES; +} + +size_t +crypto_auth_hmacsha256_keybytes(void) { + return crypto_auth_hmacsha256_KEYBYTES; +} + +const char * +crypto_auth_hmacsha256_primitive(void) { + return "hmacsha256"; +} diff --git a/src/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/api.h b/src/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/api.h new file mode 100644 index 00000000..46fcdb60 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/api.h @@ -0,0 +1,10 @@ + +#include "crypto_auth_hmacsha256.h" + +#define crypto_auth crypto_auth_hmacsha256 +#define crypto_auth_verify crypto_auth_hmacsha256_verify +#define crypto_auth_BYTES crypto_auth_hmacsha256_BYTES +#define crypto_auth_KEYBYTES crypto_auth_hmacsha256_KEYBYTES +#define crypto_auth_PRIMITIVE "hmacsha256" +#define crypto_auth_IMPLEMENTATION crypto_auth_hmacsha256_IMPLEMENTATION +#define crypto_auth_VERSION crypto_auth_hmacsha256_VERSION diff --git a/src/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/hmac_hmacsha256.c b/src/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/hmac_hmacsha256.c new file mode 100644 index 00000000..2e7564a6 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/hmac_hmacsha256.c @@ -0,0 +1,83 @@ +/* + * 20080913 + * D. J. Bernstein + * Public domain. + * */ + +#include "api.h" +#include "crypto_hashblocks_sha256.h" + +#define blocks crypto_hashblocks_sha256 + +typedef unsigned int uint32; + +static const char iv[32] = { + 0x6a,0x09,0xe6,0x67, + 0xbb,0x67,0xae,0x85, + 0x3c,0x6e,0xf3,0x72, + 0xa5,0x4f,0xf5,0x3a, + 0x51,0x0e,0x52,0x7f, + 0x9b,0x05,0x68,0x8c, + 0x1f,0x83,0xd9,0xab, + 0x5b,0xe0,0xcd,0x19, +} ; + +int crypto_auth(unsigned char *out,const unsigned char *in,unsigned long long inlen,const unsigned char *k) +{ + unsigned char h[32]; + unsigned char padded[128]; + unsigned long long i; + unsigned long long bits = 512 + (inlen << 3); + + for (i = 0;i < 32;++i) h[i] = iv[i]; + + for (i = 0;i < 32;++i) padded[i] = k[i] ^ 0x36; + for (i = 32;i < 64;++i) padded[i] = 0x36; + + blocks(h,padded,64); + blocks(h,in,inlen); + in += inlen; + inlen &= 63; + in -= inlen; + + for (i = 0;i < inlen;++i) padded[i] = in[i]; + padded[inlen] = 0x80; + + if (inlen < 56) { + for (i = inlen + 1;i < 56;++i) padded[i] = 0; + padded[56] = bits >> 56; + padded[57] = bits >> 48; + padded[58] = bits >> 40; + padded[59] = bits >> 32; + padded[60] = bits >> 24; + padded[61] = bits >> 16; + padded[62] = bits >> 8; + padded[63] = bits; + blocks(h,padded,64); + } else { + for (i = inlen + 1;i < 120;++i) padded[i] = 0; + padded[120] = bits >> 56; + padded[121] = bits >> 48; + padded[122] = bits >> 40; + padded[123] = bits >> 32; + padded[124] = bits >> 24; + padded[125] = bits >> 16; + padded[126] = bits >> 8; + padded[127] = bits; + blocks(h,padded,128); + } + + for (i = 0;i < 32;++i) padded[i] = k[i] ^ 0x5c; + for (i = 32;i < 64;++i) padded[i] = 0x5c; + for (i = 0;i < 32;++i) padded[64 + i] = h[i]; + + for (i = 0;i < 32;++i) out[i] = iv[i]; + + for (i = 32;i < 64;++i) padded[64 + i] = 0; + padded[64 + 32] = 0x80; + padded[64 + 62] = 3; + + blocks(out,padded,128); + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/verify_hmacsha256.c b/src/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/verify_hmacsha256.c new file mode 100644 index 00000000..b6cf4893 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/verify_hmacsha256.c @@ -0,0 +1,9 @@ +#include "api.h" +#include "crypto_verify_32.h" + +int crypto_auth_verify(const unsigned char *h,const unsigned char *in,unsigned long long inlen,const unsigned char *k) +{ + unsigned char correct[32]; + crypto_auth(correct,in,inlen,k); + return crypto_verify_32(h,correct); +} diff --git a/src/libsodium/src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256_api.c b/src/libsodium/src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256_api.c new file mode 100644 index 00000000..48c92b3d --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256_api.c @@ -0,0 +1,16 @@ +#include "crypto_auth_hmacsha512256.h" + +size_t +crypto_auth_hmacsha512256_bytes(void) { + return crypto_auth_hmacsha512256_BYTES; +} + +size_t +crypto_auth_hmacsha512256_keybytes(void) { + return crypto_auth_hmacsha512256_KEYBYTES; +} + +const char * +crypto_auth_hmacsha512256_primitive(void) { + return "hmacsha512256"; +} diff --git a/src/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/api.h b/src/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/api.h new file mode 100644 index 00000000..f0331271 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/api.h @@ -0,0 +1,10 @@ + +#include "crypto_auth_hmacsha512256.h" + +#define crypto_auth crypto_auth_hmacsha512256 +#define crypto_auth_verify crypto_auth_hmacsha512256_verify +#define crypto_auth_BYTES crypto_auth_hmacsha512256_BYTES +#define crypto_auth_KEYBYTES crypto_auth_hmacsha512256_KEYBYTES +#define crypto_auth_PRIMITIVE "hmacsha512256" +#define crypto_auth_IMPLEMENTATION crypto_auth_hmacsha512256_IMPLEMENTATION +#define crypto_auth_VERSION crypto_auth_hmacsha512256_VERSION diff --git a/src/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c b/src/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c new file mode 100644 index 00000000..be871ced --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c @@ -0,0 +1,86 @@ +/* + * 20080913 + * D. J. Bernstein + * Public domain. + * */ + +#include "api.h" +#include "crypto_hashblocks_sha512.h" + +#define blocks crypto_hashblocks_sha512 + +typedef unsigned long long uint64; + +static const unsigned char iv[64] = { + 0x6a,0x09,0xe6,0x67,0xf3,0xbc,0xc9,0x08, + 0xbb,0x67,0xae,0x85,0x84,0xca,0xa7,0x3b, + 0x3c,0x6e,0xf3,0x72,0xfe,0x94,0xf8,0x2b, + 0xa5,0x4f,0xf5,0x3a,0x5f,0x1d,0x36,0xf1, + 0x51,0x0e,0x52,0x7f,0xad,0xe6,0x82,0xd1, + 0x9b,0x05,0x68,0x8c,0x2b,0x3e,0x6c,0x1f, + 0x1f,0x83,0xd9,0xab,0xfb,0x41,0xbd,0x6b, + 0x5b,0xe0,0xcd,0x19,0x13,0x7e,0x21,0x79 +} ; + +int crypto_auth(unsigned char *out,const unsigned char *in,unsigned long long inlen,const unsigned char *k) +{ + unsigned char h[64]; + unsigned char padded[256]; + unsigned long long i; + unsigned long long bytes = 128 + inlen; + + for (i = 0;i < 64;++i) h[i] = iv[i]; + + for (i = 0;i < 32;++i) padded[i] = k[i] ^ 0x36; + for (i = 32;i < 128;++i) padded[i] = 0x36; + + blocks(h,padded,128); + blocks(h,in,inlen); + in += inlen; + inlen &= 127; + in -= inlen; + + for (i = 0;i < inlen;++i) padded[i] = in[i]; + padded[inlen] = 0x80; + + if (inlen < 112) { + for (i = inlen + 1;i < 119;++i) padded[i] = 0; + padded[119] = bytes >> 61; + padded[120] = bytes >> 53; + padded[121] = bytes >> 45; + padded[122] = bytes >> 37; + padded[123] = bytes >> 29; + padded[124] = bytes >> 21; + padded[125] = bytes >> 13; + padded[126] = bytes >> 5; + padded[127] = bytes << 3; + blocks(h,padded,128); + } else { + for (i = inlen + 1;i < 247;++i) padded[i] = 0; + padded[247] = bytes >> 61; + padded[248] = bytes >> 53; + padded[249] = bytes >> 45; + padded[250] = bytes >> 37; + padded[251] = bytes >> 29; + padded[252] = bytes >> 21; + padded[253] = bytes >> 13; + padded[254] = bytes >> 5; + padded[255] = bytes << 3; + blocks(h,padded,256); + } + + for (i = 0;i < 32;++i) padded[i] = k[i] ^ 0x5c; + for (i = 32;i < 128;++i) padded[i] = 0x5c; + + for (i = 0;i < 64;++i) padded[128 + i] = h[i]; + for (i = 0;i < 64;++i) h[i] = iv[i]; + + for (i = 64;i < 128;++i) padded[128 + i] = 0; + padded[128 + 64] = 0x80; + padded[128 + 126] = 6; + + blocks(h,padded,256); + for (i = 0;i < 32;++i) out[i] = h[i]; + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c b/src/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c new file mode 100644 index 00000000..b6cf4893 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c @@ -0,0 +1,9 @@ +#include "api.h" +#include "crypto_verify_32.h" + +int crypto_auth_verify(const unsigned char *h,const unsigned char *in,unsigned long long inlen,const unsigned char *k) +{ + unsigned char correct[32]; + crypto_auth(correct,in,inlen,k); + return crypto_verify_32(h,correct); +} diff --git a/src/libsodium/src/libsodium/crypto_box/crypto_box.c b/src/libsodium/src/libsodium/crypto_box/crypto_box.c new file mode 100644 index 00000000..7ec820a4 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_box/crypto_box.c @@ -0,0 +1,95 @@ + +#include "crypto_box.h" + +size_t +crypto_box_publickeybytes(void) +{ + return crypto_box_PUBLICKEYBYTES; +} + +size_t +crypto_box_secretkeybytes(void) +{ + return crypto_box_SECRETKEYBYTES; +} + +size_t +crypto_box_beforenmbytes(void) +{ + return crypto_box_BEFORENMBYTES; +} + +size_t +crypto_box_noncebytes(void) +{ + return crypto_box_NONCEBYTES; +} + +size_t +crypto_box_zerobytes(void) +{ + return crypto_box_ZEROBYTES; +} + +size_t +crypto_box_boxzerobytes(void) +{ + return crypto_box_BOXZEROBYTES; +} + +size_t +crypto_box_macbytes(void) +{ + return crypto_box_MACBYTES; +} + +const char * +crypto_box_primitive(void) +{ + return crypto_box_PRIMITIVE; +} + +int +crypto_box_keypair(unsigned char *pk, unsigned char *sk) +{ + return crypto_box_curve25519xsalsa20poly1305_keypair(pk, sk); +} + +int +crypto_box_beforenm(unsigned char *k, const unsigned char *pk, + const unsigned char *sk) +{ + return crypto_box_curve25519xsalsa20poly1305_beforenm(k, pk, sk); +} + +int +crypto_box_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_box_curve25519xsalsa20poly1305_afternm(c, m, mlen, n, k); +} + +int +crypto_box_open_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_box_curve25519xsalsa20poly1305_open_afternm(m, c, clen, n, k); +} + +int +crypto_box(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) +{ + return crypto_box_curve25519xsalsa20poly1305(c, m, mlen, n, pk, sk); +} + +int +crypto_box_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) +{ + return crypto_box_curve25519xsalsa20poly1305_open(m, c, clen, n, pk, sk); +} diff --git a/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c b/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c new file mode 100644 index 00000000..6f04bf86 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c @@ -0,0 +1,41 @@ +#include "crypto_box_curve25519xsalsa20poly1305.h" + +size_t +crypto_box_curve25519xsalsa20poly1305_publickeybytes(void) { + return crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void) { + return crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void) { + return crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_noncebytes(void) { + return crypto_box_curve25519xsalsa20poly1305_NONCEBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_zerobytes(void) { + return crypto_box_curve25519xsalsa20poly1305_ZEROBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void) { + return crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_macbytes(void) { + return crypto_box_curve25519xsalsa20poly1305_MACBYTES; +} + +const char * +crypto_box_curve25519xsalsa20poly1305_primitive(void) { + return "curve25519xsalsa20poly1305"; +} diff --git a/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c b/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c new file mode 100644 index 00000000..a830936b --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c @@ -0,0 +1,22 @@ +#include "api.h" +#include "crypto_secretbox_xsalsa20poly1305.h" + +int crypto_box_afternm( + unsigned char *c, + const unsigned char *m,unsigned long long mlen, + const unsigned char *n, + const unsigned char *k +) +{ + return crypto_secretbox_xsalsa20poly1305(c,m,mlen,n,k); +} + +int crypto_box_open_afternm( + unsigned char *m, + const unsigned char *c,unsigned long long clen, + const unsigned char *n, + const unsigned char *k +) +{ + return crypto_secretbox_xsalsa20poly1305_open(m,c,clen,n,k); +} diff --git a/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/api.h b/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/api.h new file mode 100644 index 00000000..394a75ec --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/api.h @@ -0,0 +1,19 @@ + +#include "crypto_box_curve25519xsalsa20poly1305.h" + +#define crypto_box crypto_box_curve25519xsalsa20poly1305 +#define crypto_box_open crypto_box_curve25519xsalsa20poly1305_open +#define crypto_box_keypair crypto_box_curve25519xsalsa20poly1305_keypair +#define crypto_box_beforenm crypto_box_curve25519xsalsa20poly1305_beforenm +#define crypto_box_afternm crypto_box_curve25519xsalsa20poly1305_afternm +#define crypto_box_open_afternm crypto_box_curve25519xsalsa20poly1305_open_afternm +#define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES +#define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES +#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES +#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES +#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES +#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES +#define crypto_box_MACBYTES (crypto_box_ZEROBYTES - crypto_box_BOXZEROBYTES) +#define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305" +#define crypto_box_IMPLEMENTATION crypto_box_curve25519xsalsa20poly1305_IMPLEMENTATION +#define crypto_box_VERSION crypto_box_curve25519xsalsa20poly1305_VERSION diff --git a/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c b/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c new file mode 100644 index 00000000..40d4300e --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c @@ -0,0 +1,19 @@ +#include "api.h" +#include "crypto_core_hsalsa20.h" +#include "crypto_scalarmult_curve25519.h" + +static const unsigned char sigma[16] = { + 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k' +}; +static const unsigned char n[16] = {0}; + +int crypto_box_beforenm( + unsigned char *k, + const unsigned char *pk, + const unsigned char *sk +) +{ + unsigned char s[32]; + crypto_scalarmult_curve25519(s,sk,pk); + return crypto_core_hsalsa20(k,n,s,sigma); +} diff --git a/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c b/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c new file mode 100644 index 00000000..4b75ece8 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c @@ -0,0 +1,27 @@ +#include "api.h" + +int crypto_box( + unsigned char *c, + const unsigned char *m,unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk +) +{ + unsigned char k[crypto_box_BEFORENMBYTES]; + crypto_box_beforenm(k,pk,sk); + return crypto_box_afternm(c,m,mlen,n,k); +} + +int crypto_box_open( + unsigned char *m, + const unsigned char *c,unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk +) +{ + unsigned char k[crypto_box_BEFORENMBYTES]; + crypto_box_beforenm(k,pk,sk); + return crypto_box_open_afternm(m,c,clen,n,k); +} diff --git a/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c b/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c new file mode 100644 index 00000000..69fb1cfc --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c @@ -0,0 +1,12 @@ +#include "crypto_scalarmult_curve25519.h" +#include "api.h" +#include "randombytes.h" + +int crypto_box_keypair( + unsigned char *pk, + unsigned char *sk +) +{ + randombytes(sk,32); + return crypto_scalarmult_curve25519_base(pk,sk); +} diff --git a/src/libsodium/src/libsodium/crypto_core/hsalsa20/core_hsalsa20_api.c b/src/libsodium/src/libsodium/crypto_core/hsalsa20/core_hsalsa20_api.c new file mode 100644 index 00000000..31836abd --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_core/hsalsa20/core_hsalsa20_api.c @@ -0,0 +1,26 @@ +#include "crypto_core_hsalsa20.h" + +size_t +crypto_core_hsalsa20_outputbytes(void) { + return crypto_core_hsalsa20_OUTPUTBYTES; +} + +size_t +crypto_core_hsalsa20_inputbytes(void) { + return crypto_core_hsalsa20_INPUTBYTES; +} + +size_t +crypto_core_hsalsa20_keybytes(void) { + return crypto_core_hsalsa20_KEYBYTES; +} + +size_t +crypto_core_hsalsa20_constbytes(void) { + return crypto_core_hsalsa20_CONSTBYTES; +} + +const char * +crypto_core_hsalsa20_primitive(void) { + return "hsalsa20"; +} diff --git a/src/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/api.h b/src/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/api.h new file mode 100644 index 00000000..e7866bac --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/api.h @@ -0,0 +1,11 @@ + +#include "crypto_core_hsalsa20.h" + +#define crypto_core crypto_core_hsalsa20 +#define crypto_core_OUTPUTBYTES crypto_core_hsalsa20_OUTPUTBYTES +#define crypto_core_INPUTBYTES crypto_core_hsalsa20_INPUTBYTES +#define crypto_core_KEYBYTES crypto_core_hsalsa20_KEYBYTES +#define crypto_core_CONSTBYTES crypto_core_hsalsa20_CONSTBYTES +#define crypto_core_PRIMITIVE "hsalsa20" +#define crypto_core_IMPLEMENTATION crypto_core_hsalsa20_IMPLEMENTATION +#define crypto_core_VERSION crypto_core_hsalsa20_VERSION diff --git a/src/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20.c b/src/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20.c new file mode 100644 index 00000000..c9bd359e --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20.c @@ -0,0 +1,108 @@ +/* +version 20080912 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" + +#define ROUNDS 20 + +typedef unsigned int uint32; + +static uint32 rotate(uint32 u,int c) +{ + return (u << c) | (u >> (32 - c)); +} + +static uint32 load_littleendian(const unsigned char *x) +{ + return + (uint32) (x[0]) \ + | (((uint32) (x[1])) << 8) \ + | (((uint32) (x[2])) << 16) \ + | (((uint32) (x[3])) << 24) + ; +} + +static void store_littleendian(unsigned char *x,uint32 u) +{ + x[0] = u; u >>= 8; + x[1] = u; u >>= 8; + x[2] = u; u >>= 8; + x[3] = u; +} + +int crypto_core( + unsigned char *out, + const unsigned char *in, + const unsigned char *k, + const unsigned char *c +) +{ + uint32 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15; + int i; + + x0 = load_littleendian(c + 0); + x1 = load_littleendian(k + 0); + x2 = load_littleendian(k + 4); + x3 = load_littleendian(k + 8); + x4 = load_littleendian(k + 12); + x5 = load_littleendian(c + 4); + x6 = load_littleendian(in + 0); + x7 = load_littleendian(in + 4); + x8 = load_littleendian(in + 8); + x9 = load_littleendian(in + 12); + x10 = load_littleendian(c + 8); + x11 = load_littleendian(k + 16); + x12 = load_littleendian(k + 20); + x13 = load_littleendian(k + 24); + x14 = load_littleendian(k + 28); + x15 = load_littleendian(c + 12); + + for (i = ROUNDS;i > 0;i -= 2) { + x4 ^= rotate( x0+x12, 7); + x8 ^= rotate( x4+ x0, 9); + x12 ^= rotate( x8+ x4,13); + x0 ^= rotate(x12+ x8,18); + x9 ^= rotate( x5+ x1, 7); + x13 ^= rotate( x9+ x5, 9); + x1 ^= rotate(x13+ x9,13); + x5 ^= rotate( x1+x13,18); + x14 ^= rotate(x10+ x6, 7); + x2 ^= rotate(x14+x10, 9); + x6 ^= rotate( x2+x14,13); + x10 ^= rotate( x6+ x2,18); + x3 ^= rotate(x15+x11, 7); + x7 ^= rotate( x3+x15, 9); + x11 ^= rotate( x7+ x3,13); + x15 ^= rotate(x11+ x7,18); + x1 ^= rotate( x0+ x3, 7); + x2 ^= rotate( x1+ x0, 9); + x3 ^= rotate( x2+ x1,13); + x0 ^= rotate( x3+ x2,18); + x6 ^= rotate( x5+ x4, 7); + x7 ^= rotate( x6+ x5, 9); + x4 ^= rotate( x7+ x6,13); + x5 ^= rotate( x4+ x7,18); + x11 ^= rotate(x10+ x9, 7); + x8 ^= rotate(x11+x10, 9); + x9 ^= rotate( x8+x11,13); + x10 ^= rotate( x9+ x8,18); + x12 ^= rotate(x15+x14, 7); + x13 ^= rotate(x12+x15, 9); + x14 ^= rotate(x13+x12,13); + x15 ^= rotate(x14+x13,18); + } + + store_littleendian(out + 0,x0); + store_littleendian(out + 4,x5); + store_littleendian(out + 8,x10); + store_littleendian(out + 12,x15); + store_littleendian(out + 16,x6); + store_littleendian(out + 20,x7); + store_littleendian(out + 24,x8); + store_littleendian(out + 28,x9); + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_core/salsa20/core_salsa20_api.c b/src/libsodium/src/libsodium/crypto_core/salsa20/core_salsa20_api.c new file mode 100644 index 00000000..6ea9ee0c --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_core/salsa20/core_salsa20_api.c @@ -0,0 +1,26 @@ +#include "crypto_core_salsa20.h" + +size_t +crypto_core_salsa20_outputbytes(void) { + return crypto_core_salsa20_OUTPUTBYTES; +} + +size_t +crypto_core_salsa20_inputbytes(void) { + return crypto_core_salsa20_INPUTBYTES; +} + +size_t +crypto_core_salsa20_keybytes(void) { + return crypto_core_salsa20_KEYBYTES; +} + +size_t +crypto_core_salsa20_constbytes(void) { + return crypto_core_salsa20_CONSTBYTES; +} + +const char * +crypto_core_salsa20_primitive(void) { + return "salsa20"; +} diff --git a/src/libsodium/src/libsodium/crypto_core/salsa20/ref/api.h b/src/libsodium/src/libsodium/crypto_core/salsa20/ref/api.h new file mode 100644 index 00000000..d800a1ed --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_core/salsa20/ref/api.h @@ -0,0 +1,11 @@ + +#include "crypto_core_salsa20.h" + +#define crypto_core crypto_core_salsa20 +#define crypto_core_OUTPUTBYTES crypto_core_salsa20_OUTPUTBYTES +#define crypto_core_INPUTBYTES crypto_core_salsa20_INPUTBYTES +#define crypto_core_KEYBYTES crypto_core_salsa20_KEYBYTES +#define crypto_core_CONSTBYTES crypto_core_salsa20_CONSTBYTES +#define crypto_core_PRIMITIVE "salsa20" +#define crypto_core_IMPLEMENTATION crypto_core_salsa20_IMPLEMENTATION +#define crypto_core_VERSION crypto_core_salsa20_VERSION diff --git a/src/libsodium/src/libsodium/crypto_core/salsa20/ref/core_salsa20.c b/src/libsodium/src/libsodium/crypto_core/salsa20/ref/core_salsa20.c new file mode 100644 index 00000000..b2f6f5c7 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_core/salsa20/ref/core_salsa20.c @@ -0,0 +1,134 @@ +/* +version 20080912 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" + +#define ROUNDS 20 + +typedef unsigned int uint32; + +static uint32 rotate(uint32 u,int c) +{ + return (u << c) | (u >> (32 - c)); +} + +static uint32 load_littleendian(const unsigned char *x) +{ + return + (uint32) (x[0]) \ + | (((uint32) (x[1])) << 8) \ + | (((uint32) (x[2])) << 16) \ + | (((uint32) (x[3])) << 24) + ; +} + +static void store_littleendian(unsigned char *x,uint32 u) +{ + x[0] = u; u >>= 8; + x[1] = u; u >>= 8; + x[2] = u; u >>= 8; + x[3] = u; +} + +int crypto_core( + unsigned char *out, + const unsigned char *in, + const unsigned char *k, + const unsigned char *c +) +{ + uint32 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15; + uint32 j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, j15; + int i; + + j0 = x0 = load_littleendian(c + 0); + j1 = x1 = load_littleendian(k + 0); + j2 = x2 = load_littleendian(k + 4); + j3 = x3 = load_littleendian(k + 8); + j4 = x4 = load_littleendian(k + 12); + j5 = x5 = load_littleendian(c + 4); + j6 = x6 = load_littleendian(in + 0); + j7 = x7 = load_littleendian(in + 4); + j8 = x8 = load_littleendian(in + 8); + j9 = x9 = load_littleendian(in + 12); + j10 = x10 = load_littleendian(c + 8); + j11 = x11 = load_littleendian(k + 16); + j12 = x12 = load_littleendian(k + 20); + j13 = x13 = load_littleendian(k + 24); + j14 = x14 = load_littleendian(k + 28); + j15 = x15 = load_littleendian(c + 12); + + for (i = ROUNDS;i > 0;i -= 2) { + x4 ^= rotate( x0+x12, 7); + x8 ^= rotate( x4+ x0, 9); + x12 ^= rotate( x8+ x4,13); + x0 ^= rotate(x12+ x8,18); + x9 ^= rotate( x5+ x1, 7); + x13 ^= rotate( x9+ x5, 9); + x1 ^= rotate(x13+ x9,13); + x5 ^= rotate( x1+x13,18); + x14 ^= rotate(x10+ x6, 7); + x2 ^= rotate(x14+x10, 9); + x6 ^= rotate( x2+x14,13); + x10 ^= rotate( x6+ x2,18); + x3 ^= rotate(x15+x11, 7); + x7 ^= rotate( x3+x15, 9); + x11 ^= rotate( x7+ x3,13); + x15 ^= rotate(x11+ x7,18); + x1 ^= rotate( x0+ x3, 7); + x2 ^= rotate( x1+ x0, 9); + x3 ^= rotate( x2+ x1,13); + x0 ^= rotate( x3+ x2,18); + x6 ^= rotate( x5+ x4, 7); + x7 ^= rotate( x6+ x5, 9); + x4 ^= rotate( x7+ x6,13); + x5 ^= rotate( x4+ x7,18); + x11 ^= rotate(x10+ x9, 7); + x8 ^= rotate(x11+x10, 9); + x9 ^= rotate( x8+x11,13); + x10 ^= rotate( x9+ x8,18); + x12 ^= rotate(x15+x14, 7); + x13 ^= rotate(x12+x15, 9); + x14 ^= rotate(x13+x12,13); + x15 ^= rotate(x14+x13,18); + } + + x0 += j0; + x1 += j1; + x2 += j2; + x3 += j3; + x4 += j4; + x5 += j5; + x6 += j6; + x7 += j7; + x8 += j8; + x9 += j9; + x10 += j10; + x11 += j11; + x12 += j12; + x13 += j13; + x14 += j14; + x15 += j15; + + store_littleendian(out + 0,x0); + store_littleendian(out + 4,x1); + store_littleendian(out + 8,x2); + store_littleendian(out + 12,x3); + store_littleendian(out + 16,x4); + store_littleendian(out + 20,x5); + store_littleendian(out + 24,x6); + store_littleendian(out + 28,x7); + store_littleendian(out + 32,x8); + store_littleendian(out + 36,x9); + store_littleendian(out + 40,x10); + store_littleendian(out + 44,x11); + store_littleendian(out + 48,x12); + store_littleendian(out + 52,x13); + store_littleendian(out + 56,x14); + store_littleendian(out + 60,x15); + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_core/salsa2012/core_salsa2012_api.c b/src/libsodium/src/libsodium/crypto_core/salsa2012/core_salsa2012_api.c new file mode 100644 index 00000000..15b0533c --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_core/salsa2012/core_salsa2012_api.c @@ -0,0 +1,26 @@ +#include "crypto_core_salsa2012.h" + +size_t +crypto_core_salsa2012_outputbytes(void) { + return crypto_core_salsa2012_OUTPUTBYTES; +} + +size_t +crypto_core_salsa2012_inputbytes(void) { + return crypto_core_salsa2012_INPUTBYTES; +} + +size_t +crypto_core_salsa2012_keybytes(void) { + return crypto_core_salsa2012_KEYBYTES; +} + +size_t +crypto_core_salsa2012_constbytes(void) { + return crypto_core_salsa2012_CONSTBYTES; +} + +const char * +crypto_core_salsa2012_primitive(void) { + return "salsa2012"; +} diff --git a/src/libsodium/src/libsodium/crypto_core/salsa2012/ref/api.h b/src/libsodium/src/libsodium/crypto_core/salsa2012/ref/api.h new file mode 100644 index 00000000..3e27241d --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_core/salsa2012/ref/api.h @@ -0,0 +1,11 @@ + +#include "crypto_core_salsa2012.h" + +#define crypto_core crypto_core_salsa2012 +#define crypto_core_OUTPUTBYTES crypto_core_salsa2012_OUTPUTBYTES +#define crypto_core_INPUTBYTES crypto_core_salsa2012_INPUTBYTES +#define crypto_core_KEYBYTES crypto_core_salsa2012_KEYBYTES +#define crypto_core_CONSTBYTES crypto_core_salsa2012_CONSTBYTES +#define crypto_core_PRIMITIVE "salsa2012" +#define crypto_core_IMPLEMENTATION crypto_core_salsa2012_IMPLEMENTATION +#define crypto_core_VERSION crypto_core_salsa2012_VERSION diff --git a/src/libsodium/src/libsodium/crypto_core/salsa2012/ref/core_salsa2012.c b/src/libsodium/src/libsodium/crypto_core/salsa2012/ref/core_salsa2012.c new file mode 100644 index 00000000..07a72e71 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_core/salsa2012/ref/core_salsa2012.c @@ -0,0 +1,134 @@ +/* +version 20080913 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" + +#define ROUNDS 12 + +typedef unsigned int uint32; + +static uint32 rotate(uint32 u,int c) +{ + return (u << c) | (u >> (32 - c)); +} + +static uint32 load_littleendian(const unsigned char *x) +{ + return + (uint32) (x[0]) \ + | (((uint32) (x[1])) << 8) \ + | (((uint32) (x[2])) << 16) \ + | (((uint32) (x[3])) << 24) + ; +} + +static void store_littleendian(unsigned char *x,uint32 u) +{ + x[0] = u; u >>= 8; + x[1] = u; u >>= 8; + x[2] = u; u >>= 8; + x[3] = u; +} + +int crypto_core( + unsigned char *out, + const unsigned char *in, + const unsigned char *k, + const unsigned char *c +) +{ + uint32 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15; + uint32 j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, j15; + int i; + + j0 = x0 = load_littleendian(c + 0); + j1 = x1 = load_littleendian(k + 0); + j2 = x2 = load_littleendian(k + 4); + j3 = x3 = load_littleendian(k + 8); + j4 = x4 = load_littleendian(k + 12); + j5 = x5 = load_littleendian(c + 4); + j6 = x6 = load_littleendian(in + 0); + j7 = x7 = load_littleendian(in + 4); + j8 = x8 = load_littleendian(in + 8); + j9 = x9 = load_littleendian(in + 12); + j10 = x10 = load_littleendian(c + 8); + j11 = x11 = load_littleendian(k + 16); + j12 = x12 = load_littleendian(k + 20); + j13 = x13 = load_littleendian(k + 24); + j14 = x14 = load_littleendian(k + 28); + j15 = x15 = load_littleendian(c + 12); + + for (i = ROUNDS;i > 0;i -= 2) { + x4 ^= rotate( x0+x12, 7); + x8 ^= rotate( x4+ x0, 9); + x12 ^= rotate( x8+ x4,13); + x0 ^= rotate(x12+ x8,18); + x9 ^= rotate( x5+ x1, 7); + x13 ^= rotate( x9+ x5, 9); + x1 ^= rotate(x13+ x9,13); + x5 ^= rotate( x1+x13,18); + x14 ^= rotate(x10+ x6, 7); + x2 ^= rotate(x14+x10, 9); + x6 ^= rotate( x2+x14,13); + x10 ^= rotate( x6+ x2,18); + x3 ^= rotate(x15+x11, 7); + x7 ^= rotate( x3+x15, 9); + x11 ^= rotate( x7+ x3,13); + x15 ^= rotate(x11+ x7,18); + x1 ^= rotate( x0+ x3, 7); + x2 ^= rotate( x1+ x0, 9); + x3 ^= rotate( x2+ x1,13); + x0 ^= rotate( x3+ x2,18); + x6 ^= rotate( x5+ x4, 7); + x7 ^= rotate( x6+ x5, 9); + x4 ^= rotate( x7+ x6,13); + x5 ^= rotate( x4+ x7,18); + x11 ^= rotate(x10+ x9, 7); + x8 ^= rotate(x11+x10, 9); + x9 ^= rotate( x8+x11,13); + x10 ^= rotate( x9+ x8,18); + x12 ^= rotate(x15+x14, 7); + x13 ^= rotate(x12+x15, 9); + x14 ^= rotate(x13+x12,13); + x15 ^= rotate(x14+x13,18); + } + + x0 += j0; + x1 += j1; + x2 += j2; + x3 += j3; + x4 += j4; + x5 += j5; + x6 += j6; + x7 += j7; + x8 += j8; + x9 += j9; + x10 += j10; + x11 += j11; + x12 += j12; + x13 += j13; + x14 += j14; + x15 += j15; + + store_littleendian(out + 0,x0); + store_littleendian(out + 4,x1); + store_littleendian(out + 8,x2); + store_littleendian(out + 12,x3); + store_littleendian(out + 16,x4); + store_littleendian(out + 20,x5); + store_littleendian(out + 24,x6); + store_littleendian(out + 28,x7); + store_littleendian(out + 32,x8); + store_littleendian(out + 36,x9); + store_littleendian(out + 40,x10); + store_littleendian(out + 44,x11); + store_littleendian(out + 48,x12); + store_littleendian(out + 52,x13); + store_littleendian(out + 56,x14); + store_littleendian(out + 60,x15); + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_core/salsa208/core_salsa208_api.c b/src/libsodium/src/libsodium/crypto_core/salsa208/core_salsa208_api.c new file mode 100644 index 00000000..13af9a9c --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_core/salsa208/core_salsa208_api.c @@ -0,0 +1,26 @@ +#include "crypto_core_salsa208.h" + +size_t +crypto_core_salsa208_outputbytes(void) { + return crypto_core_salsa208_OUTPUTBYTES; +} + +size_t +crypto_core_salsa208_inputbytes(void) { + return crypto_core_salsa208_INPUTBYTES; +} + +size_t +crypto_core_salsa208_keybytes(void) { + return crypto_core_salsa208_KEYBYTES; +} + +size_t +crypto_core_salsa208_constbytes(void) { + return crypto_core_salsa208_CONSTBYTES; +} + +const char * +crypto_core_salsa208_primitive(void) { + return "salsa208"; +} diff --git a/src/libsodium/src/libsodium/crypto_core/salsa208/ref/api.h b/src/libsodium/src/libsodium/crypto_core/salsa208/ref/api.h new file mode 100644 index 00000000..1172a352 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_core/salsa208/ref/api.h @@ -0,0 +1,11 @@ + +#include "crypto_core_salsa208.h" + +#define crypto_core crypto_core_salsa208 +#define crypto_core_OUTPUTBYTES crypto_core_salsa208_OUTPUTBYTES +#define crypto_core_INPUTBYTES crypto_core_salsa208_INPUTBYTES +#define crypto_core_KEYBYTES crypto_core_salsa208_KEYBYTES +#define crypto_core_CONSTBYTES crypto_core_salsa208_CONSTBYTES +#define crypto_core_PRIMITIVE "salsa208" +#define crypto_core_IMPLEMENTATION crypto_core_salsa208_IMPLEMENTATION +#define crypto_core_VERSION crypto_core_salsa208_VERSION diff --git a/src/libsodium/src/libsodium/crypto_core/salsa208/ref/core_salsa208.c b/src/libsodium/src/libsodium/crypto_core/salsa208/ref/core_salsa208.c new file mode 100644 index 00000000..be26f82a --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_core/salsa208/ref/core_salsa208.c @@ -0,0 +1,134 @@ +/* +version 20080913 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" + +#define ROUNDS 8 + +typedef unsigned int uint32; + +static uint32 rotate(uint32 u,int c) +{ + return (u << c) | (u >> (32 - c)); +} + +static uint32 load_littleendian(const unsigned char *x) +{ + return + (uint32) (x[0]) \ + | (((uint32) (x[1])) << 8) \ + | (((uint32) (x[2])) << 16) \ + | (((uint32) (x[3])) << 24) + ; +} + +static void store_littleendian(unsigned char *x,uint32 u) +{ + x[0] = u; u >>= 8; + x[1] = u; u >>= 8; + x[2] = u; u >>= 8; + x[3] = u; +} + +int crypto_core( + unsigned char *out, + const unsigned char *in, + const unsigned char *k, + const unsigned char *c +) +{ + uint32 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15; + uint32 j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, j15; + int i; + + j0 = x0 = load_littleendian(c + 0); + j1 = x1 = load_littleendian(k + 0); + j2 = x2 = load_littleendian(k + 4); + j3 = x3 = load_littleendian(k + 8); + j4 = x4 = load_littleendian(k + 12); + j5 = x5 = load_littleendian(c + 4); + j6 = x6 = load_littleendian(in + 0); + j7 = x7 = load_littleendian(in + 4); + j8 = x8 = load_littleendian(in + 8); + j9 = x9 = load_littleendian(in + 12); + j10 = x10 = load_littleendian(c + 8); + j11 = x11 = load_littleendian(k + 16); + j12 = x12 = load_littleendian(k + 20); + j13 = x13 = load_littleendian(k + 24); + j14 = x14 = load_littleendian(k + 28); + j15 = x15 = load_littleendian(c + 12); + + for (i = ROUNDS;i > 0;i -= 2) { + x4 ^= rotate( x0+x12, 7); + x8 ^= rotate( x4+ x0, 9); + x12 ^= rotate( x8+ x4,13); + x0 ^= rotate(x12+ x8,18); + x9 ^= rotate( x5+ x1, 7); + x13 ^= rotate( x9+ x5, 9); + x1 ^= rotate(x13+ x9,13); + x5 ^= rotate( x1+x13,18); + x14 ^= rotate(x10+ x6, 7); + x2 ^= rotate(x14+x10, 9); + x6 ^= rotate( x2+x14,13); + x10 ^= rotate( x6+ x2,18); + x3 ^= rotate(x15+x11, 7); + x7 ^= rotate( x3+x15, 9); + x11 ^= rotate( x7+ x3,13); + x15 ^= rotate(x11+ x7,18); + x1 ^= rotate( x0+ x3, 7); + x2 ^= rotate( x1+ x0, 9); + x3 ^= rotate( x2+ x1,13); + x0 ^= rotate( x3+ x2,18); + x6 ^= rotate( x5+ x4, 7); + x7 ^= rotate( x6+ x5, 9); + x4 ^= rotate( x7+ x6,13); + x5 ^= rotate( x4+ x7,18); + x11 ^= rotate(x10+ x9, 7); + x8 ^= rotate(x11+x10, 9); + x9 ^= rotate( x8+x11,13); + x10 ^= rotate( x9+ x8,18); + x12 ^= rotate(x15+x14, 7); + x13 ^= rotate(x12+x15, 9); + x14 ^= rotate(x13+x12,13); + x15 ^= rotate(x14+x13,18); + } + + x0 += j0; + x1 += j1; + x2 += j2; + x3 += j3; + x4 += j4; + x5 += j5; + x6 += j6; + x7 += j7; + x8 += j8; + x9 += j9; + x10 += j10; + x11 += j11; + x12 += j12; + x13 += j13; + x14 += j14; + x15 += j15; + + store_littleendian(out + 0,x0); + store_littleendian(out + 4,x1); + store_littleendian(out + 8,x2); + store_littleendian(out + 12,x3); + store_littleendian(out + 16,x4); + store_littleendian(out + 20,x5); + store_littleendian(out + 24,x6); + store_littleendian(out + 28,x7); + store_littleendian(out + 32,x8); + store_littleendian(out + 36,x9); + store_littleendian(out + 40,x10); + store_littleendian(out + 44,x11); + store_littleendian(out + 48,x12); + store_littleendian(out + 52,x13); + store_littleendian(out + 56,x14); + store_littleendian(out + 60,x15); + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_generichash/blake2/generichash_blake2_api.c b/src/libsodium/src/libsodium/crypto_generichash/blake2/generichash_blake2_api.c new file mode 100644 index 00000000..c62693f6 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_generichash/blake2/generichash_blake2_api.c @@ -0,0 +1,31 @@ +#include "crypto_generichash_blake2b.h" + +size_t +crypto_generichash_blake2b_bytes_min(void) { + return crypto_generichash_blake2b_BYTES_MIN; +} + +size_t +crypto_generichash_blake2b_bytes_max(void) { + return crypto_generichash_blake2b_BYTES_MAX; +} + +size_t +crypto_generichash_blake2b_keybytes_min(void) { + return crypto_generichash_blake2b_KEYBYTES_MIN; +} + +size_t +crypto_generichash_blake2b_keybytes_max(void) { + return crypto_generichash_blake2b_KEYBYTES_MAX; +} + +size_t +crypto_generichash_blake2b_blockbytes(void) { + return crypto_generichash_blake2b_BLOCKBYTES; +} + +const char * +crypto_generichash_blake2b_blockbytes_primitive(void) { + return "blake2b"; +} diff --git a/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/api.h b/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/api.h new file mode 100644 index 00000000..6dab81cb --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/api.h @@ -0,0 +1,4 @@ + +#include "crypto_generichash_blake2b.h" + +#define crypto_generichash_blake2b crypto_generichash_blake2b_ref diff --git a/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2-impl.h b/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2-impl.h new file mode 100644 index 00000000..276d3054 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2-impl.h @@ -0,0 +1,132 @@ +/* + BLAKE2 reference source code package - reference C implementations + + Written in 2012 by Samuel Neves <sneves@dei.uc.pt> + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. +*/ + +#ifndef __BLAKE2_IMPL_H__ +#define __BLAKE2_IMPL_H__ + +#include <stdint.h> + +#include "utils.h" + +static inline uint32_t load32( const void *src ) +{ +#if defined(NATIVE_LITTLE_ENDIAN) + return *( uint32_t * )( src ); +#else + const uint8_t *p = ( const uint8_t * )src; + uint32_t w = *p++; + w |= ( uint32_t )( *p++ ) << 8; + w |= ( uint32_t )( *p++ ) << 16; + w |= ( uint32_t )( *p++ ) << 24; + return w; +#endif +} + +static inline uint64_t load64( const void *src ) +{ +#if defined(NATIVE_LITTLE_ENDIAN) + return *( uint64_t * )( src ); +#else + const uint8_t *p = ( const uint8_t * )src; + uint64_t w = *p++; + w |= ( uint64_t )( *p++ ) << 8; + w |= ( uint64_t )( *p++ ) << 16; + w |= ( uint64_t )( *p++ ) << 24; + w |= ( uint64_t )( *p++ ) << 32; + w |= ( uint64_t )( *p++ ) << 40; + w |= ( uint64_t )( *p++ ) << 48; + w |= ( uint64_t )( *p++ ) << 56; + return w; +#endif +} + +static inline void store32( void *dst, uint32_t w ) +{ +#if defined(NATIVE_LITTLE_ENDIAN) + *( uint32_t * )( dst ) = w; +#else + uint8_t *p = ( uint8_t * )dst; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; +#endif +} + +static inline void store64( void *dst, uint64_t w ) +{ +#if defined(NATIVE_LITTLE_ENDIAN) + *( uint64_t * )( dst ) = w; +#else + uint8_t *p = ( uint8_t * )dst; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; +#endif +} + +static inline uint64_t load48( const void *src ) +{ + const uint8_t *p = ( const uint8_t * )src; + uint64_t w = *p++; + w |= ( uint64_t )( *p++ ) << 8; + w |= ( uint64_t )( *p++ ) << 16; + w |= ( uint64_t )( *p++ ) << 24; + w |= ( uint64_t )( *p++ ) << 32; + w |= ( uint64_t )( *p++ ) << 40; + return w; +} + +static inline void store48( void *dst, uint64_t w ) +{ + uint8_t *p = ( uint8_t * )dst; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; +} + +static inline uint32_t rotl32( const uint32_t w, const unsigned c ) +{ + return ( w << c ) | ( w >> ( 32 - c ) ); +} + +static inline uint64_t rotl64( const uint64_t w, const unsigned c ) +{ + return ( w << c ) | ( w >> ( 64 - c ) ); +} + +static inline uint32_t rotr32( const uint32_t w, const unsigned c ) +{ + return ( w >> c ) | ( w << ( 32 - c ) ); +} + +static inline uint64_t rotr64( const uint64_t w, const unsigned c ) +{ + return ( w >> c ) | ( w << ( 64 - c ) ); +} + +/* prevents compiler optimizing out memset() */ +static inline void secure_zero_memory( void *v, size_t n ) +{ + sodium_memzero(v, n); +} + +#endif diff --git a/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2.h b/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2.h new file mode 100644 index 00000000..81f63c04 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2.h @@ -0,0 +1,169 @@ +/* + BLAKE2 reference source code package - reference C implementations + + Written in 2012 by Samuel Neves <sneves@dei.uc.pt> + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. +*/ + +#ifndef __BLAKE2_H__ +#define __BLAKE2_H__ + +#include <stddef.h> +#include <stdint.h> + +#include "crypto_generichash_blake2b.h" + +#define blake2b_init_param crypto_generichash_blake2b__init_param +#define blake2b_init crypto_generichash_blake2b__init +#define blake2b_init_key crypto_generichash_blake2b__init_key +#define blake2b_update crypto_generichash_blake2b__update +#define blake2b_final crypto_generichash_blake2b__final +#define blake2b crypto_generichash_blake2b__blake2b + +#if defined(_MSC_VER) +#define ALIGN(x) __declspec(align(x)) +#else +#define ALIGN(x) __attribute__((aligned(x))) +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + + enum blake2s_constant + { + BLAKE2S_BLOCKBYTES = 64, + BLAKE2S_OUTBYTES = 32, + BLAKE2S_KEYBYTES = 32, + BLAKE2S_SALTBYTES = 8, + BLAKE2S_PERSONALBYTES = 8 + }; + + enum blake2b_constant + { + BLAKE2B_BLOCKBYTES = 128, + BLAKE2B_OUTBYTES = 64, + BLAKE2B_KEYBYTES = 64, + BLAKE2B_SALTBYTES = 16, + BLAKE2B_PERSONALBYTES = 16 + }; + +#pragma pack(push, 1) + typedef struct __blake2s_param + { + uint8_t digest_length; // 1 + uint8_t key_length; // 2 + uint8_t fanout; // 3 + uint8_t depth; // 4 + uint32_t leaf_length; // 8 + uint8_t node_offset[6];// 14 + uint8_t node_depth; // 15 + uint8_t inner_length; // 16 + // uint8_t reserved[0]; + uint8_t salt[BLAKE2S_SALTBYTES]; // 24 + uint8_t personal[BLAKE2S_PERSONALBYTES]; // 32 + } blake2s_param; + + ALIGN( 64 ) typedef struct __blake2s_state + { + uint32_t h[8]; + uint32_t t[2]; + uint32_t f[2]; + uint8_t buf[2 * BLAKE2S_BLOCKBYTES]; + size_t buflen; + uint8_t last_node; + } blake2s_state ; + + typedef struct __blake2b_param + { + uint8_t digest_length; // 1 + uint8_t key_length; // 2 + uint8_t fanout; // 3 + uint8_t depth; // 4 + uint32_t leaf_length; // 8 + uint64_t node_offset; // 16 + uint8_t node_depth; // 17 + uint8_t inner_length; // 18 + uint8_t reserved[14]; // 32 + uint8_t salt[BLAKE2B_SALTBYTES]; // 48 + uint8_t personal[BLAKE2B_PERSONALBYTES]; // 64 + } blake2b_param; + +#ifndef DEFINE_BLAKE2B_STATE +typedef crypto_generichash_blake2b_state blake2b_state; +#else + ALIGN( 64 ) typedef struct __blake2b_state + { + uint64_t h[8]; + uint64_t t[2]; + uint64_t f[2]; + uint8_t buf[2 * BLAKE2B_BLOCKBYTES]; + size_t buflen; + uint8_t last_node; + } blake2b_state; +#endif + + typedef struct __blake2sp_state + { + blake2s_state S[8][1]; + blake2s_state R[1]; + uint8_t buf[8 * BLAKE2S_BLOCKBYTES]; + size_t buflen; + } blake2sp_state; + + typedef struct __blake2bp_state + { + blake2b_state S[4][1]; + blake2b_state R[1]; + uint8_t buf[4 * BLAKE2B_BLOCKBYTES]; + size_t buflen; + } blake2bp_state; +#pragma pack(pop) + + // Streaming API + int blake2s_init( blake2s_state *S, const uint8_t outlen ); + int blake2s_init_key( blake2s_state *S, const uint8_t outlen, const void *key, const uint8_t keylen ); + int blake2s_init_param( blake2s_state *S, const blake2s_param *P ); + int blake2s_update( blake2s_state *S, const uint8_t *in, uint64_t inlen ); + int blake2s_final( blake2s_state *S, uint8_t *out, uint8_t outlen ); + + int blake2b_init( blake2b_state *S, const uint8_t outlen ); + int blake2b_init_key( blake2b_state *S, const uint8_t outlen, const void *key, const uint8_t keylen ); + int blake2b_init_param( blake2b_state *S, const blake2b_param *P ); + int blake2b_update( blake2b_state *S, const uint8_t *in, uint64_t inlen ); + int blake2b_final( blake2b_state *S, uint8_t *out, uint8_t outlen ); + + int blake2sp_init( blake2sp_state *S, const uint8_t outlen ); + int blake2sp_init_key( blake2sp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen ); + int blake2sp_update( blake2sp_state *S, const uint8_t *in, uint64_t inlen ); + int blake2sp_final( blake2sp_state *S, uint8_t *out, uint8_t outlen ); + + int blake2bp_init( blake2bp_state *S, const uint8_t outlen ); + int blake2bp_init_key( blake2bp_state *S, const uint8_t outlen, const void *key, const uint8_t keylen ); + int blake2bp_update( blake2bp_state *S, const uint8_t *in, uint64_t inlen ); + int blake2bp_final( blake2bp_state *S, uint8_t *out, uint8_t outlen ); + + // Simple API + int blake2s( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen ); + int blake2b( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen ); + + int blake2sp( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen ); + int blake2bp( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen ); + + static inline int blake2( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen ) + { + return blake2b( out, in, key, outlen, inlen, keylen ); + } + +#if defined(__cplusplus) +} +#endif + +#endif + diff --git a/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2b-ref.c b/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2b-ref.c new file mode 100644 index 00000000..dcb02398 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2b-ref.c @@ -0,0 +1,359 @@ +/* + BLAKE2 reference source code package - reference C implementations + + Written in 2012 by Samuel Neves <sneves@dei.uc.pt> + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. +*/ + +#include <stdint.h> +#include <string.h> +#include <stdio.h> + +#include "blake2.h" +#include "blake2-impl.h" + +static const uint64_t blake2b_IV[8] = +{ + 0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, + 0x3c6ef372fe94f82bULL, 0xa54ff53a5f1d36f1ULL, + 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL +}; + +static const uint8_t blake2b_sigma[12][16] = +{ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } , + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } , + { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 } , + { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 } , + { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 } , + { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 } , + { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 } , + { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 } , + { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 } , + { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0 } , + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } , + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } +}; + + +static inline int blake2b_set_lastnode( blake2b_state *S ) +{ + S->f[1] = ~0ULL; + return 0; +} + +static inline int blake2b_clear_lastnode( blake2b_state *S ) +{ + S->f[1] = 0ULL; + return 0; +} + +/* Some helper functions, not necessarily useful */ +static inline int blake2b_set_lastblock( blake2b_state *S ) +{ + if( S->last_node ) blake2b_set_lastnode( S ); + + S->f[0] = ~0ULL; + return 0; +} + +static inline int blake2b_clear_lastblock( blake2b_state *S ) +{ + if( S->last_node ) blake2b_clear_lastnode( S ); + + S->f[0] = 0ULL; + return 0; +} + +static inline int blake2b_increment_counter( blake2b_state *S, const uint64_t inc ) +{ + S->t[0] += inc; + S->t[1] += ( S->t[0] < inc ); + return 0; +} + + + +// Parameter-related functions +static inline int blake2b_param_set_digest_length( blake2b_param *P, const uint8_t digest_length ) +{ + P->digest_length = digest_length; + return 0; +} + +static inline int blake2b_param_set_fanout( blake2b_param *P, const uint8_t fanout ) +{ + P->fanout = fanout; + return 0; +} + +static inline int blake2b_param_set_max_depth( blake2b_param *P, const uint8_t depth ) +{ + P->depth = depth; + return 0; +} + +static inline int blake2b_param_set_leaf_length( blake2b_param *P, const uint32_t leaf_length ) +{ + store32( &P->leaf_length, leaf_length ); + return 0; +} + +static inline int blake2b_param_set_node_offset( blake2b_param *P, const uint64_t node_offset ) +{ + store64( &P->node_offset, node_offset ); + return 0; +} + +static inline int blake2b_param_set_node_depth( blake2b_param *P, const uint8_t node_depth ) +{ + P->node_depth = node_depth; + return 0; +} + +static inline int blake2b_param_set_inner_length( blake2b_param *P, const uint8_t inner_length ) +{ + P->inner_length = inner_length; + return 0; +} + +static inline int blake2b_param_set_salt( blake2b_param *P, const uint8_t salt[BLAKE2B_SALTBYTES] ) +{ + memcpy( P->salt, salt, BLAKE2B_SALTBYTES ); + return 0; +} + +static inline int blake2b_param_set_personal( blake2b_param *P, const uint8_t personal[BLAKE2B_PERSONALBYTES] ) +{ + memcpy( P->personal, personal, BLAKE2B_PERSONALBYTES ); + return 0; +} + +static inline int blake2b_init0( blake2b_state *S ) +{ + memset( S, 0, sizeof( blake2b_state ) ); + + for( int i = 0; i < 8; ++i ) S->h[i] = blake2b_IV[i]; + + return 0; +} + +/* init xors IV with input parameter block */ +int blake2b_init_param( blake2b_state *S, const blake2b_param *P ) +{ + blake2b_init0( S ); + const uint8_t *p = ( const uint8_t * )( P ); + + /* IV XOR ParamBlock */ + for( size_t i = 0; i < 8; ++i ) + S->h[i] ^= load64( p + sizeof( S->h[i] ) * i ); + + return 0; +} + + + +int blake2b_init( blake2b_state *S, const uint8_t outlen ) +{ + blake2b_param P[1]; + + if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1; + + P->digest_length = outlen; + P->key_length = 0; + P->fanout = 1; + P->depth = 1; + store32( &P->leaf_length, 0 ); + store64( &P->node_offset, 0 ); + P->node_depth = 0; + P->inner_length = 0; + memset( P->reserved, 0, sizeof( P->reserved ) ); + memset( P->salt, 0, sizeof( P->salt ) ); + memset( P->personal, 0, sizeof( P->personal ) ); + return blake2b_init_param( S, P ); +} + + +int blake2b_init_key( blake2b_state *S, const uint8_t outlen, const void *key, const uint8_t keylen ) +{ + blake2b_param P[1]; + + if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1; + + if ( !key || !keylen || keylen > BLAKE2B_KEYBYTES ) return -1; + + P->digest_length = outlen; + P->key_length = keylen; + P->fanout = 1; + P->depth = 1; + store32( &P->leaf_length, 0 ); + store64( &P->node_offset, 0 ); + P->node_depth = 0; + P->inner_length = 0; + memset( P->reserved, 0, sizeof( P->reserved ) ); + memset( P->salt, 0, sizeof( P->salt ) ); + memset( P->personal, 0, sizeof( P->personal ) ); + + if( blake2b_init_param( S, P ) < 0 ) return -1; + + { + uint8_t block[BLAKE2B_BLOCKBYTES]; + memset( block, 0, BLAKE2B_BLOCKBYTES ); + memcpy( block, key, keylen ); + blake2b_update( S, block, BLAKE2B_BLOCKBYTES ); + secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */ + } + return 0; +} + +static int blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] ) +{ + uint64_t m[16]; + uint64_t v[16]; + int i; + + for( i = 0; i < 16; ++i ) + m[i] = load64( block + i * sizeof( m[i] ) ); + + for( i = 0; i < 8; ++i ) + v[i] = S->h[i]; + + v[ 8] = blake2b_IV[0]; + v[ 9] = blake2b_IV[1]; + v[10] = blake2b_IV[2]; + v[11] = blake2b_IV[3]; + v[12] = S->t[0] ^ blake2b_IV[4]; + v[13] = S->t[1] ^ blake2b_IV[5]; + v[14] = S->f[0] ^ blake2b_IV[6]; + v[15] = S->f[1] ^ blake2b_IV[7]; +#define G(r,i,a,b,c,d) \ + do { \ + a = a + b + m[blake2b_sigma[r][2*i+0]]; \ + d = rotr64(d ^ a, 32); \ + c = c + d; \ + b = rotr64(b ^ c, 24); \ + a = a + b + m[blake2b_sigma[r][2*i+1]]; \ + d = rotr64(d ^ a, 16); \ + c = c + d; \ + b = rotr64(b ^ c, 63); \ + } while(0) +#define ROUND(r) \ + do { \ + G(r,0,v[ 0],v[ 4],v[ 8],v[12]); \ + G(r,1,v[ 1],v[ 5],v[ 9],v[13]); \ + G(r,2,v[ 2],v[ 6],v[10],v[14]); \ + G(r,3,v[ 3],v[ 7],v[11],v[15]); \ + G(r,4,v[ 0],v[ 5],v[10],v[15]); \ + G(r,5,v[ 1],v[ 6],v[11],v[12]); \ + G(r,6,v[ 2],v[ 7],v[ 8],v[13]); \ + G(r,7,v[ 3],v[ 4],v[ 9],v[14]); \ + } while(0) + ROUND( 0 ); + ROUND( 1 ); + ROUND( 2 ); + ROUND( 3 ); + ROUND( 4 ); + ROUND( 5 ); + ROUND( 6 ); + ROUND( 7 ); + ROUND( 8 ); + ROUND( 9 ); + ROUND( 10 ); + ROUND( 11 ); + + for( i = 0; i < 8; ++i ) + S->h[i] = S->h[i] ^ v[i] ^ v[i + 8]; + +#undef G +#undef ROUND + return 0; +} + +/* inlen now in bytes */ +int blake2b_update( blake2b_state *S, const uint8_t *in, uint64_t inlen ) +{ + while( inlen > 0 ) + { + size_t left = S->buflen; + size_t fill = 2 * BLAKE2B_BLOCKBYTES - left; + + if( inlen > fill ) + { + memcpy( S->buf + left, in, fill ); // Fill buffer + S->buflen += fill; + blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES ); + blake2b_compress( S, S->buf ); // Compress + memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); // Shift buffer left + S->buflen -= BLAKE2B_BLOCKBYTES; + in += fill; + inlen -= fill; + } + else // inlen <= fill + { + memcpy( S->buf + left, in, inlen ); + S->buflen += inlen; // Be lazy, do not compress + in += inlen; + inlen -= inlen; + } + } + + return 0; +} + +/* Is this correct? */ +int blake2b_final( blake2b_state *S, uint8_t *out, uint8_t outlen ) +{ + uint8_t buffer[BLAKE2B_OUTBYTES]; + + if( S->buflen > BLAKE2B_BLOCKBYTES ) + { + blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES ); + blake2b_compress( S, S->buf ); + S->buflen -= BLAKE2B_BLOCKBYTES; + memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, S->buflen ); + } + + blake2b_increment_counter( S, S->buflen ); + blake2b_set_lastblock( S ); + memset( S->buf + S->buflen, 0, 2 * BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */ + blake2b_compress( S, S->buf ); + + for( int i = 0; i < 8; ++i ) /* Output full hash to temp buffer */ + store64( buffer + sizeof( S->h[i] ) * i, S->h[i] ); + + memcpy( out, buffer, outlen ); + return 0; +} + +/* inlen, at least, should be uint64_t. Others can be size_t. */ +int blake2b( uint8_t *out, const void *in, const void *key, const uint8_t outlen, const uint64_t inlen, uint8_t keylen ) +{ + blake2b_state S[1]; + + /* Verify parameters */ + if ( NULL == in ) return -1; + + if ( NULL == out ) return -1; + + if( NULL == key ) keylen = 0; + + if( keylen > 0 ) + { + if( blake2b_init_key( S, outlen, key, keylen ) < 0 ) return -1; + } + else + { + if( blake2b_init( S, outlen ) < 0 ) return -1; + } + + blake2b_update( S, ( const uint8_t * )in, inlen ); + blake2b_final( S, out, outlen ); + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/generichash_blake2b.c b/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/generichash_blake2b.c new file mode 100644 index 00000000..8329ba38 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_generichash/blake2/ref/generichash_blake2b.c @@ -0,0 +1,61 @@ + +#include <assert.h> +#include <limits.h> +#include <stdint.h> + +#include "api.h" +#include "blake2.h" + +int +crypto_generichash_blake2b(unsigned char *out, size_t outlen, + const unsigned char *in, unsigned long long inlen, + const unsigned char *key, size_t keylen) +{ + if (outlen <= 0U || outlen > BLAKE2B_OUTBYTES || + keylen > BLAKE2B_KEYBYTES || inlen > UINT64_MAX) { + return -1; + } + assert(outlen <= UINT8_MAX); + assert(keylen <= UINT8_MAX); + + return blake2b((uint8_t *) out, in, key, + (uint8_t) outlen, (uint64_t) inlen, (uint8_t) keylen); +} + +int +crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) +{ + if (outlen <= 0U || outlen > BLAKE2B_OUTBYTES || + keylen > BLAKE2B_KEYBYTES) { + return -1; + } + assert(outlen <= UINT8_MAX); + assert(keylen <= UINT8_MAX); + if (blake2b_init(state, (uint8_t) outlen) != 0) { + return -1; + } + if (key != NULL && keylen > 0U && + blake2b_init_key(state, (uint8_t) outlen, key, keylen) != 0) { + return -1; + } + return 0; +} + +int +crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, + const unsigned char *in, + unsigned long long inlen) +{ + return blake2b_update(state, (const uint8_t *) in, (uint64_t) inlen); +} + +int +crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, + unsigned char *out, + const size_t outlen) +{ + assert(outlen <= UINT8_MAX); + return blake2b_final(state, (uint8_t *) out, (uint8_t) outlen); +} diff --git a/src/libsodium/src/libsodium/crypto_generichash/crypto_generichash.c b/src/libsodium/src/libsodium/crypto_generichash/crypto_generichash.c new file mode 100644 index 00000000..e418a94a --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_generichash/crypto_generichash.c @@ -0,0 +1,84 @@ + +#include "crypto_generichash.h" + +size_t +crypto_generichash_bytes(void) +{ + return crypto_generichash_BYTES; +} + +size_t +crypto_generichash_bytes_min(void) +{ + return crypto_generichash_BYTES_MIN; +} + +size_t +crypto_generichash_bytes_max(void) +{ + return crypto_generichash_BYTES_MAX; +} + +size_t +crypto_generichash_keybytes(void) +{ + return crypto_generichash_KEYBYTES; +} + +size_t +crypto_generichash_keybytes_min(void) +{ + return crypto_generichash_KEYBYTES_MIN; +} + +size_t +crypto_generichash_keybytes_max(void) +{ + return crypto_generichash_KEYBYTES_MAX; +} + +size_t +crypto_generichash_blockbytes(void) +{ + return crypto_generichash_BLOCKBYTES; +} + +const char *crypto_generichash_primitive(void) +{ + return crypto_generichash_PRIMITIVE; +} + +int +crypto_generichash(unsigned char *out, size_t outlen, const unsigned char *in, + unsigned long long inlen, const unsigned char *key, + size_t keylen) +{ + return crypto_generichash_blake2b(out, outlen, in, inlen, key, keylen); +} + +int +crypto_generichash_init(crypto_generichash_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) +{ + return crypto_generichash_blake2b_init + ((crypto_generichash_blake2b_state *) state, + key, keylen, outlen); +} + +int +crypto_generichash_update(crypto_generichash_state *state, + const unsigned char *in, + unsigned long long inlen) +{ + return crypto_generichash_blake2b_update + ((crypto_generichash_blake2b_state *) state, in, inlen); +} + +int +crypto_generichash_final(crypto_generichash_state *state, + unsigned char *out, const size_t outlen) +{ + return crypto_generichash_blake2b_final + ((crypto_generichash_blake2b_state *) state, out, outlen); +} diff --git a/src/libsodium/src/libsodium/crypto_hash/crypto_hash.c b/src/libsodium/src/libsodium/crypto_hash/crypto_hash.c new file mode 100644 index 00000000..2718b494 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hash/crypto_hash.c @@ -0,0 +1,9 @@ + +#include "crypto_hash.h" + +int +crypto_hash(unsigned char *out, const unsigned char *in, + unsigned long long inlen) +{ + return crypto_hash_sha512(out, in, inlen); +} diff --git a/src/libsodium/src/libsodium/crypto_hash/sha256/hash_sha256_api.c b/src/libsodium/src/libsodium/crypto_hash/sha256/hash_sha256_api.c new file mode 100644 index 00000000..084eaf31 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hash/sha256/hash_sha256_api.c @@ -0,0 +1,11 @@ +#include "crypto_hash_sha256.h" + +size_t +crypto_hash_sha256_bytes(void) { + return crypto_hash_sha256_BYTES; +} + +const char * +crypto_hash_sha256_primitive(void) { + return "sha256"; +} diff --git a/src/libsodium/src/libsodium/crypto_hash/sha256/ref/api.h b/src/libsodium/src/libsodium/crypto_hash/sha256/ref/api.h new file mode 100644 index 00000000..9878f8e8 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hash/sha256/ref/api.h @@ -0,0 +1,8 @@ + +#include "crypto_hash_sha256.h" + +#define crypto_hash crypto_hash_sha256 +#define crypto_hash_BYTES crypto_hash_sha256_BYTES +#define crypto_hash_PRIMITIVE "sha256" +#define crypto_hash_IMPLEMENTATION crypto_hash_sha256_IMPLEMENTATION +#define crypto_hash_VERSION crypto_hash_sha256_VERSION diff --git a/src/libsodium/src/libsodium/crypto_hash/sha256/ref/hash_sha256.c b/src/libsodium/src/libsodium/crypto_hash/sha256/ref/hash_sha256.c new file mode 100644 index 00000000..774271d6 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hash/sha256/ref/hash_sha256.c @@ -0,0 +1,69 @@ +/* +20080913 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" +#include "crypto_hashblocks_sha256.h" + +#define blocks crypto_hashblocks_sha256 + +typedef unsigned int uint32; + +static const char iv[32] = { + 0x6a,0x09,0xe6,0x67, + 0xbb,0x67,0xae,0x85, + 0x3c,0x6e,0xf3,0x72, + 0xa5,0x4f,0xf5,0x3a, + 0x51,0x0e,0x52,0x7f, + 0x9b,0x05,0x68,0x8c, + 0x1f,0x83,0xd9,0xab, + 0x5b,0xe0,0xcd,0x19, +} ; + +int crypto_hash(unsigned char *out,const unsigned char *in,unsigned long long inlen) +{ + unsigned char h[32]; + unsigned char padded[128]; + unsigned long long i; + unsigned long long bits = inlen << 3; + + for (i = 0;i < 32;++i) h[i] = iv[i]; + + blocks(h,in,inlen); + in += inlen; + inlen &= 63; + in -= inlen; + + for (i = 0;i < inlen;++i) padded[i] = in[i]; + padded[inlen] = 0x80; + + if (inlen < 56) { + for (i = inlen + 1;i < 56;++i) padded[i] = 0; + padded[56] = bits >> 56; + padded[57] = bits >> 48; + padded[58] = bits >> 40; + padded[59] = bits >> 32; + padded[60] = bits >> 24; + padded[61] = bits >> 16; + padded[62] = bits >> 8; + padded[63] = bits; + blocks(h,padded,64); + } else { + for (i = inlen + 1;i < 120;++i) padded[i] = 0; + padded[120] = bits >> 56; + padded[121] = bits >> 48; + padded[122] = bits >> 40; + padded[123] = bits >> 32; + padded[124] = bits >> 24; + padded[125] = bits >> 16; + padded[126] = bits >> 8; + padded[127] = bits; + blocks(h,padded,128); + } + + for (i = 0;i < 32;++i) out[i] = h[i]; + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_hash/sha512/hash_sha512_api.c b/src/libsodium/src/libsodium/crypto_hash/sha512/hash_sha512_api.c new file mode 100644 index 00000000..6a16a032 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hash/sha512/hash_sha512_api.c @@ -0,0 +1,11 @@ +#include "crypto_hash_sha512.h" + +size_t +crypto_hash_sha512_bytes(void) { + return crypto_hash_sha512_BYTES; +} + +const char * +crypto_hash_sha512_primitive(void) { + return "sha512"; +} diff --git a/src/libsodium/src/libsodium/crypto_hash/sha512/ref/api.h b/src/libsodium/src/libsodium/crypto_hash/sha512/ref/api.h new file mode 100644 index 00000000..afea983f --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hash/sha512/ref/api.h @@ -0,0 +1,8 @@ + +#include "crypto_hash_sha512.h" + +#define crypto_hash crypto_hash_sha512 +#define crypto_hash_BYTES crypto_hash_sha512_BYTES +#define crypto_hash_PRIMITIVE "sha512" +#define crypto_hash_IMPLEMENTATION crypto_hash_sha512_IMPLEMENTATION +#define crypto_hash_VERSION crypto_hash_sha512_VERSION diff --git a/src/libsodium/src/libsodium/crypto_hash/sha512/ref/hash_sha512.c b/src/libsodium/src/libsodium/crypto_hash/sha512/ref/hash_sha512.c new file mode 100644 index 00000000..7cc8b85d --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hash/sha512/ref/hash_sha512.c @@ -0,0 +1,71 @@ +/* +20080913 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" +#include "crypto_hashblocks_sha512.h" + +#define blocks crypto_hashblocks_sha512 + +static const unsigned char iv[64] = { + 0x6a,0x09,0xe6,0x67,0xf3,0xbc,0xc9,0x08, + 0xbb,0x67,0xae,0x85,0x84,0xca,0xa7,0x3b, + 0x3c,0x6e,0xf3,0x72,0xfe,0x94,0xf8,0x2b, + 0xa5,0x4f,0xf5,0x3a,0x5f,0x1d,0x36,0xf1, + 0x51,0x0e,0x52,0x7f,0xad,0xe6,0x82,0xd1, + 0x9b,0x05,0x68,0x8c,0x2b,0x3e,0x6c,0x1f, + 0x1f,0x83,0xd9,0xab,0xfb,0x41,0xbd,0x6b, + 0x5b,0xe0,0xcd,0x19,0x13,0x7e,0x21,0x79 +} ; + +typedef unsigned long long uint64; + +int crypto_hash(unsigned char *out,const unsigned char *in,unsigned long long inlen) +{ + unsigned char h[64]; + unsigned char padded[256]; + unsigned long long i; + unsigned long long bytes = inlen; + + for (i = 0;i < 64;++i) h[i] = iv[i]; + + blocks(h,in,inlen); + in += inlen; + inlen &= 127; + in -= inlen; + + for (i = 0;i < inlen;++i) padded[i] = in[i]; + padded[inlen] = 0x80; + + if (inlen < 112) { + for (i = inlen + 1;i < 119;++i) padded[i] = 0; + padded[119] = bytes >> 61; + padded[120] = bytes >> 53; + padded[121] = bytes >> 45; + padded[122] = bytes >> 37; + padded[123] = bytes >> 29; + padded[124] = bytes >> 21; + padded[125] = bytes >> 13; + padded[126] = bytes >> 5; + padded[127] = bytes << 3; + blocks(h,padded,128); + } else { + for (i = inlen + 1;i < 247;++i) padded[i] = 0; + padded[247] = bytes >> 61; + padded[248] = bytes >> 53; + padded[249] = bytes >> 45; + padded[250] = bytes >> 37; + padded[251] = bytes >> 29; + padded[252] = bytes >> 21; + padded[253] = bytes >> 13; + padded[254] = bytes >> 5; + padded[255] = bytes << 3; + blocks(h,padded,256); + } + + for (i = 0;i < 64;++i) out[i] = h[i]; + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_hashblocks/sha256/hashblocks_sha256_api.c b/src/libsodium/src/libsodium/crypto_hashblocks/sha256/hashblocks_sha256_api.c new file mode 100644 index 00000000..2b609907 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hashblocks/sha256/hashblocks_sha256_api.c @@ -0,0 +1,16 @@ +#include "crypto_hashblocks_sha256.h" + +size_t +crypto_hashblocks_sha256_statebytes(void) { + return crypto_hashblocks_sha256_STATEBYTES; +} + +size_t +crypto_hashblocks_sha256_blockbytes(void) { + return crypto_hashblocks_sha256_BLOCKBYTES; +} + +const char * +crypto_hashblocks_sha256_primitive(void) { + return "sha256"; +} diff --git a/src/libsodium/src/libsodium/crypto_hashblocks/sha256/ref/api.h b/src/libsodium/src/libsodium/crypto_hashblocks/sha256/ref/api.h new file mode 100644 index 00000000..4e1701ff --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hashblocks/sha256/ref/api.h @@ -0,0 +1,9 @@ + +#include "crypto_hashblocks_sha256.h" + +#define crypto_hashblocks crypto_hashblocks_sha256 +#define crypto_hashblocks_STATEBYTES crypto_hashblocks_sha256_STATEBYTES +#define crypto_hashblocks_BLOCKBYTES crypto_hashblocks_sha256_BLOCKBYTES +#define crypto_hashblocks_PRIMITIVE "sha256" +#define crypto_hashblocks_IMPLEMENTATION crypto_hashblocks_sha256_IMPLEMENTATION +#define crypto_hashblocks_VERSION crypto_hashblocks_sha256_VERSION diff --git a/src/libsodium/src/libsodium/crypto_hashblocks/sha256/ref/blocks_sha256.c b/src/libsodium/src/libsodium/crypto_hashblocks/sha256/ref/blocks_sha256.c new file mode 100644 index 00000000..8d89a886 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hashblocks/sha256/ref/blocks_sha256.c @@ -0,0 +1,212 @@ +#include "api.h" + +typedef unsigned int uint32; + +static uint32 load_bigendian(const unsigned char *x) +{ + return + (uint32) (x[3]) \ + | (((uint32) (x[2])) << 8) \ + | (((uint32) (x[1])) << 16) \ + | (((uint32) (x[0])) << 24) + ; +} + +static void store_bigendian(unsigned char *x,uint32 u) +{ + x[3] = u; u >>= 8; + x[2] = u; u >>= 8; + x[1] = u; u >>= 8; + x[0] = u; +} + +#define SHR(x,c) ((x) >> (c)) +#define ROTR(x,c) (((x) >> (c)) | ((x) << (32 - (c)))) + +#define Ch(x,y,z) ((x & y) ^ (~x & z)) +#define Maj(x,y,z) ((x & y) ^ (x & z) ^ (y & z)) +#define Sigma0(x) (ROTR(x, 2) ^ ROTR(x,13) ^ ROTR(x,22)) +#define Sigma1(x) (ROTR(x, 6) ^ ROTR(x,11) ^ ROTR(x,25)) +#define sigma0(x) (ROTR(x, 7) ^ ROTR(x,18) ^ SHR(x, 3)) +#define sigma1(x) (ROTR(x,17) ^ ROTR(x,19) ^ SHR(x,10)) + +#define M(w0,w14,w9,w1) w0 = sigma1(w14) + w9 + sigma0(w1) + w0; + +#define EXPAND \ + M(w0 ,w14,w9 ,w1 ) \ + M(w1 ,w15,w10,w2 ) \ + M(w2 ,w0 ,w11,w3 ) \ + M(w3 ,w1 ,w12,w4 ) \ + M(w4 ,w2 ,w13,w5 ) \ + M(w5 ,w3 ,w14,w6 ) \ + M(w6 ,w4 ,w15,w7 ) \ + M(w7 ,w5 ,w0 ,w8 ) \ + M(w8 ,w6 ,w1 ,w9 ) \ + M(w9 ,w7 ,w2 ,w10) \ + M(w10,w8 ,w3 ,w11) \ + M(w11,w9 ,w4 ,w12) \ + M(w12,w10,w5 ,w13) \ + M(w13,w11,w6 ,w14) \ + M(w14,w12,w7 ,w15) \ + M(w15,w13,w8 ,w0 ) + +#define F(w,k) \ + T1 = h + Sigma1(e) + Ch(e,f,g) + k + w; \ + T2 = Sigma0(a) + Maj(a,b,c); \ + h = g; \ + g = f; \ + f = e; \ + e = d + T1; \ + d = c; \ + c = b; \ + b = a; \ + a = T1 + T2; + +int crypto_hashblocks(unsigned char *statebytes,const unsigned char *in,unsigned long long inlen) +{ + uint32 state[8]; + uint32 a; + uint32 b; + uint32 c; + uint32 d; + uint32 e; + uint32 f; + uint32 g; + uint32 h; + uint32 T1; + uint32 T2; + + a = load_bigendian(statebytes + 0); state[0] = a; + b = load_bigendian(statebytes + 4); state[1] = b; + c = load_bigendian(statebytes + 8); state[2] = c; + d = load_bigendian(statebytes + 12); state[3] = d; + e = load_bigendian(statebytes + 16); state[4] = e; + f = load_bigendian(statebytes + 20); state[5] = f; + g = load_bigendian(statebytes + 24); state[6] = g; + h = load_bigendian(statebytes + 28); state[7] = h; + + while (inlen >= 64) { + uint32 w0 = load_bigendian(in + 0); + uint32 w1 = load_bigendian(in + 4); + uint32 w2 = load_bigendian(in + 8); + uint32 w3 = load_bigendian(in + 12); + uint32 w4 = load_bigendian(in + 16); + uint32 w5 = load_bigendian(in + 20); + uint32 w6 = load_bigendian(in + 24); + uint32 w7 = load_bigendian(in + 28); + uint32 w8 = load_bigendian(in + 32); + uint32 w9 = load_bigendian(in + 36); + uint32 w10 = load_bigendian(in + 40); + uint32 w11 = load_bigendian(in + 44); + uint32 w12 = load_bigendian(in + 48); + uint32 w13 = load_bigendian(in + 52); + uint32 w14 = load_bigendian(in + 56); + uint32 w15 = load_bigendian(in + 60); + + F(w0 ,0x428a2f98) + F(w1 ,0x71374491) + F(w2 ,0xb5c0fbcf) + F(w3 ,0xe9b5dba5) + F(w4 ,0x3956c25b) + F(w5 ,0x59f111f1) + F(w6 ,0x923f82a4) + F(w7 ,0xab1c5ed5) + F(w8 ,0xd807aa98) + F(w9 ,0x12835b01) + F(w10,0x243185be) + F(w11,0x550c7dc3) + F(w12,0x72be5d74) + F(w13,0x80deb1fe) + F(w14,0x9bdc06a7) + F(w15,0xc19bf174) + + EXPAND + + F(w0 ,0xe49b69c1) + F(w1 ,0xefbe4786) + F(w2 ,0x0fc19dc6) + F(w3 ,0x240ca1cc) + F(w4 ,0x2de92c6f) + F(w5 ,0x4a7484aa) + F(w6 ,0x5cb0a9dc) + F(w7 ,0x76f988da) + F(w8 ,0x983e5152) + F(w9 ,0xa831c66d) + F(w10,0xb00327c8) + F(w11,0xbf597fc7) + F(w12,0xc6e00bf3) + F(w13,0xd5a79147) + F(w14,0x06ca6351) + F(w15,0x14292967) + + EXPAND + + F(w0 ,0x27b70a85) + F(w1 ,0x2e1b2138) + F(w2 ,0x4d2c6dfc) + F(w3 ,0x53380d13) + F(w4 ,0x650a7354) + F(w5 ,0x766a0abb) + F(w6 ,0x81c2c92e) + F(w7 ,0x92722c85) + F(w8 ,0xa2bfe8a1) + F(w9 ,0xa81a664b) + F(w10,0xc24b8b70) + F(w11,0xc76c51a3) + F(w12,0xd192e819) + F(w13,0xd6990624) + F(w14,0xf40e3585) + F(w15,0x106aa070) + + EXPAND + + F(w0 ,0x19a4c116) + F(w1 ,0x1e376c08) + F(w2 ,0x2748774c) + F(w3 ,0x34b0bcb5) + F(w4 ,0x391c0cb3) + F(w5 ,0x4ed8aa4a) + F(w6 ,0x5b9cca4f) + F(w7 ,0x682e6ff3) + F(w8 ,0x748f82ee) + F(w9 ,0x78a5636f) + F(w10,0x84c87814) + F(w11,0x8cc70208) + F(w12,0x90befffa) + F(w13,0xa4506ceb) + F(w14,0xbef9a3f7) + F(w15,0xc67178f2) + + a += state[0]; + b += state[1]; + c += state[2]; + d += state[3]; + e += state[4]; + f += state[5]; + g += state[6]; + h += state[7]; + + state[0] = a; + state[1] = b; + state[2] = c; + state[3] = d; + state[4] = e; + state[5] = f; + state[6] = g; + state[7] = h; + + in += 64; + inlen -= 64; + } + + store_bigendian(statebytes + 0,state[0]); + store_bigendian(statebytes + 4,state[1]); + store_bigendian(statebytes + 8,state[2]); + store_bigendian(statebytes + 12,state[3]); + store_bigendian(statebytes + 16,state[4]); + store_bigendian(statebytes + 20,state[5]); + store_bigendian(statebytes + 24,state[6]); + store_bigendian(statebytes + 28,state[7]); + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_hashblocks/sha512/hashblocks_sha512_api.c b/src/libsodium/src/libsodium/crypto_hashblocks/sha512/hashblocks_sha512_api.c new file mode 100644 index 00000000..63cf6ed5 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hashblocks/sha512/hashblocks_sha512_api.c @@ -0,0 +1,16 @@ +#include "crypto_hashblocks_sha512.h" + +size_t +crypto_hashblocks_sha512_statebytes(void) { + return crypto_hashblocks_sha512_STATEBYTES; +} + +size_t +crypto_hashblocks_sha512_blockbytes(void) { + return crypto_hashblocks_sha512_BLOCKBYTES; +} + +const char * +crypto_hashblocks_sha512_primitive(void) { + return "sha512"; +} diff --git a/src/libsodium/src/libsodium/crypto_hashblocks/sha512/ref/api.h b/src/libsodium/src/libsodium/crypto_hashblocks/sha512/ref/api.h new file mode 100644 index 00000000..1662652d --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hashblocks/sha512/ref/api.h @@ -0,0 +1,9 @@ + +#include "crypto_hashblocks_sha512.h" + +#define crypto_hashblocks crypto_hashblocks_sha512 +#define crypto_hashblocks_STATEBYTES crypto_hashblocks_sha512_STATEBYTES +#define crypto_hashblocks_BLOCKBYTES crypto_hashblocks_sha512_BLOCKBYTES +#define crypto_hashblocks_PRIMITIVE "sha512" +#define crypto_hashblocks_IMPLEMENTATION crypto_hashblocks_sha512_IMPLEMENTATION +#define crypto_hashblocks_VERSION crypto_hashblocks_sha512_VERSION diff --git a/src/libsodium/src/libsodium/crypto_hashblocks/sha512/ref/blocks_sha512.c b/src/libsodium/src/libsodium/crypto_hashblocks/sha512/ref/blocks_sha512.c new file mode 100644 index 00000000..6571ed64 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_hashblocks/sha512/ref/blocks_sha512.c @@ -0,0 +1,239 @@ +#include "api.h" + +typedef unsigned long long uint64; + +static uint64 load_bigendian(const unsigned char *x) +{ + return + (uint64) (x[7]) \ + | (((uint64) (x[6])) << 8) \ + | (((uint64) (x[5])) << 16) \ + | (((uint64) (x[4])) << 24) \ + | (((uint64) (x[3])) << 32) \ + | (((uint64) (x[2])) << 40) \ + | (((uint64) (x[1])) << 48) \ + | (((uint64) (x[0])) << 56) + ; +} + +static void store_bigendian(unsigned char *x,uint64 u) +{ + x[7] = u; u >>= 8; + x[6] = u; u >>= 8; + x[5] = u; u >>= 8; + x[4] = u; u >>= 8; + x[3] = u; u >>= 8; + x[2] = u; u >>= 8; + x[1] = u; u >>= 8; + x[0] = u; +} + +#define SHR(x,c) ((x) >> (c)) +#define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) + +#define Ch(x,y,z) ((x & y) ^ (~x & z)) +#define Maj(x,y,z) ((x & y) ^ (x & z) ^ (y & z)) +#define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) +#define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) +#define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) +#define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) + +#define M(w0,w14,w9,w1) w0 = sigma1(w14) + w9 + sigma0(w1) + w0; + +#define EXPAND \ + M(w0 ,w14,w9 ,w1 ) \ + M(w1 ,w15,w10,w2 ) \ + M(w2 ,w0 ,w11,w3 ) \ + M(w3 ,w1 ,w12,w4 ) \ + M(w4 ,w2 ,w13,w5 ) \ + M(w5 ,w3 ,w14,w6 ) \ + M(w6 ,w4 ,w15,w7 ) \ + M(w7 ,w5 ,w0 ,w8 ) \ + M(w8 ,w6 ,w1 ,w9 ) \ + M(w9 ,w7 ,w2 ,w10) \ + M(w10,w8 ,w3 ,w11) \ + M(w11,w9 ,w4 ,w12) \ + M(w12,w10,w5 ,w13) \ + M(w13,w11,w6 ,w14) \ + M(w14,w12,w7 ,w15) \ + M(w15,w13,w8 ,w0 ) + +#define F(w,k) \ + T1 = h + Sigma1(e) + Ch(e,f,g) + k + w; \ + T2 = Sigma0(a) + Maj(a,b,c); \ + h = g; \ + g = f; \ + f = e; \ + e = d + T1; \ + d = c; \ + c = b; \ + b = a; \ + a = T1 + T2; + +int crypto_hashblocks(unsigned char *statebytes,const unsigned char *in,unsigned long long inlen) +{ + uint64 state[8]; + uint64 a; + uint64 b; + uint64 c; + uint64 d; + uint64 e; + uint64 f; + uint64 g; + uint64 h; + uint64 T1; + uint64 T2; + + a = load_bigendian(statebytes + 0); state[0] = a; + b = load_bigendian(statebytes + 8); state[1] = b; + c = load_bigendian(statebytes + 16); state[2] = c; + d = load_bigendian(statebytes + 24); state[3] = d; + e = load_bigendian(statebytes + 32); state[4] = e; + f = load_bigendian(statebytes + 40); state[5] = f; + g = load_bigendian(statebytes + 48); state[6] = g; + h = load_bigendian(statebytes + 56); state[7] = h; + + while (inlen >= 128) { + uint64 w0 = load_bigendian(in + 0); + uint64 w1 = load_bigendian(in + 8); + uint64 w2 = load_bigendian(in + 16); + uint64 w3 = load_bigendian(in + 24); + uint64 w4 = load_bigendian(in + 32); + uint64 w5 = load_bigendian(in + 40); + uint64 w6 = load_bigendian(in + 48); + uint64 w7 = load_bigendian(in + 56); + uint64 w8 = load_bigendian(in + 64); + uint64 w9 = load_bigendian(in + 72); + uint64 w10 = load_bigendian(in + 80); + uint64 w11 = load_bigendian(in + 88); + uint64 w12 = load_bigendian(in + 96); + uint64 w13 = load_bigendian(in + 104); + uint64 w14 = load_bigendian(in + 112); + uint64 w15 = load_bigendian(in + 120); + + F(w0 ,0x428a2f98d728ae22ULL) + F(w1 ,0x7137449123ef65cdULL) + F(w2 ,0xb5c0fbcfec4d3b2fULL) + F(w3 ,0xe9b5dba58189dbbcULL) + F(w4 ,0x3956c25bf348b538ULL) + F(w5 ,0x59f111f1b605d019ULL) + F(w6 ,0x923f82a4af194f9bULL) + F(w7 ,0xab1c5ed5da6d8118ULL) + F(w8 ,0xd807aa98a3030242ULL) + F(w9 ,0x12835b0145706fbeULL) + F(w10,0x243185be4ee4b28cULL) + F(w11,0x550c7dc3d5ffb4e2ULL) + F(w12,0x72be5d74f27b896fULL) + F(w13,0x80deb1fe3b1696b1ULL) + F(w14,0x9bdc06a725c71235ULL) + F(w15,0xc19bf174cf692694ULL) + + EXPAND + + F(w0 ,0xe49b69c19ef14ad2ULL) + F(w1 ,0xefbe4786384f25e3ULL) + F(w2 ,0x0fc19dc68b8cd5b5ULL) + F(w3 ,0x240ca1cc77ac9c65ULL) + F(w4 ,0x2de92c6f592b0275ULL) + F(w5 ,0x4a7484aa6ea6e483ULL) + F(w6 ,0x5cb0a9dcbd41fbd4ULL) + F(w7 ,0x76f988da831153b5ULL) + F(w8 ,0x983e5152ee66dfabULL) + F(w9 ,0xa831c66d2db43210ULL) + F(w10,0xb00327c898fb213fULL) + F(w11,0xbf597fc7beef0ee4ULL) + F(w12,0xc6e00bf33da88fc2ULL) + F(w13,0xd5a79147930aa725ULL) + F(w14,0x06ca6351e003826fULL) + F(w15,0x142929670a0e6e70ULL) + + EXPAND + + F(w0 ,0x27b70a8546d22ffcULL) + F(w1 ,0x2e1b21385c26c926ULL) + F(w2 ,0x4d2c6dfc5ac42aedULL) + F(w3 ,0x53380d139d95b3dfULL) + F(w4 ,0x650a73548baf63deULL) + F(w5 ,0x766a0abb3c77b2a8ULL) + F(w6 ,0x81c2c92e47edaee6ULL) + F(w7 ,0x92722c851482353bULL) + F(w8 ,0xa2bfe8a14cf10364ULL) + F(w9 ,0xa81a664bbc423001ULL) + F(w10,0xc24b8b70d0f89791ULL) + F(w11,0xc76c51a30654be30ULL) + F(w12,0xd192e819d6ef5218ULL) + F(w13,0xd69906245565a910ULL) + F(w14,0xf40e35855771202aULL) + F(w15,0x106aa07032bbd1b8ULL) + + EXPAND + + F(w0 ,0x19a4c116b8d2d0c8ULL) + F(w1 ,0x1e376c085141ab53ULL) + F(w2 ,0x2748774cdf8eeb99ULL) + F(w3 ,0x34b0bcb5e19b48a8ULL) + F(w4 ,0x391c0cb3c5c95a63ULL) + F(w5 ,0x4ed8aa4ae3418acbULL) + F(w6 ,0x5b9cca4f7763e373ULL) + F(w7 ,0x682e6ff3d6b2b8a3ULL) + F(w8 ,0x748f82ee5defb2fcULL) + F(w9 ,0x78a5636f43172f60ULL) + F(w10,0x84c87814a1f0ab72ULL) + F(w11,0x8cc702081a6439ecULL) + F(w12,0x90befffa23631e28ULL) + F(w13,0xa4506cebde82bde9ULL) + F(w14,0xbef9a3f7b2c67915ULL) + F(w15,0xc67178f2e372532bULL) + + EXPAND + + F(w0 ,0xca273eceea26619cULL) + F(w1 ,0xd186b8c721c0c207ULL) + F(w2 ,0xeada7dd6cde0eb1eULL) + F(w3 ,0xf57d4f7fee6ed178ULL) + F(w4 ,0x06f067aa72176fbaULL) + F(w5 ,0x0a637dc5a2c898a6ULL) + F(w6 ,0x113f9804bef90daeULL) + F(w7 ,0x1b710b35131c471bULL) + F(w8 ,0x28db77f523047d84ULL) + F(w9 ,0x32caab7b40c72493ULL) + F(w10,0x3c9ebe0a15c9bebcULL) + F(w11,0x431d67c49c100d4cULL) + F(w12,0x4cc5d4becb3e42b6ULL) + F(w13,0x597f299cfc657e2aULL) + F(w14,0x5fcb6fab3ad6faecULL) + F(w15,0x6c44198c4a475817ULL) + + a += state[0]; + b += state[1]; + c += state[2]; + d += state[3]; + e += state[4]; + f += state[5]; + g += state[6]; + h += state[7]; + + state[0] = a; + state[1] = b; + state[2] = c; + state[3] = d; + state[4] = e; + state[5] = f; + state[6] = g; + state[7] = h; + + in += 128; + inlen -= 128; + } + + store_bigendian(statebytes + 0,state[0]); + store_bigendian(statebytes + 8,state[1]); + store_bigendian(statebytes + 16,state[2]); + store_bigendian(statebytes + 24,state[3]); + store_bigendian(statebytes + 32,state[4]); + store_bigendian(statebytes + 40,state[5]); + store_bigendian(statebytes + 48,state[6]); + store_bigendian(statebytes + 56,state[7]); + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c b/src/libsodium/src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c new file mode 100644 index 00000000..19c6e71b --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c @@ -0,0 +1,34 @@ + +#include "crypto_onetimeauth.h" + +size_t +crypto_onetimeauth_bytes(void) +{ + return crypto_onetimeauth_BYTES; +} + +size_t +crypto_onetimeauth_keybytes(void) +{ + return crypto_onetimeauth_KEYBYTES; +} + +const char * +crypto_onetimeauth_primitive(void) +{ + return crypto_onetimeauth_PRIMITIVE; +} + +int +crypto_onetimeauth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + return crypto_onetimeauth_poly1305(out, in, inlen, k); +} + +int +crypto_onetimeauth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + return crypto_onetimeauth_poly1305_verify(h, in, inlen, k); +} diff --git a/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/api.h b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/api.h new file mode 100644 index 00000000..e45d7a63 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/api.h @@ -0,0 +1,8 @@ + +#include "crypto_onetimeauth_poly1305.h" + +#define crypto_onetimeauth_poly1305_implementation_name \ + crypto_onetimeauth_poly1305_53_implementation_name + +#define crypto_onetimeauth crypto_onetimeauth_poly1305_53 +#define crypto_onetimeauth_verify crypto_onetimeauth_poly1305_53_verify diff --git a/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/auth_poly1305_53.c b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/auth_poly1305_53.c new file mode 100644 index 00000000..4570cc15 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/auth_poly1305_53.c @@ -0,0 +1,1657 @@ +/* +20080910 +D. J. Bernstein +Public domain. +*/ + +#ifdef HAVE_FENV_H +# include <fenv.h> +#endif +#include <stdint.h> +#include <stdlib.h> + +#include "api.h" +#include "crypto_onetimeauth_poly1305_53.h" +#include "utils.h" + +#ifdef HAVE_FENV_H +# pragma STDC FENV_ACCESS ON +#endif + +typedef uint8_t uchar; +typedef int32_t int32; +typedef uint32_t uint32; +typedef int64_t int64; +typedef uint64_t uint64; + +static const double poly1305_53_constants[] = { + 0.00000000558793544769287109375 /* alpham80 = 3 2^(-29) */ +, 24.0 /* alpham48 = 3 2^3 */ +, 103079215104.0 /* alpham16 = 3 2^35 */ +, 6755399441055744.0 /* alpha0 = 3 2^51 */ +, 1770887431076116955136.0 /* alpha18 = 3 2^69 */ +, 29014219670751100192948224.0 /* alpha32 = 3 2^83 */ +, 7605903601369376408980219232256.0 /* alpha50 = 3 2^101 */ +, 124615124604835863084731911901282304.0 /* alpha64 = 3 2^115 */ +, 32667107224410092492483962313449748299776.0 /* alpha82 = 3 2^133 */ +, 535217884764734955396857238543560676143529984.0 /* alpha96 = 3 2^147 */ +, 35076039295941670036888435985190792471742381031424.0 /* alpha112 = 3 2^163 */ +, 9194973245195333150150082162901855101712434733101613056.0 /* alpha130 = 3 2^181 */ +, 0.0000000000000000000000000000000000000036734198463196484624023016788195177431833298649127735047148490821200539357960224151611328125 /* scale = 5 2^(-130) */ +, 6755408030990331.0 /* offset0 = alpha0 + 2^33 - 5 */ +, 29014256564239239022116864.0 /* offset1 = alpha32 + 2^65 - 2^33 */ +, 124615283061160854719918951570079744.0 /* offset2 = alpha64 + 2^97 - 2^65 */ +, 535219245894202480694386063513315216128475136.0 /* offset3 = alpha96 + 2^130 - 2^97 */ +} ; + +int crypto_onetimeauth(unsigned char *out,const unsigned char *m,unsigned long long l,const unsigned char *k) +{ + register const unsigned char *r = k; + register const unsigned char *s = k + 16; + double r0high_stack; + double r1high_stack; + double r1low_stack; + double sr1high_stack; + double r2low_stack; + double sr2high_stack; + double r0low_stack; + double sr1low_stack; + double r2high_stack; + double sr2low_stack; + double r3high_stack; + double sr3high_stack; + double r3low_stack; + double sr3low_stack; + int64 d0; + int64 d1; + int64 d2; + int64 d3; + register double scale; + register double alpha0; + register double alpha32; + register double alpha64; + register double alpha96; + register double alpha130; + register double h0; + register double h1; + register double h2; + register double h3; + register double h4; + register double h5; + register double h6; + register double h7; + register double y7; + register double y6; + register double y1; + register double y0; + register double y5; + register double y4; + register double x7; + register double x6; + register double x1; + register double x0; + register double y3; + register double y2; + register double r3low; + register double r0low; + register double r3high; + register double r0high; + register double sr1low; + register double x5; + register double r3lowx0; + register double sr1high; + register double x4; + register double r0lowx6; + register double r1low; + register double x3; + register double r3highx0; + register double r1high; + register double x2; + register double r0highx6; + register double sr2low; + register double r0lowx0; + register double sr2high; + register double sr1lowx6; + register double r2low; + register double r0highx0; + register double r2high; + register double sr1highx6; + register double sr3low; + register double r1lowx0; + register double sr3high; + register double sr2lowx6; + register double r1highx0; + register double sr2highx6; + register double r2lowx0; + register double sr3lowx6; + register double r2highx0; + register double sr3highx6; + register double r1highx4; + register double r1lowx4; + register double r0highx4; + register double r0lowx4; + register double sr3highx4; + register double sr3lowx4; + register double sr2highx4; + register double sr2lowx4; + register double r0lowx2; + register double r0highx2; + register double r1lowx2; + register double r1highx2; + register double r2lowx2; + register double r2highx2; + register double sr3lowx2; + register double sr3highx2; + register double z0; + register double z1; + register double z2; + register double z3; + register int64 r0; + register int64 r1; + register int64 r2; + register int64 r3; + register uint32 r00; + register uint32 r01; + register uint32 r02; + register uint32 r03; + register uint32 r10; + register uint32 r11; + register uint32 r12; + register uint32 r13; + register uint32 r20; + register uint32 r21; + register uint32 r22; + register uint32 r23; + register uint32 r30; + register uint32 r31; + register uint32 r32; + register uint32 r33; + register int64 m0; + register int64 m1; + register int64 m2; + register int64 m3; + register uint32 m00; + register uint32 m01; + register uint32 m02; + register uint32 m03; + register uint32 m10; + register uint32 m11; + register uint32 m12; + register uint32 m13; + register uint32 m20; + register uint32 m21; + register uint32 m22; + register uint32 m23; + register uint32 m30; + register uint32 m31; + register uint32 m32; + register uint64 m33; + register char *constants; + register int32 lbelow2; + register int32 lbelow3; + register int32 lbelow4; + register int32 lbelow5; + register int32 lbelow6; + register int32 lbelow7; + register int32 lbelow8; + register int32 lbelow9; + register int32 lbelow10; + register int32 lbelow11; + register int32 lbelow12; + register int32 lbelow13; + register int32 lbelow14; + register int32 lbelow15; + register double alpham80; + register double alpham48; + register double alpham16; + register double alpha18; + register double alpha50; + register double alpha82; + register double alpha112; + register double offset0; + register double offset1; + register double offset2; + register double offset3; + register uint32 s00; + register uint32 s01; + register uint32 s02; + register uint32 s03; + register uint32 s10; + register uint32 s11; + register uint32 s12; + register uint32 s13; + register uint32 s20; + register uint32 s21; + register uint32 s22; + register uint32 s23; + register uint32 s30; + register uint32 s31; + register uint32 s32; + register uint32 s33; + register uint64 bits32; + register uint64 f; + register uint64 f0; + register uint64 f1; + register uint64 f2; + register uint64 f3; + register uint64 f4; + register uint64 g; + register uint64 g0; + register uint64 g1; + register uint64 g2; + register uint64 g3; + register uint64 g4; + +#ifdef HAVE_FENV_H + const int previous_rounding_mode = fegetround(); + if (previous_rounding_mode != FE_TONEAREST) { + if (fesetround(FE_TONEAREST) != 0) { + return -1; + } + } +#endif + + r00 = *(const uchar *) (r + 0); + constants = (char *) &poly1305_53_constants; + + r01 = *(const uchar *) (r + 1); + + r02 = *(const uchar *) (r + 2); + r0 = 2151; + + r03 = *(const uchar *) (r + 3); r03 &= 15; + r0 <<= 51; + + r10 = *(const uchar *) (r + 4); r10 &= 252; + r01 <<= 8; + r0 += r00; + + r11 = *(const uchar *) (r + 5); + r02 <<= 16; + r0 += r01; + + r12 = *(const uchar *) (r + 6); + r03 <<= 24; + r0 += r02; + + r13 = *(const uchar *) (r + 7); r13 &= 15; + r1 = 2215; + r0 += r03; + + d0 = r0; + r1 <<= 51; + r2 = 2279; + + r20 = *(const uchar *) (r + 8); r20 &= 252; + r11 <<= 8; + r1 += r10; + + r21 = *(const uchar *) (r + 9); + r12 <<= 16; + r1 += r11; + + r22 = *(const uchar *) (r + 10); + r13 <<= 24; + r1 += r12; + + r23 = *(const uchar *) (r + 11); r23 &= 15; + r2 <<= 51; + r1 += r13; + + d1 = r1; + r21 <<= 8; + r2 += r20; + + r30 = *(const uchar *) (r + 12); r30 &= 252; + r22 <<= 16; + r2 += r21; + + r31 = *(const uchar *) (r + 13); + r23 <<= 24; + r2 += r22; + + r32 = *(const uchar *) (r + 14); + r2 += r23; + r3 = 2343; + + d2 = r2; + r3 <<= 51; + alpha32 = *(double *) (constants + 40); + + r33 = *(const uchar *) (r + 15); r33 &= 15; + r31 <<= 8; + r3 += r30; + + r32 <<= 16; + r3 += r31; + + r33 <<= 24; + r3 += r32; + + r3 += r33; + h0 = alpha32 - alpha32; + + d3 = r3; + h1 = alpha32 - alpha32; + + alpha0 = *(double *) (constants + 24); + h2 = alpha32 - alpha32; + + alpha64 = *(double *) (constants + 56); + h3 = alpha32 - alpha32; + + alpha18 = *(double *) (constants + 32); + h4 = alpha32 - alpha32; + + r0low = *(double *) &d0; + h5 = alpha32 - alpha32; + + r1low = *(double *) &d1; + h6 = alpha32 - alpha32; + + r2low = *(double *) &d2; + h7 = alpha32 - alpha32; + + alpha50 = *(double *) (constants + 48); + r0low -= alpha0; + + alpha82 = *(double *) (constants + 64); + r1low -= alpha32; + + scale = *(double *) (constants + 96); + r2low -= alpha64; + + alpha96 = *(double *) (constants + 72); + r0high = r0low + alpha18; + + r3low = *(double *) &d3; + + alpham80 = *(double *) (constants + 0); + r1high = r1low + alpha50; + sr1low = scale * r1low; + + alpham48 = *(double *) (constants + 8); + r2high = r2low + alpha82; + sr2low = scale * r2low; + + r0high -= alpha18; + r0high_stack = r0high; + + r3low -= alpha96; + + r1high -= alpha50; + r1high_stack = r1high; + + sr1high = sr1low + alpham80; + + alpha112 = *(double *) (constants + 80); + r0low -= r0high; + + alpham16 = *(double *) (constants + 16); + r2high -= alpha82; + sr3low = scale * r3low; + + alpha130 = *(double *) (constants + 88); + sr2high = sr2low + alpham48; + + r1low -= r1high; + r1low_stack = r1low; + + sr1high -= alpham80; + sr1high_stack = sr1high; + + r2low -= r2high; + r2low_stack = r2low; + + sr2high -= alpham48; + sr2high_stack = sr2high; + + r3high = r3low + alpha112; + r0low_stack = r0low; + + sr1low -= sr1high; + sr1low_stack = sr1low; + + sr3high = sr3low + alpham16; + r2high_stack = r2high; + + sr2low -= sr2high; + sr2low_stack = sr2low; + + r3high -= alpha112; + r3high_stack = r3high; + + + sr3high -= alpham16; + sr3high_stack = sr3high; + + + r3low -= r3high; + r3low_stack = r3low; + + + sr3low -= sr3high; + sr3low_stack = sr3low; + +if (l < 16) goto addatmost15bytes; + + m00 = *(const uchar *) (m + 0); + m0 = 2151; + + m0 <<= 51; + m1 = 2215; + m01 = *(const uchar *) (m + 1); + + m1 <<= 51; + m2 = 2279; + m02 = *(const uchar *) (m + 2); + + m2 <<= 51; + m3 = 2343; + m03 = *(const uchar *) (m + 3); + + m10 = *(const uchar *) (m + 4); + m01 <<= 8; + m0 += m00; + + m11 = *(const uchar *) (m + 5); + m02 <<= 16; + m0 += m01; + + m12 = *(const uchar *) (m + 6); + m03 <<= 24; + m0 += m02; + + m13 = *(const uchar *) (m + 7); + m3 <<= 51; + m0 += m03; + + m20 = *(const uchar *) (m + 8); + m11 <<= 8; + m1 += m10; + + m21 = *(const uchar *) (m + 9); + m12 <<= 16; + m1 += m11; + + m22 = *(const uchar *) (m + 10); + m13 <<= 24; + m1 += m12; + + m23 = *(const uchar *) (m + 11); + m1 += m13; + + m30 = *(const uchar *) (m + 12); + m21 <<= 8; + m2 += m20; + + m31 = *(const uchar *) (m + 13); + m22 <<= 16; + m2 += m21; + + m32 = *(const uchar *) (m + 14); + m23 <<= 24; + m2 += m22; + + m33 = *(const uchar *) (m + 15); + m2 += m23; + + d0 = m0; + m31 <<= 8; + m3 += m30; + + d1 = m1; + m32 <<= 16; + m3 += m31; + + d2 = m2; + m33 += 256; + + m33 <<= 24; + m3 += m32; + + m3 += m33; + d3 = m3; + + m += 16; + l -= 16; + + z0 = *(double *) &d0; + + z1 = *(double *) &d1; + + z2 = *(double *) &d2; + + z3 = *(double *) &d3; + + z0 -= alpha0; + + z1 -= alpha32; + + z2 -= alpha64; + + z3 -= alpha96; + + h0 += z0; + + h1 += z1; + + h3 += z2; + + h5 += z3; + +if (l < 16) goto multiplyaddatmost15bytes; + +multiplyaddatleast16bytes:; + + m2 = 2279; + m20 = *(const uchar *) (m + 8); + y7 = h7 + alpha130; + + m2 <<= 51; + m3 = 2343; + m21 = *(const uchar *) (m + 9); + y6 = h6 + alpha130; + + m3 <<= 51; + m0 = 2151; + m22 = *(const uchar *) (m + 10); + y1 = h1 + alpha32; + + m0 <<= 51; + m1 = 2215; + m23 = *(const uchar *) (m + 11); + y0 = h0 + alpha32; + + m1 <<= 51; + m30 = *(const uchar *) (m + 12); + y7 -= alpha130; + + m21 <<= 8; + m2 += m20; + m31 = *(const uchar *) (m + 13); + y6 -= alpha130; + + m22 <<= 16; + m2 += m21; + m32 = *(const uchar *) (m + 14); + y1 -= alpha32; + + m23 <<= 24; + m2 += m22; + m33 = *(const uchar *) (m + 15); + y0 -= alpha32; + + m2 += m23; + m00 = *(const uchar *) (m + 0); + y5 = h5 + alpha96; + + m31 <<= 8; + m3 += m30; + m01 = *(const uchar *) (m + 1); + y4 = h4 + alpha96; + + m32 <<= 16; + m02 = *(const uchar *) (m + 2); + x7 = h7 - y7; + y7 *= scale; + + m33 += 256; + m03 = *(const uchar *) (m + 3); + x6 = h6 - y6; + y6 *= scale; + + m33 <<= 24; + m3 += m31; + m10 = *(const uchar *) (m + 4); + x1 = h1 - y1; + + m01 <<= 8; + m3 += m32; + m11 = *(const uchar *) (m + 5); + x0 = h0 - y0; + + m3 += m33; + m0 += m00; + m12 = *(const uchar *) (m + 6); + y5 -= alpha96; + + m02 <<= 16; + m0 += m01; + m13 = *(const uchar *) (m + 7); + y4 -= alpha96; + + m03 <<= 24; + m0 += m02; + d2 = m2; + x1 += y7; + + m0 += m03; + d3 = m3; + x0 += y6; + + m11 <<= 8; + m1 += m10; + d0 = m0; + x7 += y5; + + m12 <<= 16; + m1 += m11; + x6 += y4; + + m13 <<= 24; + m1 += m12; + y3 = h3 + alpha64; + + m1 += m13; + d1 = m1; + y2 = h2 + alpha64; + + x0 += x1; + + x6 += x7; + + y3 -= alpha64; + r3low = r3low_stack; + + y2 -= alpha64; + r0low = r0low_stack; + + x5 = h5 - y5; + r3lowx0 = r3low * x0; + r3high = r3high_stack; + + x4 = h4 - y4; + r0lowx6 = r0low * x6; + r0high = r0high_stack; + + x3 = h3 - y3; + r3highx0 = r3high * x0; + sr1low = sr1low_stack; + + x2 = h2 - y2; + r0highx6 = r0high * x6; + sr1high = sr1high_stack; + + x5 += y3; + r0lowx0 = r0low * x0; + r1low = r1low_stack; + + h6 = r3lowx0 + r0lowx6; + sr1lowx6 = sr1low * x6; + r1high = r1high_stack; + + x4 += y2; + r0highx0 = r0high * x0; + sr2low = sr2low_stack; + + h7 = r3highx0 + r0highx6; + sr1highx6 = sr1high * x6; + sr2high = sr2high_stack; + + x3 += y1; + r1lowx0 = r1low * x0; + r2low = r2low_stack; + + h0 = r0lowx0 + sr1lowx6; + sr2lowx6 = sr2low * x6; + r2high = r2high_stack; + + x2 += y0; + r1highx0 = r1high * x0; + sr3low = sr3low_stack; + + h1 = r0highx0 + sr1highx6; + sr2highx6 = sr2high * x6; + sr3high = sr3high_stack; + + x4 += x5; + r2lowx0 = r2low * x0; + z2 = *(double *) &d2; + + h2 = r1lowx0 + sr2lowx6; + sr3lowx6 = sr3low * x6; + + x2 += x3; + r2highx0 = r2high * x0; + z3 = *(double *) &d3; + + h3 = r1highx0 + sr2highx6; + sr3highx6 = sr3high * x6; + + r1highx4 = r1high * x4; + z2 -= alpha64; + + h4 = r2lowx0 + sr3lowx6; + r1lowx4 = r1low * x4; + + r0highx4 = r0high * x4; + z3 -= alpha96; + + h5 = r2highx0 + sr3highx6; + r0lowx4 = r0low * x4; + + h7 += r1highx4; + sr3highx4 = sr3high * x4; + + h6 += r1lowx4; + sr3lowx4 = sr3low * x4; + + h5 += r0highx4; + sr2highx4 = sr2high * x4; + + h4 += r0lowx4; + sr2lowx4 = sr2low * x4; + + h3 += sr3highx4; + r0lowx2 = r0low * x2; + + h2 += sr3lowx4; + r0highx2 = r0high * x2; + + h1 += sr2highx4; + r1lowx2 = r1low * x2; + + h0 += sr2lowx4; + r1highx2 = r1high * x2; + + h2 += r0lowx2; + r2lowx2 = r2low * x2; + + h3 += r0highx2; + r2highx2 = r2high * x2; + + h4 += r1lowx2; + sr3lowx2 = sr3low * x2; + + h5 += r1highx2; + sr3highx2 = sr3high * x2; + alpha0 = *(double *) (constants + 24); + + m += 16; + h6 += r2lowx2; + + l -= 16; + h7 += r2highx2; + + z1 = *(double *) &d1; + h0 += sr3lowx2; + + z0 = *(double *) &d0; + h1 += sr3highx2; + + z1 -= alpha32; + + z0 -= alpha0; + + h5 += z3; + + h3 += z2; + + h1 += z1; + + h0 += z0; + +if (l >= 16) goto multiplyaddatleast16bytes; + +multiplyaddatmost15bytes:; + + y7 = h7 + alpha130; + + y6 = h6 + alpha130; + + y1 = h1 + alpha32; + + y0 = h0 + alpha32; + + y7 -= alpha130; + + y6 -= alpha130; + + y1 -= alpha32; + + y0 -= alpha32; + + y5 = h5 + alpha96; + + y4 = h4 + alpha96; + + x7 = h7 - y7; + y7 *= scale; + + x6 = h6 - y6; + y6 *= scale; + + x1 = h1 - y1; + + x0 = h0 - y0; + + y5 -= alpha96; + + y4 -= alpha96; + + x1 += y7; + + x0 += y6; + + x7 += y5; + + x6 += y4; + + y3 = h3 + alpha64; + + y2 = h2 + alpha64; + + x0 += x1; + + x6 += x7; + + y3 -= alpha64; + r3low = r3low_stack; + + y2 -= alpha64; + r0low = r0low_stack; + + x5 = h5 - y5; + r3lowx0 = r3low * x0; + r3high = r3high_stack; + + x4 = h4 - y4; + r0lowx6 = r0low * x6; + r0high = r0high_stack; + + x3 = h3 - y3; + r3highx0 = r3high * x0; + sr1low = sr1low_stack; + + x2 = h2 - y2; + r0highx6 = r0high * x6; + sr1high = sr1high_stack; + + x5 += y3; + r0lowx0 = r0low * x0; + r1low = r1low_stack; + + h6 = r3lowx0 + r0lowx6; + sr1lowx6 = sr1low * x6; + r1high = r1high_stack; + + x4 += y2; + r0highx0 = r0high * x0; + sr2low = sr2low_stack; + + h7 = r3highx0 + r0highx6; + sr1highx6 = sr1high * x6; + sr2high = sr2high_stack; + + x3 += y1; + r1lowx0 = r1low * x0; + r2low = r2low_stack; + + h0 = r0lowx0 + sr1lowx6; + sr2lowx6 = sr2low * x6; + r2high = r2high_stack; + + x2 += y0; + r1highx0 = r1high * x0; + sr3low = sr3low_stack; + + h1 = r0highx0 + sr1highx6; + sr2highx6 = sr2high * x6; + sr3high = sr3high_stack; + + x4 += x5; + r2lowx0 = r2low * x0; + + h2 = r1lowx0 + sr2lowx6; + sr3lowx6 = sr3low * x6; + + x2 += x3; + r2highx0 = r2high * x0; + + h3 = r1highx0 + sr2highx6; + sr3highx6 = sr3high * x6; + + r1highx4 = r1high * x4; + + h4 = r2lowx0 + sr3lowx6; + r1lowx4 = r1low * x4; + + r0highx4 = r0high * x4; + + h5 = r2highx0 + sr3highx6; + r0lowx4 = r0low * x4; + + h7 += r1highx4; + sr3highx4 = sr3high * x4; + + h6 += r1lowx4; + sr3lowx4 = sr3low * x4; + + h5 += r0highx4; + sr2highx4 = sr2high * x4; + + h4 += r0lowx4; + sr2lowx4 = sr2low * x4; + + h3 += sr3highx4; + r0lowx2 = r0low * x2; + + h2 += sr3lowx4; + r0highx2 = r0high * x2; + + h1 += sr2highx4; + r1lowx2 = r1low * x2; + + h0 += sr2lowx4; + r1highx2 = r1high * x2; + + h2 += r0lowx2; + r2lowx2 = r2low * x2; + + h3 += r0highx2; + r2highx2 = r2high * x2; + + h4 += r1lowx2; + sr3lowx2 = sr3low * x2; + + h5 += r1highx2; + sr3highx2 = sr3high * x2; + + h6 += r2lowx2; + + h7 += r2highx2; + + h0 += sr3lowx2; + + h1 += sr3highx2; + +addatmost15bytes:; + +if (l == 0) goto nomorebytes; + + lbelow2 = l - 2; + + lbelow3 = l - 3; + + lbelow2 >>= 31; + lbelow4 = l - 4; + + m00 = *(const uchar *) (m + 0); + lbelow3 >>= 31; + m += lbelow2; + + m01 = *(const uchar *) (m + 1); + lbelow4 >>= 31; + m += lbelow3; + + m02 = *(const uchar *) (m + 2); + m += lbelow4; + m0 = 2151; + + m03 = *(const uchar *) (m + 3); + m0 <<= 51; + m1 = 2215; + + m0 += m00; + m01 &= ~lbelow2; + + m02 &= ~lbelow3; + m01 -= lbelow2; + + m01 <<= 8; + m03 &= ~lbelow4; + + m0 += m01; + lbelow2 -= lbelow3; + + m02 += lbelow2; + lbelow3 -= lbelow4; + + m02 <<= 16; + m03 += lbelow3; + + m03 <<= 24; + m0 += m02; + + m0 += m03; + lbelow5 = l - 5; + + lbelow6 = l - 6; + lbelow7 = l - 7; + + lbelow5 >>= 31; + lbelow8 = l - 8; + + lbelow6 >>= 31; + m += lbelow5; + + m10 = *(const uchar *) (m + 4); + lbelow7 >>= 31; + m += lbelow6; + + m11 = *(const uchar *) (m + 5); + lbelow8 >>= 31; + m += lbelow7; + + m12 = *(const uchar *) (m + 6); + m1 <<= 51; + m += lbelow8; + + m13 = *(const uchar *) (m + 7); + m10 &= ~lbelow5; + lbelow4 -= lbelow5; + + m10 += lbelow4; + lbelow5 -= lbelow6; + + m11 &= ~lbelow6; + m11 += lbelow5; + + m11 <<= 8; + m1 += m10; + + m1 += m11; + m12 &= ~lbelow7; + + lbelow6 -= lbelow7; + m13 &= ~lbelow8; + + m12 += lbelow6; + lbelow7 -= lbelow8; + + m12 <<= 16; + m13 += lbelow7; + + m13 <<= 24; + m1 += m12; + + m1 += m13; + m2 = 2279; + + lbelow9 = l - 9; + m3 = 2343; + + lbelow10 = l - 10; + lbelow11 = l - 11; + + lbelow9 >>= 31; + lbelow12 = l - 12; + + lbelow10 >>= 31; + m += lbelow9; + + m20 = *(const uchar *) (m + 8); + lbelow11 >>= 31; + m += lbelow10; + + m21 = *(const uchar *) (m + 9); + lbelow12 >>= 31; + m += lbelow11; + + m22 = *(const uchar *) (m + 10); + m2 <<= 51; + m += lbelow12; + + m23 = *(const uchar *) (m + 11); + m20 &= ~lbelow9; + lbelow8 -= lbelow9; + + m20 += lbelow8; + lbelow9 -= lbelow10; + + m21 &= ~lbelow10; + m21 += lbelow9; + + m21 <<= 8; + m2 += m20; + + m2 += m21; + m22 &= ~lbelow11; + + lbelow10 -= lbelow11; + m23 &= ~lbelow12; + + m22 += lbelow10; + lbelow11 -= lbelow12; + + m22 <<= 16; + m23 += lbelow11; + + m23 <<= 24; + m2 += m22; + + m3 <<= 51; + lbelow13 = l - 13; + + lbelow13 >>= 31; + lbelow14 = l - 14; + + lbelow14 >>= 31; + m += lbelow13; + lbelow15 = l - 15; + + m30 = *(const uchar *) (m + 12); + lbelow15 >>= 31; + m += lbelow14; + + m31 = *(const uchar *) (m + 13); + m += lbelow15; + m2 += m23; + + m32 = *(const uchar *) (m + 14); + m30 &= ~lbelow13; + lbelow12 -= lbelow13; + + m30 += lbelow12; + lbelow13 -= lbelow14; + + m3 += m30; + m31 &= ~lbelow14; + + m31 += lbelow13; + m32 &= ~lbelow15; + + m31 <<= 8; + lbelow14 -= lbelow15; + + m3 += m31; + m32 += lbelow14; + d0 = m0; + + m32 <<= 16; + m33 = lbelow15 + 1; + d1 = m1; + + m33 <<= 24; + m3 += m32; + d2 = m2; + + m3 += m33; + d3 = m3; + + alpha0 = *(double *) (constants + 24); + + z3 = *(double *) &d3; + + z2 = *(double *) &d2; + + z1 = *(double *) &d1; + + z0 = *(double *) &d0; + + z3 -= alpha96; + + z2 -= alpha64; + + z1 -= alpha32; + + z0 -= alpha0; + + h5 += z3; + + h3 += z2; + + h1 += z1; + + h0 += z0; + + y7 = h7 + alpha130; + + y6 = h6 + alpha130; + + y1 = h1 + alpha32; + + y0 = h0 + alpha32; + + y7 -= alpha130; + + y6 -= alpha130; + + y1 -= alpha32; + + y0 -= alpha32; + + y5 = h5 + alpha96; + + y4 = h4 + alpha96; + + x7 = h7 - y7; + y7 *= scale; + + x6 = h6 - y6; + y6 *= scale; + + x1 = h1 - y1; + + x0 = h0 - y0; + + y5 -= alpha96; + + y4 -= alpha96; + + x1 += y7; + + x0 += y6; + + x7 += y5; + + x6 += y4; + + y3 = h3 + alpha64; + + y2 = h2 + alpha64; + + x0 += x1; + + x6 += x7; + + y3 -= alpha64; + r3low = r3low_stack; + + y2 -= alpha64; + r0low = r0low_stack; + + x5 = h5 - y5; + r3lowx0 = r3low * x0; + r3high = r3high_stack; + + x4 = h4 - y4; + r0lowx6 = r0low * x6; + r0high = r0high_stack; + + x3 = h3 - y3; + r3highx0 = r3high * x0; + sr1low = sr1low_stack; + + x2 = h2 - y2; + r0highx6 = r0high * x6; + sr1high = sr1high_stack; + + x5 += y3; + r0lowx0 = r0low * x0; + r1low = r1low_stack; + + h6 = r3lowx0 + r0lowx6; + sr1lowx6 = sr1low * x6; + r1high = r1high_stack; + + x4 += y2; + r0highx0 = r0high * x0; + sr2low = sr2low_stack; + + h7 = r3highx0 + r0highx6; + sr1highx6 = sr1high * x6; + sr2high = sr2high_stack; + + x3 += y1; + r1lowx0 = r1low * x0; + r2low = r2low_stack; + + h0 = r0lowx0 + sr1lowx6; + sr2lowx6 = sr2low * x6; + r2high = r2high_stack; + + x2 += y0; + r1highx0 = r1high * x0; + sr3low = sr3low_stack; + + h1 = r0highx0 + sr1highx6; + sr2highx6 = sr2high * x6; + sr3high = sr3high_stack; + + x4 += x5; + r2lowx0 = r2low * x0; + + h2 = r1lowx0 + sr2lowx6; + sr3lowx6 = sr3low * x6; + + x2 += x3; + r2highx0 = r2high * x0; + + h3 = r1highx0 + sr2highx6; + sr3highx6 = sr3high * x6; + + r1highx4 = r1high * x4; + + h4 = r2lowx0 + sr3lowx6; + r1lowx4 = r1low * x4; + + r0highx4 = r0high * x4; + + h5 = r2highx0 + sr3highx6; + r0lowx4 = r0low * x4; + + h7 += r1highx4; + sr3highx4 = sr3high * x4; + + h6 += r1lowx4; + sr3lowx4 = sr3low * x4; + + h5 += r0highx4; + sr2highx4 = sr2high * x4; + + h4 += r0lowx4; + sr2lowx4 = sr2low * x4; + + h3 += sr3highx4; + r0lowx2 = r0low * x2; + + h2 += sr3lowx4; + r0highx2 = r0high * x2; + + h1 += sr2highx4; + r1lowx2 = r1low * x2; + + h0 += sr2lowx4; + r1highx2 = r1high * x2; + + h2 += r0lowx2; + r2lowx2 = r2low * x2; + + h3 += r0highx2; + r2highx2 = r2high * x2; + + h4 += r1lowx2; + sr3lowx2 = sr3low * x2; + + h5 += r1highx2; + sr3highx2 = sr3high * x2; + + h6 += r2lowx2; + + h7 += r2highx2; + + h0 += sr3lowx2; + + h1 += sr3highx2; + + +nomorebytes:; + + offset0 = *(double *) (constants + 104); + y7 = h7 + alpha130; + + offset1 = *(double *) (constants + 112); + y0 = h0 + alpha32; + + offset2 = *(double *) (constants + 120); + y1 = h1 + alpha32; + + offset3 = *(double *) (constants + 128); + y2 = h2 + alpha64; + + y7 -= alpha130; + + y3 = h3 + alpha64; + + y4 = h4 + alpha96; + + y5 = h5 + alpha96; + + x7 = h7 - y7; + y7 *= scale; + + y0 -= alpha32; + + y1 -= alpha32; + + y2 -= alpha64; + + h6 += x7; + + y3 -= alpha64; + + y4 -= alpha96; + + y5 -= alpha96; + + y6 = h6 + alpha130; + + x0 = h0 - y0; + + x1 = h1 - y1; + + x2 = h2 - y2; + + y6 -= alpha130; + + x0 += y7; + + x3 = h3 - y3; + + x4 = h4 - y4; + + x5 = h5 - y5; + + x6 = h6 - y6; + + y6 *= scale; + + x2 += y0; + + x3 += y1; + + x4 += y2; + + x0 += y6; + + x5 += y3; + + x6 += y4; + + x2 += x3; + + x0 += x1; + + x4 += x5; + + x6 += y5; + + x2 += offset1; + *(double *) &d1 = x2; + + x0 += offset0; + *(double *) &d0 = x0; + + x4 += offset2; + *(double *) &d2 = x4; + + x6 += offset3; + *(double *) &d3 = x6; + + + + + f0 = d0; + + f1 = d1; + bits32 = -1; + + f2 = d2; + bits32 >>= 32; + + f3 = d3; + f = f0 >> 32; + + f0 &= bits32; + f &= 255; + + f1 += f; + g0 = f0 + 5; + + g = g0 >> 32; + g0 &= bits32; + + f = f1 >> 32; + f1 &= bits32; + + f &= 255; + g1 = f1 + g; + + g = g1 >> 32; + f2 += f; + + f = f2 >> 32; + g1 &= bits32; + + f2 &= bits32; + f &= 255; + + f3 += f; + g2 = f2 + g; + + g = g2 >> 32; + g2 &= bits32; + + f4 = f3 >> 32; + f3 &= bits32; + + f4 &= 255; + g3 = f3 + g; + + g = g3 >> 32; + g3 &= bits32; + + g4 = f4 + g; + + g4 = g4 - 4; + s00 = *(const uchar *) (s + 0); + + f = (int64) g4 >> 63; + s01 = *(const uchar *) (s + 1); + + f0 &= f; + g0 &= ~f; + s02 = *(const uchar *) (s + 2); + + f1 &= f; + f0 |= g0; + s03 = *(const uchar *) (s + 3); + + g1 &= ~f; + f2 &= f; + s10 = *(const uchar *) (s + 4); + + f3 &= f; + g2 &= ~f; + s11 = *(const uchar *) (s + 5); + + g3 &= ~f; + f1 |= g1; + s12 = *(const uchar *) (s + 6); + + f2 |= g2; + f3 |= g3; + s13 = *(const uchar *) (s + 7); + + s01 <<= 8; + f0 += s00; + s20 = *(const uchar *) (s + 8); + + s02 <<= 16; + f0 += s01; + s21 = *(const uchar *) (s + 9); + + s03 <<= 24; + f0 += s02; + s22 = *(const uchar *) (s + 10); + + s11 <<= 8; + f1 += s10; + s23 = *(const uchar *) (s + 11); + + s12 <<= 16; + f1 += s11; + s30 = *(const uchar *) (s + 12); + + s13 <<= 24; + f1 += s12; + s31 = *(const uchar *) (s + 13); + + f0 += s03; + f1 += s13; + s32 = *(const uchar *) (s + 14); + + s21 <<= 8; + f2 += s20; + s33 = *(const uchar *) (s + 15); + + s22 <<= 16; + f2 += s21; + + s23 <<= 24; + f2 += s22; + + s31 <<= 8; + f3 += s30; + + s32 <<= 16; + f3 += s31; + + s33 <<= 24; + f3 += s32; + + f2 += s23; + f3 += s33; + + *(uchar *) (out + 0) = f0; + f0 >>= 8; + *(uchar *) (out + 1) = f0; + f0 >>= 8; + *(uchar *) (out + 2) = f0; + f0 >>= 8; + *(uchar *) (out + 3) = f0; + f0 >>= 8; + f1 += f0; + + *(uchar *) (out + 4) = f1; + f1 >>= 8; + *(uchar *) (out + 5) = f1; + f1 >>= 8; + *(uchar *) (out + 6) = f1; + f1 >>= 8; + *(uchar *) (out + 7) = f1; + f1 >>= 8; + f2 += f1; + + *(uchar *) (out + 8) = f2; + f2 >>= 8; + *(uchar *) (out + 9) = f2; + f2 >>= 8; + *(uchar *) (out + 10) = f2; + f2 >>= 8; + *(uchar *) (out + 11) = f2; + f2 >>= 8; + f3 += f2; + + *(uchar *) (out + 12) = f3; + f3 >>= 8; + *(uchar *) (out + 13) = f3; + f3 >>= 8; + *(uchar *) (out + 14) = f3; + f3 >>= 8; + *(uchar *) (out + 15) = f3; + +#ifdef HAVE_FENV_H + if (previous_rounding_mode != FE_TONEAREST && + fesetround(previous_rounding_mode) != 0) { + abort(); + } +#endif + + return 0; +} + +const char * +crypto_onetimeauth_poly1305_implementation_name(void) +{ + return "53"; +} + +struct crypto_onetimeauth_poly1305_implementation +crypto_onetimeauth_poly1305_53_implementation = { + _SODIUM_C99(.implementation_name =) crypto_onetimeauth_poly1305_implementation_name, + _SODIUM_C99(.onetimeauth =) crypto_onetimeauth, + _SODIUM_C99(.onetimeauth_verify =) crypto_onetimeauth_verify +}; diff --git a/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/verify_poly1305_53.c b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/verify_poly1305_53.c new file mode 100644 index 00000000..fba6ab62 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/verify_poly1305_53.c @@ -0,0 +1,10 @@ +#include "api.h" +#include "crypto_onetimeauth_poly1305_53.h" +#include "crypto_verify_16.h" + +int crypto_onetimeauth_verify(const unsigned char *h,const unsigned char *in,unsigned long long inlen,const unsigned char *k) +{ + unsigned char correct[16]; + crypto_onetimeauth(correct,in,inlen,k); + return crypto_verify_16(h,correct); +} diff --git a/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/api.h b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/api.h new file mode 100644 index 00000000..43abd4a4 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/api.h @@ -0,0 +1,8 @@ + +#include "crypto_onetimeauth_poly1305.h" + +#define crypto_onetimeauth_poly1305_implementation_name \ + crypto_onetimeauth_poly1305_donna_implementation_name + +#define crypto_onetimeauth crypto_onetimeauth_poly1305_donna +#define crypto_onetimeauth_verify crypto_onetimeauth_poly1305_donna_verify diff --git a/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c new file mode 100644 index 00000000..eaea9786 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c @@ -0,0 +1,151 @@ + +#include "api.h" +#include "crypto_onetimeauth_poly1305_donna.h" +#include "utils.h" + +#include "portable-jane.h" + +int +crypto_onetimeauth(unsigned char *out, const unsigned char *m, + unsigned long long inlen, const unsigned char *key) +{ + uint32_t t0,t1,t2,t3; + uint32_t h0,h1,h2,h3,h4; + uint32_t r0,r1,r2,r3,r4; + uint32_t s1,s2,s3,s4; + uint32_t b, nb; + unsigned long long j; + uint64_t t[5]; + uint64_t f0,f1,f2,f3; + uint32_t g0,g1,g2,g3,g4; + uint64_t c; + unsigned char mp[16]; + + /* clamp key */ + t0 = U8TO32_LE(key+0); + t1 = U8TO32_LE(key+4); + t2 = U8TO32_LE(key+8); + t3 = U8TO32_LE(key+12); + + /* precompute multipliers */ + r0 = t0 & 0x3ffffff; t0 >>= 26; t0 |= t1 << 6; + r1 = t0 & 0x3ffff03; t1 >>= 20; t1 |= t2 << 12; + r2 = t1 & 0x3ffc0ff; t2 >>= 14; t2 |= t3 << 18; + r3 = t2 & 0x3f03fff; t3 >>= 8; + r4 = t3 & 0x00fffff; + + s1 = r1 * 5; + s2 = r2 * 5; + s3 = r3 * 5; + s4 = r4 * 5; + + /* init state */ + h0 = 0; + h1 = 0; + h2 = 0; + h3 = 0; + h4 = 0; + + /* full blocks */ + if (inlen < 16) goto poly1305_donna_atmost15bytes; +poly1305_donna_16bytes: + m += 16; + inlen -= 16; + + t0 = U8TO32_LE(m-16); + t1 = U8TO32_LE(m-12); + t2 = U8TO32_LE(m-8); + t3 = U8TO32_LE(m-4); + + h0 += t0 & 0x3ffffff; + h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff; + h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff; + h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff; + h4 += (t3 >> 8) | (1 << 24); + + +poly1305_donna_mul: + t[0] = mul32x32_64(h0,r0) + mul32x32_64(h1,s4) + mul32x32_64(h2,s3) + mul32x32_64(h3,s2) + mul32x32_64(h4,s1); + t[1] = mul32x32_64(h0,r1) + mul32x32_64(h1,r0) + mul32x32_64(h2,s4) + mul32x32_64(h3,s3) + mul32x32_64(h4,s2); + t[2] = mul32x32_64(h0,r2) + mul32x32_64(h1,r1) + mul32x32_64(h2,r0) + mul32x32_64(h3,s4) + mul32x32_64(h4,s3); + t[3] = mul32x32_64(h0,r3) + mul32x32_64(h1,r2) + mul32x32_64(h2,r1) + mul32x32_64(h3,r0) + mul32x32_64(h4,s4); + t[4] = mul32x32_64(h0,r4) + mul32x32_64(h1,r3) + mul32x32_64(h2,r2) + mul32x32_64(h3,r1) + mul32x32_64(h4,r0); + + h0 = (uint32_t)t[0] & 0x3ffffff; c = (t[0] >> 26); + t[1] += c; h1 = (uint32_t)t[1] & 0x3ffffff; b = (uint32_t)(t[1] >> 26); + t[2] += b; h2 = (uint32_t)t[2] & 0x3ffffff; b = (uint32_t)(t[2] >> 26); + t[3] += b; h3 = (uint32_t)t[3] & 0x3ffffff; b = (uint32_t)(t[3] >> 26); + t[4] += b; h4 = (uint32_t)t[4] & 0x3ffffff; b = (uint32_t)(t[4] >> 26); + h0 += b * 5; + + if (inlen >= 16) goto poly1305_donna_16bytes; + + /* final bytes */ +poly1305_donna_atmost15bytes: + if (!inlen) goto poly1305_donna_finish; + + for (j = 0; j < inlen; j++) mp[j] = m[j]; + mp[j++] = 1; + for (; j < 16; j++) mp[j] = 0; + inlen = 0; + + t0 = U8TO32_LE(mp+0); + t1 = U8TO32_LE(mp+4); + t2 = U8TO32_LE(mp+8); + t3 = U8TO32_LE(mp+12); + + h0 += t0 & 0x3ffffff; + h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff; + h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff; + h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff; + h4 += (t3 >> 8); + + goto poly1305_donna_mul; + +poly1305_donna_finish: + b = h0 >> 26; h0 = h0 & 0x3ffffff; + h1 += b; b = h1 >> 26; h1 = h1 & 0x3ffffff; + h2 += b; b = h2 >> 26; h2 = h2 & 0x3ffffff; + h3 += b; b = h3 >> 26; h3 = h3 & 0x3ffffff; + h4 += b; b = h4 >> 26; h4 = h4 & 0x3ffffff; + h0 += b * 5; + + g0 = h0 + 5; b = g0 >> 26; g0 &= 0x3ffffff; + g1 = h1 + b; b = g1 >> 26; g1 &= 0x3ffffff; + g2 = h2 + b; b = g2 >> 26; g2 &= 0x3ffffff; + g3 = h3 + b; b = g3 >> 26; g3 &= 0x3ffffff; + g4 = h4 + b - (1 << 26); + + b = (g4 >> 31) - 1; + nb = ~b; + h0 = (h0 & nb) | (g0 & b); + h1 = (h1 & nb) | (g1 & b); + h2 = (h2 & nb) | (g2 & b); + h3 = (h3 & nb) | (g3 & b); + h4 = (h4 & nb) | (g4 & b); + + f0 = ((h0 ) | (h1 << 26)) + (uint64_t)U8TO32_LE(&key[16]); + f1 = ((h1 >> 6) | (h2 << 20)) + (uint64_t)U8TO32_LE(&key[20]); + f2 = ((h2 >> 12) | (h3 << 14)) + (uint64_t)U8TO32_LE(&key[24]); + f3 = ((h3 >> 18) | (h4 << 8)) + (uint64_t)U8TO32_LE(&key[28]); + + U32TO8_LE(&out[ 0], f0); f1 += (f0 >> 32); + U32TO8_LE(&out[ 4], f1); f2 += (f1 >> 32); + U32TO8_LE(&out[ 8], f2); f3 += (f2 >> 32); + U32TO8_LE(&out[12], f3); + + return 0; +} + +const char * +crypto_onetimeauth_poly1305_implementation_name(void) +{ + return "donna"; +} + +struct crypto_onetimeauth_poly1305_implementation +crypto_onetimeauth_poly1305_donna_implementation = { + _SODIUM_C99(.implementation_name =) crypto_onetimeauth_poly1305_implementation_name, + _SODIUM_C99(.onetimeauth =) crypto_onetimeauth, + _SODIUM_C99(.onetimeauth_verify =) crypto_onetimeauth_verify +}; diff --git a/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/portable-jane.h b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/portable-jane.h new file mode 100644 index 00000000..4d1f93a7 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/portable-jane.h @@ -0,0 +1,782 @@ +#ifndef PORTABLE_JANE_H +#define PORTABLE_JANE_H "+endian +uint128" +/* 0000-os-100-solaris.h */ + +#if defined(sun) || defined(__sun) || defined(__SVR4) || defined(__svr4__) + #include <sys/mman.h> + #include <sys/time.h> + #include <fcntl.h> + + #define OS_SOLARIS +#endif + +/* 0000-os-100-unix.h */ + +#if defined(__unix__) || defined(unix) + #include <sys/mman.h> + #include <sys/time.h> + #if !defined(USG) + #include <sys/param.h> /* need this to define BSD */ + #endif + #include <unistd.h> + #include <fcntl.h> + + #define OS_NIX + #if defined(__linux__) + #include <endian.h> + #define OS_LINUX + #elif defined(BSD) + #define OS_BSD + + #if defined(MACOS_X) || (defined(__APPLE__) & defined(__MACH__)) + #define OS_OSX + #elif defined(macintosh) || defined(Macintosh) + #define OS_MAC + #elif defined(__OpenBSD__) + #define OS_OPENBSD + #elif defined(__FreeBSD__) + #define OS_FREEBSD + #elif defined(__NetBSD__) + #define OS_NETBSD + #endif + #endif +#endif + +/* 0000-os-100-windows.h */ + +#if defined(_WIN32) || defined(_WIN64) || defined(__TOS_WIN__) || defined(__WINDOWS__) + #include <windows.h> + #include <wincrypt.h> + #define OS_WINDOWS +#endif + +/* 0100-compiler-000.h */ + +#undef NOINLINE +#undef INLINE +#undef FASTCALL +#undef CDECL +#undef STDCALL +#undef NAKED + +/* 0100-compiler-100-clang.h */ + +#if defined(__clang__) + #define COMPILER_CLANG ((__clang_major__ * 10000) + (__clang_minor__ * 100) + (__clang_patchlevel__)) +#endif + +/* 0100-compiler-100-gcc.h */ + +#if defined(__GNUC__) + #if (__GNUC__ >= 3) + #define COMPILER_GCC_PATCHLEVEL __GNUC_PATCHLEVEL__ + #else + #define COMPILER_GCC_PATCHLEVEL 0 + #endif + #define COMPILER_GCC ((__GNUC__ * 10000) + (__GNUC_MINOR__ * 100) + (COMPILER_GCC_PATCHLEVEL)) + + #include <stdint.h> + + typedef unsigned int fpu_control_t; + + #define ROTL32(a,b) (((a) << (b)) | ((a) >> (32 - b))) + #define ROTR32(a,b) (((a) >> (b)) | ((a) << (32 - b))) + #define ROTL64(a,b) (((a) << (b)) | ((a) >> (64 - b))) + #define ROTR64(a,b) (((a) >> (b)) | ((a) << (64 - b))) + + #if (COMPILER_GCC >= 30000) + #define NOINLINE __attribute__((noinline)) + #else + #define NOINLINE + #endif + #if (COMPILER_GCC >= 30000) + #define INLINE inline __attribute__((always_inline)) + #else + #define INLINE inline + #endif + #if (COMPILER_GCC >= 30400) + #define FASTCALL __attribute__((fastcall)) + #else + #define FASTCALL + #endif + #define CDECL __attribute__((cdecl)) + #define STDCALL __attribute__((stdcall)) + + #define mul32x32_64(a,b) ((uint64_t)(a) * (b)) + #define mul32x32_64s(a,b) (((int64_t)(a))*(b)) +#endif + +/* 0100-compiler-100-icc.h */ + +#if defined(__ICC) + #define COMPILER_ICC __ICC +#endif + +/* 0100-compiler-100-mingw.h */ + +#if defined(__MINGW32__) || defined(__MINGW64__) + #define COMPILER_MINGW +#endif + +/* 0100-compiler-100-msvc.h */ + +#if defined(_MSC_VER) + #define _CRT_SECURE_NO_WARNINGS + + #pragma warning(disable : 4127) /* conditional expression is constant */ + #pragma warning(disable : 4100) /* unreferenced formal parameter */ + + #include <float.h> + #include <stdlib.h> /* _rotl */ + #include <intrin.h> + + #define COMPILER_MSVC_VS6 120000000 + #define COMPILER_MSVC_VS6PP 121000000 + #define COMPILER_MSVC_VS2002 130000000 + #define COMPILER_MSVC_VS2003 131000000 + #define COMPILER_MSVC_VS2005 140050727 + #define COMPILER_MSVC_VS2008 150000000 + #define COMPILER_MSVC_VS2008SP1 150030729 + #define COMPILER_MSVC_VS2010 160000000 + #define COMPILER_MSVC_VS2010SP1 160040219 + #define COMPILER_MSVC_VS2012RC 170000000 + #define COMPILER_MSVC_VS2012 170050727 + + #if _MSC_FULL_VER > 100000000 + #define COMPILER_MSVC (_MSC_FULL_VER) + #else + #define COMPILER_MSVC (_MSC_FULL_VER * 10) + #endif + + #if ((_MSC_VER == 1200) && defined(_mm_free)) + #undef COMPILER_MSVC + #define COMPILER_MSVC COMPILER_MSVC_VS6PP + #endif + + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + typedef signed int int32_t; + typedef unsigned __int64 uint64_t; + typedef signed __int64 int64_t; + + typedef uint16_t fpu_control_t; + + #define ROTL32(a,b) _rotl(a,b) + #define ROTR32(a,b) _rotr(a,b) + #define ROTL64(a,b) _rotl64(a,b) + #define ROTR64(a,b) _rotr64(a,b) + + #define NOINLINE __declspec(noinline) + #define INLINE __forceinline + #define FASTCALL __fastcall + #define CDECL __cdecl + #define STDCALL __stdcall + #define NAKED __declspec(naked) + + #if defined(_DEBUG) + #define mul32x32_64(a,b) (((uint64_t)(a))*(b)) + #define mul32x32_64s(a,b) (((int64_t)(a))*(b)) + #else + #define mul32x32_64(a,b) __emulu(a,b) + #define mul32x32_64s(a,b) __emul(a,b) + #endif +#endif +/* 0100-compiler-999.h */ + +#define OPTIONAL_INLINE /* config */ +#if defined(OPTIONAL_INLINE) + #undef OPTIONAL_INLINE + #define OPTIONAL_INLINE INLINE +#else + #define OPTIONAL_INLINE +#endif + +#define Preprocessor_ToString(s) #s +#define Stringify(s) Preprocessor_ToString(s) + +#include <stdio.h> +#include <string.h> + +/* 0200-cpu-100-alpha.h */ + +#if defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA) + #define CPU_ALPHA +#endif + +/* 0200-cpu-100-hppa.h */ + +#if defined(__hppa__) || defined(__hppa) + #define CPU_HPPA +#endif + +/* 0200-cpu-100-intel.h */ + +#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__ ) || defined(_M_X64) + #define CPU_X86_64 +#elif defined(__i586__) || defined(__i686__) || (defined(_M_IX86) && (_M_IX86 >= 500)) + #define CPU_X86 500 +#elif defined(__i486__) || (defined(_M_IX86) && (_M_IX86 >= 400)) + #define CPU_X86 400 +#elif defined(__i386__) || (defined(_M_IX86) && (_M_IX86 >= 300)) || defined(__X86__) || defined(_X86_) || defined(__I86__) + #define CPU_X86 300 +#elif defined(__ia64__) || defined(_IA64) || defined(__IA64__) || defined(_M_IA64) || defined(__ia64) + #define CPU_IA64 +#endif + +/* 0200-cpu-100-ppc.h */ + +#if defined(powerpc) || defined(__PPC__) || defined(__ppc__) || defined(_ARCH_PPC) || defined(__powerpc__) || defined(__powerpc) || defined(POWERPC) || defined(_M_PPC) + #define CPU_PPC + #if defined(_ARCH_PWR7) + #define CPU_POWER7 + #elif defined(__64BIT__) + #define CPU_PPC64 + #else + #define CPU_PPC32 + #endif +#endif + +/* 0200-cpu-100-sparc.h */ + +#if defined(__sparc__) || defined(__sparc) || defined(__sparcv9) + #define CPU_SPARC + #if defined(__sparcv9) + #define CPU_SPARC64 + #else + #define CPU_SPARC32 + #endif +#endif + +/* 0200-cpu-200-bits.h */ + +#if defined(CPU_X86_64) || defined(CPU_IA64) || defined(CPU_SPARC64) || defined(__64BIT__) || defined(__LP64__) || defined(_LP64) || (defined(_MIPS_SZLONG) && (_MIPS_SZLONG == 64)) + #define CPU_64BITS + + #undef FASTCALL + #undef CDECL + #undef STDCALL + + #define FASTCALL + #define CDECL + #define STDCALL +#endif + +/* 0200-cpu-200-endian.h */ + +#if ((defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || \ + (defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && (BYTE_ORDER == LITTLE_ENDIAN)) || \ + (defined(CPU_X86) || defined(CPU_X86_64)) || \ + (defined(vax) || defined(MIPSEL) || defined(_MIPSEL))) +#define CPU_LE +#elif ((defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && (__BYTE_ORDER == __BIG_ENDIAN)) || \ + (defined(BYTE_ORDER) && defined(BIG_ENDIAN) && (BYTE_ORDER == BIG_ENDIAN)) || \ + (defined(CPU_SPARC) || defined(CPU_PPC) || defined(mc68000) || defined(sel)) || defined(_MIPSEB)) +#define CPU_BE +#else + /* unknown endian! */ +#endif + +#if defined(__s390__) || defined(__zarch__) || defined(__SYSC_ZARCH__) +# define CPU_Z390 +#endif + +/* 0400-endian-100-be.h */ + +#if defined(CPU_BE) && !defined(CPU_ALIGNED_ACCESS_REQUIRED) + static INLINE uint16_t fU8TO16_BE_FAST(const uint8_t *p) { return *(const uint16_t *)p; } + static INLINE uint32_t fU8TO32_BE_FAST(const uint8_t *p) { return *(const uint32_t *)p; } + static INLINE uint64_t fU8TO64_BE_FAST(const uint8_t *p) { return *(const uint64_t *)p; } + static INLINE void fU16TO8_BE_FAST(uint8_t *p, const uint16_t v) { *(uint16_t *)p = v; } + static INLINE void fU32TO8_BE_FAST(uint8_t *p, const uint32_t v) { *(uint32_t *)p = v; } + static INLINE void fU64TO8_BE_FAST(uint8_t *p, const uint64_t v) { *(uint64_t *)p = v; } + + #define U8TO16_BE(p) fU8TO16_BE_FAST(p) + #define U8TO32_BE(p) fU8TO32_BE_FAST(p) + #define U8TO64_BE(p) fU8TO64_BE_FAST(p) + #define U16TO8_BE(p, v) fU16TO8_BE_FAST(p, v) + #define U32TO8_BE(p, v) fU32TO8_BE_FAST(p, v) + #define U64TO8_BE(p, v) fU64TO8_BE_FAST(p, v) +#endif + +/* 0400-endian-100-le.h */ + +#if defined(CPU_LE) && !defined(CPU_ALIGNED_ACCESS_REQUIRED) + static INLINE uint16_t fU8TO16_LE_FAST(const uint8_t *p) { return *(const uint16_t *)p; } + static INLINE uint32_t fU8TO32_LE_FAST(const uint8_t *p) { return *(const uint32_t *)p; } + static INLINE uint64_t fU8TO64_LE_FAST(const uint8_t *p) { return *(const uint64_t *)p; } + static INLINE void fU16TO8_LE_FAST(uint8_t *p, const uint16_t v) { *(uint16_t *)p = v; } + static INLINE void fU32TO8_LE_FAST(uint8_t *p, const uint32_t v) { *(uint32_t *)p = v; } + static INLINE void fU64TO8_LE_FAST(uint8_t *p, const uint64_t v) { *(uint64_t *)p = v; } + + #define U8TO16_LE(p) fU8TO16_LE_FAST(p) + #define U8TO32_LE(p) fU8TO32_LE_FAST(p) + #define U8TO64_LE(p) fU8TO64_LE_FAST(p) + #define U16TO8_LE(p, v) fU16TO8_LE_FAST(p, v) + #define U32TO8_LE(p, v) fU32TO8_LE_FAST(p, v) + #define U64TO8_LE(p, v) fU64TO8_LE_FAST(p, v) +#endif + +/* 0400-endian-100-ppc.h */ + +#if defined(CPU_PPC) + #if defined(CPU_POWER7) + static INLINE uint64_t fU8TO64_LE_FAST(const uint8_t *p) { + uint64_d d; + __asm__ ("ldbrx %0,0,%1" : "=r"(d) : "r"(p)) + return d; + } + + static INLINE void + fU64TO8_LE_FAST(uint8_t *p, const uint64_t v) { + __asm__ ("stdbrx %1,0,%0" : : "r"(p), "r"(v)) + } + #elif defined(CPU_PPC64) + static INLINE uint64_t + fU8TO64_LE_FAST(const uint8_t *p) { + uint64_t *s4, h, d; + __asm__ ("addi %0,%3,4;lwbrx %1,0,%3;lwbrx %2,0,%0;rldimi %1,%2,32,0" : "+r"(s4), "=r"(d), "=r"(h) : "b"(p)); + return d; + } + + static INLINE void + fU64TO8_LE_FAST(uint8_t *p, const uint64_t v) { + uint64_t *s4, h = v >> 32; + __asm__ ("addi %0,%3,4;stwbrx %1,0,%3;stwbrx %2,0,%0" : "+r"(s4) : "r"(v), "r"(h), "b"(p)); + } + #elif defined(CPU_PPC32) + static INLINE uint64_t + fU8TO64_LE_FAST(const uint8_t *p) { + uint32_t *s4, h, l; + __asm__ ("addi %0,%3,4;lwbrx %1,0,%3;lwbrx %2,0,%0" : "+r"(s4), "=r"(l), "=r"(h) : "b"(p));\ + return ((uint64_t)h << 32) | l; + } + + static INLINE void + fU64TO8_LE_FAST(uint8_t *p, const uint64_t v) { + uint32_t *s4, h = (uint32_t)(v >> 32), l = (uint32_t)(v & (uint32_t)0xffffffff); + __asm__ ("addi %0,%3,4;stwbrx %1,0,%3;stwbrx %2,0,%0" : "+r"(s4) : "r"(l), "r"(h), "b"(p)); + } + #endif + + static INLINE uint32_t + fU8TO32_LE_FAST(const uint8_t *p) { + uint32_t d; + __asm__ ("lwbrx %0,0,%1" : "=r"(d) : "r"(p)); + return d; + } + + static INLINE void + fU32TO8_LE_FAST(uint8_t *p, const uint32_t v) { + __asm__ __volatile__("stwbrx %1,0,%0" : : "r"(p), "r"(v)); + } + + #define U8TO32_LE(p) fU8TO32_LE_FAST(p) + #define U8TO64_LE(p) fU8TO64_LE_FAST(p) + #define U32TO8_LE(p, v) fU32TO8_LE_FAST(p, v) + #define U64TO8_LE(p, v) fU64TO8_LE_FAST(p, v) +#endif + +/* 0400-endian-100-sparc.h */ + +#if defined(CPU_SPARC) + #if defined(CPU_SPARC64) + static INLINE uint64_t + fU8TO64_LE_FAST(const uint8_t *p) { + uint64_d d; + __asm__ ("ldxa [%1]0x88,%0" : "=r"(d) : "r"(p)); + return d; + } + + static INLINE void + fU64TO8_LE_FAST(uint8_t *p, const uint64_t v) { + __asm__ ("stxa %0,[%1]0x88" : : "r"(v), "r"(p)); + } + #else + static INLINE uint64_t + fU8TO64_LE_FAST(const uint8_t *p) { + uint32_t *s4, h, l; + __asm__ ("add %3,4,%0\n\tlda [%3]0x88,%1\n\tlda [%0]0x88,%2" : "+r"(s4), "=r"(l), "=r"(h) : "r"(p)); + return ((uint64_t)h << 32) | l; + } + + static INLINE void + fU64TO8_LE_FAST(uint8_t *p, const uint64_t v) { + uint32_t *s4, h = (uint32_t)(v >> 32), l = (uint32_t)(v & (uint32_t)0xffffffff); + __asm__ ("add %3,4,%0\n\tsta %1,[%3]0x88\n\tsta %2,[%0]0x88" : "+r"(s4) : "r"(l), "r"(h), "r"(p)); + } + #endif + + static INLINE uint32_t + fU8TO32_LE_FAST(const uint8_t *p) { + uint32_t d; + __asm__ ("lda [%1]0x88,%0" : "=r"(d) : "r"(p)); + return d; + } + + static INLINE void + fU32TO8_LE_FAST(uint8_t *p, const uint32_t v) { + __asm__ ("sta %0,[%1]0x88" : : "r"(p), "r"(v)); + } + + #define U8TO32_LE(p) fU8TO32_LE_FAST(p) + #define U8TO64_LE(p) fU8TO64_LE_FAST(p) + #define U32TO8_LE(p, v) fU32TO8_LE_FAST(p, v) + #define U64TO8_LE(p, v) fU64TO8_LE_FAST(p, v) +#endif + +/* 0400-endian-100-x86.h */ + +#if (((defined(CPU_X86) && (CPU_X86 >= 400)) || defined(CPU_X86_64)) && (defined(COMPILER_MSVC) || defined(COMPILER_GCC))) + #if defined(COMPILER_MSVC) + static INLINE uint16_t U16_SWAP_FAST(uint16_t v) { return _byteswap_ushort(v); } + static INLINE uint32_t U32_SWAP_FAST(uint32_t v) { return _byteswap_ulong(v); } + static INLINE uint64_t U64_SWAP_FAST(uint64_t v) { return _byteswap_uint64(v); } + #else + static INLINE uint16_t U16_SWAP_FAST(uint16_t v) { __asm__("rorw $8,%0" : "+r" (v)); return v; } + static INLINE uint32_t U32_SWAP_FAST(uint32_t v) { __asm__("bswap %0" : "+r" (v)); return v; } + #if defined(CPU_X86_64) + static INLINE uint64_t U64_SWAP_FAST(uint64_t v) { __asm__("bswap %0" : "+r" (v)); return v; } + #else + static INLINE uint64_t U64_SWAP_FAST(uint64_t v) { + uint32_t lo = U32_SWAP_FAST((uint32_t)(v)), hi = U32_SWAP_FAST((uint32_t)(v >> 32)); + return ((uint64_t)lo << 32) | hi; + } + #endif + #endif + + + static INLINE uint16_t fU8TO16_BE_FAST(const uint8_t *p) { return U16_SWAP_FAST(*(const uint16_t *)p); } + static INLINE uint32_t fU8TO32_BE_FAST(const uint8_t *p) { return U32_SWAP_FAST(*(const uint32_t *)p); } + static INLINE uint64_t fU8TO64_BE_FAST(const uint8_t *p) { return U64_SWAP_FAST(*(const uint64_t *)p); } + static INLINE void fU16TO8_BE_FAST(uint8_t *p, const uint16_t v) { *(uint16_t *)p = U16_SWAP_FAST(v); } + static INLINE void fU32TO8_BE_FAST(uint8_t *p, const uint32_t v) { *(uint32_t *)p = U32_SWAP_FAST(v); } + static INLINE void fU64TO8_BE_FAST(uint8_t *p, const uint64_t v) { *(uint64_t *)p = U64_SWAP_FAST(v); } + + #define U16_SWAP(p) U16_SWAP_FAST(p) + #define U32_SWAP(p) U32_SWAP_FAST(p) + #define U64_SWAP(p) U64_SWAP_FAST(p) + #define U8TO16_BE(p) fU8TO16_BE_FAST(p) + #define U8TO32_BE(p) fU8TO32_BE_FAST(p) + #define U8TO64_BE(p) fU8TO64_BE_FAST(p) + #define U16TO8_BE(p, v) fU16TO8_BE_FAST(p, v) + #define U32TO8_BE(p, v) fU32TO8_BE_FAST(p, v) + #define U64TO8_BE(p, v) fU64TO8_BE_FAST(p, v) +#endif + +/* 0400-endian-999-generic-be.h */ + +#if !defined(U8TO16_BE) + static INLINE uint16_t + fU8TO16_BE_SLOW(const uint8_t *p) { + return + (((uint16_t)(p[0]) << 8) | + ((uint16_t)(p[1]) )); + } + + #define U8TO16_BE(p) fU8TO16_BE_SLOW(p) +#endif + + +#if !defined(U8TO32_BE) + static INLINE uint32_t + fU8TO32_BE_SLOW(const uint8_t *p) { + return + (((uint32_t)(p[0]) << 24) | + ((uint32_t)(p[1]) << 16) | + ((uint32_t)(p[2]) << 8) | + ((uint32_t)(p[3]) )); + } + + #define U8TO32_BE(p) fU8TO32_BE_SLOW(p) +#endif + +#if !defined(U8TO64_BE) + static INLINE uint64_t + fU8TO64_BE_SLOW(const uint8_t *p) { + return + (((uint64_t)(p[0]) << 56) | + ((uint64_t)(p[1]) << 48) | + ((uint64_t)(p[2]) << 40) | + ((uint64_t)(p[3]) << 32) | + ((uint64_t)(p[4]) << 24) | + ((uint64_t)(p[5]) << 16) | + ((uint64_t)(p[6]) << 8) | + ((uint64_t)(p[7]) )); + } + + #define U8TO64_BE(p) fU8TO64_BE_SLOW(p) +#endif + +#if !defined(U16TO8_BE) + static INLINE void + fU16TO8_BE_SLOW(uint8_t *p, const uint16_t v) { + p[0] = (uint8_t)(v >> 8); + p[1] = (uint8_t)(v ); + } + + #define U16TO8_BE(p, v) fU16TO8_BE_SLOW(p, v) +#endif + +#if !defined(U32TO8_BE) + static INLINE void + fU32TO8_BE_SLOW(uint8_t *p, const uint32_t v) { + p[0] = (uint8_t)(v >> 24); + p[1] = (uint8_t)(v >> 16); + p[2] = (uint8_t)(v >> 8); + p[3] = (uint8_t)(v ); + } + + #define U32TO8_BE(p, v) fU32TO8_BE_SLOW(p, v) +#endif + +#if !defined(U64TO8_BE) + static INLINE void + fU64TO8_BE_SLOW(uint8_t *p, const uint64_t v) { + p[0] = (uint8_t)(v >> 56); + p[1] = (uint8_t)(v >> 48); + p[2] = (uint8_t)(v >> 40); + p[3] = (uint8_t)(v >> 32); + p[4] = (uint8_t)(v >> 24); + p[5] = (uint8_t)(v >> 16); + p[6] = (uint8_t)(v >> 8); + p[7] = (uint8_t)(v ); + } + + #define U64TO8_BE(p, v) fU64TO8_BE_SLOW(p, v) +#endif + +/* 0400-endian-999-generic-le.h */ + +#if !defined(U8TO16_LE) + static INLINE uint16_t + fU8TO16_LE_SLOW(const uint8_t *p) { + return + (((uint16_t)(p[0]) ) | + ((uint16_t)(p[1]) << 8)); + } + + #define U8TO16_LE(p) fU8TO16_LE_SLOW(p) +#endif + +#if !defined(U8TO32_LE) + static INLINE uint32_t + fU8TO32_LE_SLOW(const uint8_t *p) { + return + (((uint32_t)(p[0]) ) | + ((uint32_t)(p[1]) << 8) | + ((uint32_t)(p[2]) << 16) | + ((uint32_t)(p[3]) << 24)); + } + + #define U8TO32_LE(p) fU8TO32_LE_SLOW(p) +#endif + + +#if !defined(U8TO64_LE) + static INLINE uint64_t + fU8TO64_LE_SLOW(const uint8_t *p) { + return + (((uint64_t)(p[0]) ) | + ((uint64_t)(p[1]) << 8) | + ((uint64_t)(p[2]) << 16) | + ((uint64_t)(p[3]) << 24) | + ((uint64_t)(p[4]) << 32) | + ((uint64_t)(p[5]) << 40) | + ((uint64_t)(p[6]) << 48) | + ((uint64_t)(p[7]) << 56)); + } + + #define U8TO64_LE(p) fU8TO64_LE_SLOW(p) +#endif + +#if !defined(U16TO8_LE) + static INLINE void + fU16TO8_LE_SLOW(uint8_t *p, const uint16_t v) { + p[0] = (uint8_t)(v ); + p[1] = (uint8_t)(v >> 8); + } + + #define U16TO8_LE(p, v) fU16TO8_LE_SLOW(p, v) +#endif + +#if !defined(U32TO8_LE) + static INLINE void + fU32TO8_LE_SLOW(uint8_t *p, const uint32_t v) { + p[0] = (uint8_t)(v ); + p[1] = (uint8_t)(v >> 8); + p[2] = (uint8_t)(v >> 16); + p[3] = (uint8_t)(v >> 24); + } + + #define U32TO8_LE(p, v) fU32TO8_LE_SLOW(p, v) +#endif + +#if !defined(U64TO8_LE) + static INLINE void + fU64TO8_LE_SLOW(uint8_t *p, const uint64_t v) { + p[0] = (uint8_t)(v ); + p[1] = (uint8_t)(v >> 8); + p[2] = (uint8_t)(v >> 16); + p[3] = (uint8_t)(v >> 24); + p[4] = (uint8_t)(v >> 32); + p[5] = (uint8_t)(v >> 40); + p[6] = (uint8_t)(v >> 48); + p[7] = (uint8_t)(v >> 56); + } + + #define U64TO8_LE(p, v) fU64TO8_LE_SLOW(p, v) +#endif + +/* 0400-endian-999-generic-swap.h */ + +#if !defined(U16_SWAP) + static INLINE uint16_t + fU16_SWAP_SLOW(uint16_t v) { + v = (v << 8) | (v >> 8); + return v; + } + + #define U16_SWAP(p) fU16_SWAP_SLOW(p) +#endif + +#if !defined(U32_SWAP) + static INLINE uint32_t + fU32_SWAP_SLOW(uint32_t v) { + v = ((v << 8) & 0xFF00FF00) | ((v >> 8) & 0xFF00FF); + v = (v << 16) | (v >> 16); + return v; + } + + #define U32_SWAP(p) fU32_SWAP_SLOW(p) +#endif + +#if !defined(U64_SWAP) + static INLINE uint64_t + fU64_SWAP_SLOW(uint64_t v) { + v = ((v << 8) & 0xFF00FF00FF00FF00ull) | ((v >> 8) & 0x00FF00FF00FF00FFull); + v = ((v << 16) & 0xFFFF0000FFFF0000ull) | ((v >> 16) & 0x0000FFFF0000FFFFull); + v = (v << 32) | (v >> 32); + return v; + } + + #define U64_SWAP(p) fU64_SWAP_SLOW(p) +#endif + +/* 0400-uint128-000.h */ + +/* 0400-uint128-100-clang.h */ + +#if defined(CPU_64BITS) && (defined(COMPILER_CLANG) && (COMPILER_CLANG >= 30100)) + #define HAVE_NATIVE_UINT128 + typedef unsigned __int128 uint128_t; +#endif + +/* 0400-uint128-100-gcc.h */ + +#if (defined(CPU_64BITS) && defined(COMPILER_GCC)) && (!defined(COMPILER_CLANG) || (COMPILER_CLANG < 30100)) + #if defined(__SIZEOF_INT128__) + #define HAVE_NATIVE_UINT128 + typedef unsigned __int128 uint128_t; + #elif (COMPILER_GCC >= 40400) + #define HAVE_NATIVE_UINT128 + typedef unsigned uint128_t __attribute__((mode(TI))); + #endif +#endif + +/* 0400-uint128-100-msvc.h */ + +#if defined(CPU_64BITS) && defined(COMPILER_MSVC) + #define HAVE_UINT128 + + typedef struct uint128 { + uint64_t lo, hi; + } uint128_t; + + static INLINE uint128_t + mul64x64_128(uint64_t a, uint64_t b) { + uint128_t v; + v.lo = _umul128(a, b, &v.hi); + return v; + } + + static INLINE uint64_t + shr128_pair(uint64_t hi, uint64_t lo, const int shift) { + return __shiftright128(lo, hi, shift); + } + + static INLINE uint64_t + shr128(uint128_t v, const int shift) { + return __shiftright128(v.lo, v.hi, shift); + } + + static INLINE uint128_t + add128(uint128_t a, uint128_t b) { + uint64_t t = a.lo; + a.lo += b.lo; + a.hi += b.hi + (a.lo < t); + return a; + } + + static INLINE uint128_t + add128_64(uint128_t a, uint64_t b) { + uint64_t t = a.lo; + a.lo += b; + a.hi += (a.lo < t); + return a; + } + + static INLINE uint64_t + lo128(uint128_t a) { + return a.lo; + } + + static INLINE uint64_t + hi128(uint128_t a) { + return a.hi; + } +#endif + +/* 0400-uint128-999.h */ + +#if defined(HAVE_NATIVE_UINT128) + #define HAVE_UINT128 + + static INLINE uint128_t + mul64x64_128(uint64_t a, uint64_t b) { + return (uint128_t)a * b; + } + + static INLINE uint64_t + shr128(uint128_t v, const int shift) { + return (uint64_t)(v >> shift); + } + + static INLINE uint64_t + shr128_pair(uint64_t hi, uint64_t lo, const int shift) { + return (uint64_t)((((uint128_t)hi << 64) | lo) >> shift); + } + + static INLINE uint128_t + add128(uint128_t a, uint128_t b) { + return a + b; + } + + static INLINE uint128_t + add128_64(uint128_t a, uint64_t b) { + return a + b; + } + + static INLINE uint64_t + lo128(uint128_t a) { + return (uint64_t)a; + } + + static INLINE uint64_t + hi128(uint128_t a) { + return (uint64_t)(a >> 64); + } +#endif + +#endif /* PORTABLE_JANE_H */ + diff --git a/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c new file mode 100644 index 00000000..af9054b5 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c @@ -0,0 +1,10 @@ +#include "api.h" +#include "crypto_onetimeauth_poly1305_donna.h" +#include "crypto_verify_16.h" + +int crypto_onetimeauth_verify(const unsigned char *h,const unsigned char *in,unsigned long long inlen,const unsigned char *k) +{ + unsigned char correct[16]; + crypto_onetimeauth(correct,in,inlen,k); + return crypto_verify_16(h,correct); +} diff --git a/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c new file mode 100644 index 00000000..15d4fc36 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c @@ -0,0 +1,42 @@ + +#include <sys/types.h> + +#include <assert.h> +#include <inttypes.h> +#include <limits.h> + +#include "crypto_onetimeauth_poly1305.h" +#include "crypto_onetimeauth_poly1305_donna.h" + +static const crypto_onetimeauth_poly1305_implementation *implementation = + &crypto_onetimeauth_poly1305_donna_implementation; + +int +crypto_onetimeauth_poly1305_set_implementation(crypto_onetimeauth_poly1305_implementation *impl) +{ + implementation = impl; + + return 0; +} + +const char * +crypto_onetimeauth_poly1305_implementation_name(void) +{ + return implementation->implementation_name(); +} + +int +crypto_onetimeauth_poly1305(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + return implementation->onetimeauth(out, in, inlen, k); +} + +int +crypto_onetimeauth_poly1305_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) +{ + return implementation->onetimeauth_verify(h, in, inlen, k); +} diff --git a/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c new file mode 100644 index 00000000..bd36a1f6 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c @@ -0,0 +1,16 @@ +#include "crypto_onetimeauth_poly1305.h" + +size_t +crypto_onetimeauth_poly1305_bytes(void) { + return crypto_onetimeauth_poly1305_BYTES; +} + +size_t +crypto_onetimeauth_poly1305_keybytes(void) { + return crypto_onetimeauth_poly1305_KEYBYTES; +} + +const char * +crypto_onetimeauth_poly1305_primitive(void) { + return "poly1305"; +} diff --git a/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c new file mode 100644 index 00000000..6e242d22 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c @@ -0,0 +1,147 @@ + +#include <stdlib.h> +#include <string.h> +#include "crypto_hash_sha256.h" +#include "crypto_onetimeauth.h" +#include "crypto_onetimeauth_poly1305.h" +#include "crypto_onetimeauth_poly1305_donna.h" +#include "crypto_onetimeauth_poly1305_53.h" +#include "utils.h" + +#define MAXTEST_BYTES 10000 +#define CHECKSUM_BYTES 4096 + +#define CHECKSUM "e836d5ca58cf673fca2b4910f23f3990" + +static char checksum[crypto_onetimeauth_BYTES * 2U + 1U]; + +static unsigned char *h, *h_; +static unsigned char *m, *m_; +static unsigned char *k, *k_; +static unsigned char *h2, *h2_; +static unsigned char *m2, *m2_; +static unsigned char *k2, *k2_; + +static int +allocate(void) +{ + h = _sodium_alignedcalloc(&h_, crypto_onetimeauth_BYTES); + m = _sodium_alignedcalloc(&m_, MAXTEST_BYTES); + k = _sodium_alignedcalloc(&k_, crypto_onetimeauth_KEYBYTES); + h2 = _sodium_alignedcalloc(&h2_, crypto_onetimeauth_BYTES); + m2 = _sodium_alignedcalloc(&m2_, MAXTEST_BYTES + crypto_onetimeauth_BYTES); + k2 = _sodium_alignedcalloc(&k2_, crypto_onetimeauth_KEYBYTES + + crypto_onetimeauth_BYTES); + + return -!(h && m && k && h2 && m2 && k2); +} + +static void +deallocate(void) +{ + free(h_); + free(m_); + free(k_); + free(h2_); + free(m2_); + free(k2_); +} + +static const char * +checksum_compute(void) +{ + long long i; + long long j; + + for (i = 0;i < CHECKSUM_BYTES;++i) { + long long mlen = i; + long long klen = crypto_onetimeauth_KEYBYTES; + long long hlen = crypto_onetimeauth_BYTES; + + for (j = -16;j < 0;++j) h[j] = rand(); + for (j = -16;j < 0;++j) k[j] = rand(); + for (j = -16;j < 0;++j) m[j] = rand(); + for (j = hlen;j < hlen + 16;++j) h[j] = rand(); + for (j = klen;j < klen + 16;++j) k[j] = rand(); + for (j = mlen;j < mlen + 16;++j) m[j] = rand(); + for (j = -16;j < hlen + 16;++j) h2[j] = h[j]; + for (j = -16;j < klen + 16;++j) k2[j] = k[j]; + for (j = -16;j < mlen + 16;++j) m2[j] = m[j]; + + if (crypto_onetimeauth(h,m,mlen,k) != 0) return "crypto_onetimeauth returns nonzero"; + + for (j = -16;j < klen + 16;++j) if (k[j] != k2[j]) return "crypto_onetimeauth overwrites k"; + for (j = -16;j < mlen + 16;++j) if (m[j] != m2[j]) return "crypto_onetimeauth overwrites m"; + for (j = -16;j < 0;++j) if (h[j] != h2[j]) return "crypto_onetimeauth writes before output"; + for (j = hlen;j < hlen + 16;++j) if (h[j] != h2[j]) return "crypto_onetimeauth writes after output"; + + for (j = -16;j < 0;++j) h[j] = rand(); + for (j = -16;j < 0;++j) k[j] = rand(); + for (j = -16;j < 0;++j) m[j] = rand(); + for (j = hlen;j < hlen + 16;++j) h[j] = rand(); + for (j = klen;j < klen + 16;++j) k[j] = rand(); + for (j = mlen;j < mlen + 16;++j) m[j] = rand(); + for (j = -16;j < hlen + 16;++j) h2[j] = h[j]; + for (j = -16;j < klen + 16;++j) k2[j] = k[j]; + for (j = -16;j < mlen + 16;++j) m2[j] = m[j]; + + if (crypto_onetimeauth(m2,m2,mlen,k) != 0) return "crypto_onetimeauth returns nonzero"; + for (j = 0;j < hlen;++j) if (m2[j] != h[j]) return "crypto_onetimeauth does not handle m overlap"; + for (j = 0;j < hlen;++j) m2[j] = m[j]; + if (crypto_onetimeauth(k2,m2,mlen,k2) != 0) return "crypto_onetimeauth returns nonzero"; + for (j = 0;j < hlen;++j) if (k2[j] != h[j]) return "crypto_onetimeauth does not handle k overlap"; + for (j = 0;j < hlen;++j) k2[j] = k[j]; + + if (crypto_onetimeauth_verify(h,m,mlen,k) != 0) return "crypto_onetimeauth_verify returns nonzero"; + + for (j = -16;j < hlen + 16;++j) if (h[j] != h2[j]) return "crypto_onetimeauth overwrites h"; + for (j = -16;j < klen + 16;++j) if (k[j] != k2[j]) return "crypto_onetimeauth overwrites k"; + for (j = -16;j < mlen + 16;++j) if (m[j] != m2[j]) return "crypto_onetimeauth overwrites m"; + + crypto_hash_sha256(h2,h,hlen); + for (j = 0;j < klen;++j) k[j] ^= h2[j % 32]; + if (crypto_onetimeauth(h,m,mlen,k) != 0) return "crypto_onetimeauth returns nonzero"; + if (crypto_onetimeauth_verify(h,m,mlen,k) != 0) return "crypto_onetimeauth_verify returns nonzero"; + + crypto_hash_sha256(h2,h,hlen); + for (j = 0;j < mlen;++j) m[j] ^= h2[j % 32]; + m[mlen] = h2[0]; + } + if (crypto_onetimeauth(h,m,CHECKSUM_BYTES,k) != 0) return "crypto_onetimeauth returns nonzero"; + if (crypto_onetimeauth_verify(h,m,CHECKSUM_BYTES,k) != 0) return "crypto_onetimeauth_verify returns nonzero"; + + sodium_bin2hex(checksum, sizeof checksum, h, crypto_onetimeauth_BYTES); + + return NULL; +} + +crypto_onetimeauth_poly1305_implementation * +crypto_onetimeauth_pick_best_implementation(void) +{ + crypto_onetimeauth_poly1305_implementation *implementations[] = { +#ifdef HAVE_FENV_H + &crypto_onetimeauth_poly1305_53_implementation, +#endif + &crypto_onetimeauth_poly1305_donna_implementation, + NULL + }; + const char *err; + size_t i = (size_t) 0U; + + do { + if (crypto_onetimeauth_poly1305_set_implementation + (implementations[i]) != 0) { + continue; + } + if (allocate() != 0) { + return NULL; + } + err = checksum_compute(); + deallocate(); + if (err == NULL && strcmp(checksum, CHECKSUM) == 0) { + break; + } + } while (implementations[++i] != NULL); + + return implementations[i]; +} diff --git a/src/libsodium/src/libsodium/crypto_scalarmult/crypto_scalarmult.c b/src/libsodium/src/libsodium/crypto_scalarmult/crypto_scalarmult.c new file mode 100644 index 00000000..25d7397f --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_scalarmult/crypto_scalarmult.c @@ -0,0 +1,34 @@ + +#include "crypto_scalarmult.h" + +size_t +crypto_scalarmult_bytes(void) +{ + return crypto_scalarmult_BYTES; +} + +size_t +crypto_scalarmult_scalarbytes(void) +{ + return crypto_scalarmult_SCALARBYTES; +} + +const char * +crypto_scalarmult_primitive(void) +{ + return crypto_scalarmult_PRIMITIVE; +} + +int +crypto_scalarmult_base(unsigned char *q, const unsigned char *n) +{ + return crypto_scalarmult_curve25519_base(q, n); +} + +int +crypto_scalarmult(unsigned char *q, const unsigned char *n, + const unsigned char *p) +{ + return crypto_scalarmult_curve25519(q, n, p); +} + diff --git a/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/api.h b/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/api.h new file mode 100644 index 00000000..373c6aa8 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/api.h @@ -0,0 +1,9 @@ + +#include "crypto_scalarmult_curve25519.h" + +#define crypto_scalarmult_curve25519_implementation_name \ + crypto_scalarmult_curve25519_donna_c64_implementation_name + +#define crypto_scalarmult crypto_scalarmult_curve25519_donna_c64 +#define crypto_scalarmult_base crypto_scalarmult_curve25519_donna_c64_base + diff --git a/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c b/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c new file mode 100644 index 00000000..58a3f1c9 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c @@ -0,0 +1,13 @@ + +#include "api.h" + +#ifdef HAVE_TI_MODE + +static const unsigned char basepoint[32] = {9}; + +int crypto_scalarmult_base(unsigned char *q,const unsigned char *n) +{ + return crypto_scalarmult(q, n, basepoint); +} + +#endif diff --git a/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c b/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c new file mode 100644 index 00000000..c10b9ad7 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c @@ -0,0 +1,426 @@ +/* Copyright 2008, Google Inc. + * All rights reserved. + * + * Code released into the public domain. + * + * curve25519-donna: Curve25519 elliptic curve, public key function + * + * http://code.google.com/p/curve25519-donna/ + * + * Adam Langley <agl@imperialviolet.org> + * Parts optimised by floodyberry + * Derived from public domain C code by Daniel J. Bernstein <djb@cr.yp.to> + * + * More information about curve25519 can be found here + * http://cr.yp.to/ecdh.html + * + * djb's sample implementation of curve25519 is written in a special assembly + * language called qhasm and uses the floating point registers. + * + * This is, almost, a clean room reimplementation from the curve25519 paper. It + * uses many of the tricks described therein. Only the crecip function is taken + * from the sample implementation. + */ + +#include <string.h> +#include <stdint.h> +#include "api.h" + +#ifdef HAVE_TI_MODE + +typedef uint8_t u8; +typedef uint64_t limb; +typedef limb felem[5]; +// This is a special gcc mode for 128-bit integers. It's implemented on 64-bit +// platforms only as far as I know. +typedef unsigned uint128_t __attribute__((mode(TI))); + +#undef force_inline +#define force_inline inline __attribute__((always_inline)) + +/* Sum two numbers: output += in */ +static force_inline void +fsum(limb *output, const limb *in) { + output[0] += in[0]; + output[1] += in[1]; + output[2] += in[2]; + output[3] += in[3]; + output[4] += in[4]; +} + +/* Find the difference of two numbers: output = in - output + * (note the order of the arguments!) + * + * Assumes that out[i] < 2**52 + * On return, out[i] < 2**55 + */ +static force_inline void +fdifference_backwards(felem out, const felem in) { + /* 152 is 19 << 3 */ + static const limb two54m152 = (((limb)1) << 54) - 152; + static const limb two54m8 = (((limb)1) << 54) - 8; + + out[0] = in[0] + two54m152 - out[0]; + out[1] = in[1] + two54m8 - out[1]; + out[2] = in[2] + two54m8 - out[2]; + out[3] = in[3] + two54m8 - out[3]; + out[4] = in[4] + two54m8 - out[4]; +} + +/* Multiply a number by a scalar: output = in * scalar */ +static force_inline void +fscalar_product(felem output, const felem in, const limb scalar) { + uint128_t a; + + a = ((uint128_t) in[0]) * scalar; + output[0] = ((limb)a) & 0x7ffffffffffff; + + a = ((uint128_t) in[1]) * scalar + ((limb) (a >> 51)); + output[1] = ((limb)a) & 0x7ffffffffffff; + + a = ((uint128_t) in[2]) * scalar + ((limb) (a >> 51)); + output[2] = ((limb)a) & 0x7ffffffffffff; + + a = ((uint128_t) in[3]) * scalar + ((limb) (a >> 51)); + output[3] = ((limb)a) & 0x7ffffffffffff; + + a = ((uint128_t) in[4]) * scalar + ((limb) (a >> 51)); + output[4] = ((limb)a) & 0x7ffffffffffff; + + output[0] += (a >> 51) * 19; +} + +/* Multiply two numbers: output = in2 * in + * + * output must be distinct to both inputs. The inputs are reduced coefficient + * form, the output is not. + * + * Assumes that in[i] < 2**55 and likewise for in2. + * On return, output[i] < 2**52 + */ +static force_inline void +fmul(felem output, const felem in2, const felem in) { + uint128_t t[5]; + limb r0,r1,r2,r3,r4,s0,s1,s2,s3,s4,c; + + r0 = in[0]; + r1 = in[1]; + r2 = in[2]; + r3 = in[3]; + r4 = in[4]; + + s0 = in2[0]; + s1 = in2[1]; + s2 = in2[2]; + s3 = in2[3]; + s4 = in2[4]; + + t[0] = ((uint128_t) r0) * s0; + t[1] = ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0; + t[2] = ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1; + t[3] = ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1; + t[4] = ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2; + + r4 *= 19; + r1 *= 19; + r2 *= 19; + r3 *= 19; + + t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2; + t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3; + t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4; + t[3] += ((uint128_t) r4) * s4; + + r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51); + t[1] += c; r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51); + t[2] += c; r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51); + t[3] += c; r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51); + t[4] += c; r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51); + r0 += c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff; + r1 += c; c = r1 >> 51; r1 = r1 & 0x7ffffffffffff; + r2 += c; + + output[0] = r0; + output[1] = r1; + output[2] = r2; + output[3] = r3; + output[4] = r4; +} + +static force_inline void +fsquare_times(felem output, const felem in, limb count) { + uint128_t t[5]; + limb r0,r1,r2,r3,r4,c; + limb d0,d1,d2,d4,d419; + + r0 = in[0]; + r1 = in[1]; + r2 = in[2]; + r3 = in[3]; + r4 = in[4]; + + do { + d0 = r0 * 2; + d1 = r1 * 2; + d2 = r2 * 2 * 19; + d419 = r4 * 19; + d4 = d419 * 2; + + t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3 )); + t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19)); + t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3 )); + t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419 )); + t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2 )); + + r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51); + t[1] += c; r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51); + t[2] += c; r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51); + t[3] += c; r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51); + t[4] += c; r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51); + r0 += c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff; + r1 += c; c = r1 >> 51; r1 = r1 & 0x7ffffffffffff; + r2 += c; + } while(--count); + + output[0] = r0; + output[1] = r1; + output[2] = r2; + output[3] = r3; + output[4] = r4; +} + +/* Take a little-endian, 32-byte number and expand it into polynomial form */ +static void +fexpand(limb *output, const u8 *in) { + output[0] = *((const uint64_t *)(in)) & 0x7ffffffffffff; + output[1] = (*((const uint64_t *)(in+6)) >> 3) & 0x7ffffffffffff; + output[2] = (*((const uint64_t *)(in+12)) >> 6) & 0x7ffffffffffff; + output[3] = (*((const uint64_t *)(in+19)) >> 1) & 0x7ffffffffffff; + output[4] = (*((const uint64_t *)(in+25)) >> 4) & 0x7ffffffffffff; +} + +/* Take a fully reduced polynomial form number and contract it into a + * little-endian, 32-byte array + */ +static void +fcontract(u8 *output, const felem input) { + uint128_t t[5]; + + t[0] = input[0]; + t[1] = input[1]; + t[2] = input[2]; + t[3] = input[3]; + t[4] = input[4]; + + t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff; + t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff; + t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff; + t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff; + t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff; + + t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff; + t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff; + t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff; + t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff; + t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff; + + /* now t is between 0 and 2^255-1, properly carried. */ + /* case 1: between 0 and 2^255-20. case 2: between 2^255-19 and 2^255-1. */ + + t[0] += 19; + + t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff; + t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff; + t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff; + t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff; + t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff; + + /* now between 19 and 2^255-1 in both cases, and offset by 19. */ + + t[0] += 0x8000000000000 - 19; + t[1] += 0x8000000000000 - 1; + t[2] += 0x8000000000000 - 1; + t[3] += 0x8000000000000 - 1; + t[4] += 0x8000000000000 - 1; + + /* now between 2^255 and 2^256-20, and offset by 2^255. */ + + t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff; + t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff; + t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff; + t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff; + t[4] &= 0x7ffffffffffff; + + *((uint64_t *)(output)) = t[0] | (t[1] << 51); + *((uint64_t *)(output+8)) = (t[1] >> 13) | (t[2] << 38); + *((uint64_t *)(output+16)) = (t[2] >> 26) | (t[3] << 25); + *((uint64_t *)(output+24)) = (t[3] >> 39) | (t[4] << 12); +} + +/* Input: Q, Q', Q-Q' + * Output: 2Q, Q+Q' + * + * x2 z3: long form + * x3 z3: long form + * x z: short form, destroyed + * xprime zprime: short form, destroyed + * qmqp: short form, preserved + */ +static void +fmonty(limb *x2, limb *z2, /* output 2Q */ + limb *x3, limb *z3, /* output Q + Q' */ + limb *x, limb *z, /* input Q */ + limb *xprime, limb *zprime, /* input Q' */ + const limb *qmqp /* input Q - Q' */) { + limb origx[5], origxprime[5], zzz[5], xx[5], zz[5], xxprime[5], + zzprime[5], zzzprime[5]; + + memcpy(origx, x, 5 * sizeof(limb)); + fsum(x, z); + fdifference_backwards(z, origx); // does x - z + + memcpy(origxprime, xprime, sizeof(limb) * 5); + fsum(xprime, zprime); + fdifference_backwards(zprime, origxprime); + fmul(xxprime, xprime, z); + fmul(zzprime, x, zprime); + memcpy(origxprime, xxprime, sizeof(limb) * 5); + fsum(xxprime, zzprime); + fdifference_backwards(zzprime, origxprime); + fsquare_times(x3, xxprime, 1); + fsquare_times(zzzprime, zzprime, 1); + fmul(z3, zzzprime, qmqp); + + fsquare_times(xx, x, 1); + fsquare_times(zz, z, 1); + fmul(x2, xx, zz); + fdifference_backwards(zz, xx); // does zz = xx - zz + fscalar_product(zzz, zz, 121665); + fsum(zzz, xx); + fmul(z2, zz, zzz); +} + +// ----------------------------------------------------------------------------- +// Maybe swap the contents of two limb arrays (@a and @b), each @len elements +// long. Perform the swap iff @swap is non-zero. +// +// This function performs the swap without leaking any side-channel +// information. +// ----------------------------------------------------------------------------- +static void +swap_conditional(limb a[5], limb b[5], limb iswap) { + unsigned i; + const limb swap = -iswap; + + for (i = 0; i < 5; ++i) { + const limb x = swap & (a[i] ^ b[i]); + a[i] ^= x; + b[i] ^= x; + } +} + +/* Calculates nQ where Q is the x-coordinate of a point on the curve + * + * resultx/resultz: the x coordinate of the resulting curve point (short form) + * n: a little endian, 32-byte number + * q: a point of the curve (short form) + */ +static void +cmult(limb *resultx, limb *resultz, const u8 *n, const limb *q) { + limb a[5] = {0}, b[5] = {1}, c[5] = {1}, d[5] = {0}; + limb *nqpqx = a, *nqpqz = b, *nqx = c, *nqz = d, *t; + limb e[5] = {0}, f[5] = {1}, g[5] = {0}, h[5] = {1}; + limb *nqpqx2 = e, *nqpqz2 = f, *nqx2 = g, *nqz2 = h; + + unsigned i, j; + + memcpy(nqpqx, q, sizeof(limb) * 5); + + for (i = 0; i < 32; ++i) { + u8 byte = n[31 - i]; + for (j = 0; j < 8; ++j) { + const limb bit = byte >> 7; + + swap_conditional(nqx, nqpqx, bit); + swap_conditional(nqz, nqpqz, bit); + fmonty(nqx2, nqz2, + nqpqx2, nqpqz2, + nqx, nqz, + nqpqx, nqpqz, + q); + swap_conditional(nqx2, nqpqx2, bit); + swap_conditional(nqz2, nqpqz2, bit); + + t = nqx; + nqx = nqx2; + nqx2 = t; + t = nqz; + nqz = nqz2; + nqz2 = t; + t = nqpqx; + nqpqx = nqpqx2; + nqpqx2 = t; + t = nqpqz; + nqpqz = nqpqz2; + nqpqz2 = t; + + byte <<= 1; + } + } + + memcpy(resultx, nqx, sizeof(limb) * 5); + memcpy(resultz, nqz, sizeof(limb) * 5); +} + + +// ----------------------------------------------------------------------------- +// Shamelessly copied from djb's code, tightened a little +// ----------------------------------------------------------------------------- +static void +crecip(felem out, const felem z) { + felem a,t0,b,c; + + /* 2 */ fsquare_times(a, z, 1); // a = 2 + /* 8 */ fsquare_times(t0, a, 2); + /* 9 */ fmul(b, t0, z); // b = 9 + /* 11 */ fmul(a, b, a); // a = 11 + /* 22 */ fsquare_times(t0, a, 1); + /* 2^5 - 2^0 = 31 */ fmul(b, t0, b); + /* 2^10 - 2^5 */ fsquare_times(t0, b, 5); + /* 2^10 - 2^0 */ fmul(b, t0, b); + /* 2^20 - 2^10 */ fsquare_times(t0, b, 10); + /* 2^20 - 2^0 */ fmul(c, t0, b); + /* 2^40 - 2^20 */ fsquare_times(t0, c, 20); + /* 2^40 - 2^0 */ fmul(t0, t0, c); + /* 2^50 - 2^10 */ fsquare_times(t0, t0, 10); + /* 2^50 - 2^0 */ fmul(b, t0, b); + /* 2^100 - 2^50 */ fsquare_times(t0, b, 50); + /* 2^100 - 2^0 */ fmul(c, t0, b); + /* 2^200 - 2^100 */ fsquare_times(t0, c, 100); + /* 2^200 - 2^0 */ fmul(t0, t0, c); + /* 2^250 - 2^50 */ fsquare_times(t0, t0, 50); + /* 2^250 - 2^0 */ fmul(t0, t0, b); + /* 2^255 - 2^5 */ fsquare_times(t0, t0, 5); + /* 2^255 - 21 */ fmul(out, t0, a); +} + +int +crypto_scalarmult(u8 *mypublic, const u8 *secret, const u8 *basepoint) { + limb bp[5], x[5], z[5], zmone[5]; + uint8_t e[32]; + int i; + + for (i = 0;i < 32;++i) e[i] = secret[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fexpand(bp, basepoint); + cmult(x, z, e, bp); + crecip(zmone, z); + fmul(z, x, zmone); + fcontract(mypublic, z); + return 0; +} + +#endif diff --git a/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/api.h b/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/api.h new file mode 100644 index 00000000..7c664421 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/api.h @@ -0,0 +1,8 @@ + +#include "crypto_scalarmult_curve25519.h" + +#define crypto_scalarmult_curve25519_implementation_name \ + crypto_scalarmult_curve25519_ref_implementation_name + +#define crypto_scalarmult crypto_scalarmult_curve25519_ref +#define crypto_scalarmult_base crypto_scalarmult_curve25519_ref_base diff --git a/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/base_curve25519_ref.c b/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/base_curve25519_ref.c new file mode 100644 index 00000000..6f58df2e --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/base_curve25519_ref.c @@ -0,0 +1,20 @@ +/* +version 20081011 +Matthew Dempsky +Public domain. +Derived from public domain code by D. J. Bernstein. +*/ + +#include "api.h" + +#ifndef HAVE_TI_MODE + +const unsigned char base[32] = {9}; + +int crypto_scalarmult_base(unsigned char *q, + const unsigned char *n) +{ + return crypto_scalarmult(q,n,base); +} + +#endif diff --git a/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c b/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c new file mode 100644 index 00000000..ba201955 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c @@ -0,0 +1,268 @@ +/* +version 20081011 +Matthew Dempsky +Public domain. +Derived from public domain code by D. J. Bernstein. +*/ + +#include "api.h" + +#ifndef HAVE_TI_MODE + +static void add(unsigned int out[32],const unsigned int a[32],const unsigned int b[32]) +{ + unsigned int j; + unsigned int u; + u = 0; + for (j = 0;j < 31;++j) { u += a[j] + b[j]; out[j] = u & 255; u >>= 8; } + u += a[31] + b[31]; out[31] = u; +} + +static void sub(unsigned int out[32],const unsigned int a[32],const unsigned int b[32]) +{ + unsigned int j; + unsigned int u; + u = 218; + for (j = 0;j < 31;++j) { + u += a[j] + 65280 - b[j]; + out[j] = u & 255; + u >>= 8; + } + u += a[31] - b[31]; + out[31] = u; +} + +static void squeeze(unsigned int a[32]) +{ + unsigned int j; + unsigned int u; + u = 0; + for (j = 0;j < 31;++j) { u += a[j]; a[j] = u & 255; u >>= 8; } + u += a[31]; a[31] = u & 127; + u = 19 * (u >> 7); + for (j = 0;j < 31;++j) { u += a[j]; a[j] = u & 255; u >>= 8; } + u += a[31]; a[31] = u; +} + +static const unsigned int minusp[32] = { + 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 +} ; + +static void freeze(unsigned int a[32]) +{ + unsigned int aorig[32]; + unsigned int j; + unsigned int negative; + + for (j = 0;j < 32;++j) aorig[j] = a[j]; + add(a,a,minusp); + negative = -((a[31] >> 7) & 1); + for (j = 0;j < 32;++j) a[j] ^= negative & (aorig[j] ^ a[j]); +} + +static void mult(unsigned int out[32],const unsigned int a[32],const unsigned int b[32]) +{ + unsigned int i; + unsigned int j; + unsigned int u; + + for (i = 0;i < 32;++i) { + u = 0; + for (j = 0;j <= i;++j) u += a[j] * b[i - j]; + for (j = i + 1;j < 32;++j) u += 38 * a[j] * b[i + 32 - j]; + out[i] = u; + } + squeeze(out); +} + +static void mult121665(unsigned int out[32],const unsigned int a[32]) +{ + unsigned int j; + unsigned int u; + + u = 0; + for (j = 0;j < 31;++j) { u += 121665 * a[j]; out[j] = u & 255; u >>= 8; } + u += 121665 * a[31]; out[31] = u & 127; + u = 19 * (u >> 7); + for (j = 0;j < 31;++j) { u += out[j]; out[j] = u & 255; u >>= 8; } + u += out[j]; out[j] = u; +} + +static void square(unsigned int out[32],const unsigned int a[32]) +{ + unsigned int i; + unsigned int j; + unsigned int u; + + for (i = 0;i < 32;++i) { + u = 0; + for (j = 0;j < i - j;++j) u += a[j] * a[i - j]; + for (j = i + 1;j < i + 32 - j;++j) u += 38 * a[j] * a[i + 32 - j]; + u *= 2; + if ((i & 1) == 0) { + u += a[i / 2] * a[i / 2]; + u += 38 * a[i / 2 + 16] * a[i / 2 + 16]; + } + out[i] = u; + } + squeeze(out); +} + +static void select(unsigned int p[64],unsigned int q[64],const unsigned int r[64],const unsigned int s[64],unsigned int b) +{ + unsigned int j; + unsigned int t; + unsigned int bminus1; + + bminus1 = b - 1; + for (j = 0;j < 64;++j) { + t = bminus1 & (r[j] ^ s[j]); + p[j] = s[j] ^ t; + q[j] = r[j] ^ t; + } +} + +static void mainloop(unsigned int work[64],const unsigned char e[32]) +{ + unsigned int xzm1[64]; + unsigned int xzm[64]; + unsigned int xzmb[64]; + unsigned int xzm1b[64]; + unsigned int xznb[64]; + unsigned int xzn1b[64]; + unsigned int a0[64]; + unsigned int a1[64]; + unsigned int b0[64]; + unsigned int b1[64]; + unsigned int c1[64]; + unsigned int r[32]; + unsigned int s[32]; + unsigned int t[32]; + unsigned int u[32]; + unsigned int j; + unsigned int b; + int pos; + + for (j = 0;j < 32;++j) xzm1[j] = work[j]; + xzm1[32] = 1; + for (j = 33;j < 64;++j) xzm1[j] = 0; + + xzm[0] = 1; + for (j = 1;j < 64;++j) xzm[j] = 0; + + for (pos = 254;pos >= 0;--pos) { + b = e[pos / 8] >> (pos & 7); + b &= 1; + select(xzmb,xzm1b,xzm,xzm1,b); + add(a0,xzmb,xzmb + 32); + sub(a0 + 32,xzmb,xzmb + 32); + add(a1,xzm1b,xzm1b + 32); + sub(a1 + 32,xzm1b,xzm1b + 32); + square(b0,a0); + square(b0 + 32,a0 + 32); + mult(b1,a1,a0 + 32); + mult(b1 + 32,a1 + 32,a0); + add(c1,b1,b1 + 32); + sub(c1 + 32,b1,b1 + 32); + square(r,c1 + 32); + sub(s,b0,b0 + 32); + mult121665(t,s); + add(u,t,b0); + mult(xznb,b0,b0 + 32); + mult(xznb + 32,s,u); + square(xzn1b,c1); + mult(xzn1b + 32,r,work); + select(xzm,xzm1,xznb,xzn1b,b); + } + + for (j = 0;j < 64;++j) work[j] = xzm[j]; +} + +static void recip(unsigned int out[32],const unsigned int z[32]) +{ + unsigned int z2[32]; + unsigned int z9[32]; + unsigned int z11[32]; + unsigned int z2_5_0[32]; + unsigned int z2_10_0[32]; + unsigned int z2_20_0[32]; + unsigned int z2_50_0[32]; + unsigned int z2_100_0[32]; + unsigned int t0[32]; + unsigned int t1[32]; + int i; + + /* 2 */ square(z2,z); + /* 4 */ square(t1,z2); + /* 8 */ square(t0,t1); + /* 9 */ mult(z9,t0,z); + /* 11 */ mult(z11,z9,z2); + /* 22 */ square(t0,z11); + /* 2^5 - 2^0 = 31 */ mult(z2_5_0,t0,z9); + + /* 2^6 - 2^1 */ square(t0,z2_5_0); + /* 2^7 - 2^2 */ square(t1,t0); + /* 2^8 - 2^3 */ square(t0,t1); + /* 2^9 - 2^4 */ square(t1,t0); + /* 2^10 - 2^5 */ square(t0,t1); + /* 2^10 - 2^0 */ mult(z2_10_0,t0,z2_5_0); + + /* 2^11 - 2^1 */ square(t0,z2_10_0); + /* 2^12 - 2^2 */ square(t1,t0); + /* 2^20 - 2^10 */ for (i = 2;i < 10;i += 2) { square(t0,t1); square(t1,t0); } + /* 2^20 - 2^0 */ mult(z2_20_0,t1,z2_10_0); + + /* 2^21 - 2^1 */ square(t0,z2_20_0); + /* 2^22 - 2^2 */ square(t1,t0); + /* 2^40 - 2^20 */ for (i = 2;i < 20;i += 2) { square(t0,t1); square(t1,t0); } + /* 2^40 - 2^0 */ mult(t0,t1,z2_20_0); + + /* 2^41 - 2^1 */ square(t1,t0); + /* 2^42 - 2^2 */ square(t0,t1); + /* 2^50 - 2^10 */ for (i = 2;i < 10;i += 2) { square(t1,t0); square(t0,t1); } + /* 2^50 - 2^0 */ mult(z2_50_0,t0,z2_10_0); + + /* 2^51 - 2^1 */ square(t0,z2_50_0); + /* 2^52 - 2^2 */ square(t1,t0); + /* 2^100 - 2^50 */ for (i = 2;i < 50;i += 2) { square(t0,t1); square(t1,t0); } + /* 2^100 - 2^0 */ mult(z2_100_0,t1,z2_50_0); + + /* 2^101 - 2^1 */ square(t1,z2_100_0); + /* 2^102 - 2^2 */ square(t0,t1); + /* 2^200 - 2^100 */ for (i = 2;i < 100;i += 2) { square(t1,t0); square(t0,t1); } + /* 2^200 - 2^0 */ mult(t1,t0,z2_100_0); + + /* 2^201 - 2^1 */ square(t0,t1); + /* 2^202 - 2^2 */ square(t1,t0); + /* 2^250 - 2^50 */ for (i = 2;i < 50;i += 2) { square(t0,t1); square(t1,t0); } + /* 2^250 - 2^0 */ mult(t0,t1,z2_50_0); + + /* 2^251 - 2^1 */ square(t1,t0); + /* 2^252 - 2^2 */ square(t0,t1); + /* 2^253 - 2^3 */ square(t1,t0); + /* 2^254 - 2^4 */ square(t0,t1); + /* 2^255 - 2^5 */ square(t1,t0); + /* 2^255 - 21 */ mult(out,t1,z11); +} + +int crypto_scalarmult(unsigned char *q, + const unsigned char *n, + const unsigned char *p) +{ + unsigned int work[96]; + unsigned char e[32]; + unsigned int i; + for (i = 0;i < 32;++i) e[i] = n[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + for (i = 0;i < 32;++i) work[i] = p[i]; + mainloop(work,e); + recip(work + 32,work + 32); + mult(work + 64,work,work + 32); + freeze(work + 64); + for (i = 0;i < 32;++i) q[i] = work[64 + i]; + return 0; +} + +#endif diff --git a/src/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox.c b/src/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox.c new file mode 100644 index 00000000..06801ee1 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox.c @@ -0,0 +1,48 @@ + +#include "crypto_secretbox.h" + +size_t +crypto_secretbox_keybytes(void) +{ + return crypto_secretbox_KEYBYTES; +} + +size_t +crypto_secretbox_noncebytes(void) +{ + return crypto_secretbox_NONCEBYTES; +} + +size_t +crypto_secretbox_zerobytes(void) +{ + return crypto_secretbox_ZEROBYTES; +} + +size_t +crypto_secretbox_boxzerobytes(void) +{ + return crypto_secretbox_BOXZEROBYTES; +} + +const char * +crypto_secretbox_primitive(void) +{ + return crypto_secretbox_PRIMITIVE; +} + +int +crypto_secretbox(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_secretbox_xsalsa20poly1305(c, m, mlen, n, k); +} + +int +crypto_secretbox_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_secretbox_xsalsa20poly1305_open(m, c, clen, n, k); +} diff --git a/src/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/api.h b/src/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/api.h new file mode 100644 index 00000000..a4920ddd --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/api.h @@ -0,0 +1,12 @@ + +#include "crypto_secretbox_xsalsa20poly1305.h" + +#define crypto_secretbox crypto_secretbox_xsalsa20poly1305 +#define crypto_secretbox_open crypto_secretbox_xsalsa20poly1305_open +#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES +#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES +#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES +#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES +#define crypto_secretbox_PRIMITIVE "xsalsa20poly1305" +#define crypto_secretbox_IMPLEMENTATION crypto_secretbox_xsalsa20poly1305_IMPLEMENTATION +#define crypto_secretbox_VERSION crypto_secretbox_xsalsa20poly1305_VERSION diff --git a/src/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c b/src/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c new file mode 100644 index 00000000..f68334ef --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c @@ -0,0 +1,35 @@ +#include "api.h" +#include "crypto_onetimeauth_poly1305.h" +#include "crypto_stream_xsalsa20.h" + +int crypto_secretbox( + unsigned char *c, + const unsigned char *m,unsigned long long mlen, + const unsigned char *n, + const unsigned char *k +) +{ + int i; + if (mlen < 32) return -1; + crypto_stream_xsalsa20_xor(c,m,mlen,n,k); + crypto_onetimeauth_poly1305(c + 16,c + 32,mlen - 32,c); + for (i = 0;i < 16;++i) c[i] = 0; + return 0; +} + +int crypto_secretbox_open( + unsigned char *m, + const unsigned char *c,unsigned long long clen, + const unsigned char *n, + const unsigned char *k +) +{ + int i; + unsigned char subkey[32]; + if (clen < 32) return -1; + crypto_stream_xsalsa20(subkey,32,n,k); + if (crypto_onetimeauth_poly1305_verify(c + 16,c + 32,clen - 32,subkey) != 0) return -1; + crypto_stream_xsalsa20_xor(m,c,clen,n,k); + for (i = 0;i < 32;++i) m[i] = 0; + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c b/src/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c new file mode 100644 index 00000000..498437f3 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c @@ -0,0 +1,26 @@ +#include "crypto_secretbox_xsalsa20poly1305.h" + +size_t +crypto_secretbox_xsalsa20poly1305_keybytes(void) { + return crypto_secretbox_xsalsa20poly1305_KEYBYTES; +} + +size_t +crypto_secretbox_xsalsa20poly1305_noncebytes(void) { + return crypto_secretbox_xsalsa20poly1305_NONCEBYTES; +} + +size_t +crypto_secretbox_xsalsa20poly1305_zerobytes(void) { + return crypto_secretbox_xsalsa20poly1305_ZEROBYTES; +} + +size_t +crypto_secretbox_xsalsa20poly1305_boxzerobytes(void) { + return crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES; +} + +const char * +crypto_secretbox_xsalsa20poly1305_primitive(void) { + return "xsalsa20poly1305"; +} diff --git a/src/libsodium/src/libsodium/crypto_shorthash/crypto_shorthash.c b/src/libsodium/src/libsodium/crypto_shorthash/crypto_shorthash.c new file mode 100644 index 00000000..b68b58a4 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_shorthash/crypto_shorthash.c @@ -0,0 +1,27 @@ + +#include "crypto_shorthash.h" + +size_t +crypto_shorthash_bytes(void) +{ + return crypto_shorthash_BYTES; +} + +size_t +crypto_shorthash_keybytes(void) +{ + return crypto_shorthash_KEYBYTES; +} + +const char * +crypto_shorthash_primitive(void) +{ + return crypto_shorthash_PRIMITIVE; +} + +int +crypto_shorthash(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + return crypto_shorthash_siphash24(out, in, inlen, k); +} diff --git a/src/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/api.h b/src/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/api.h new file mode 100644 index 00000000..55cc26fe --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/api.h @@ -0,0 +1,8 @@ + +#include "crypto_shorthash_siphash24.h" + +#define crypto_shorthash crypto_shorthash_siphash24 +#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES +#define crypto_shorthash_PRIMITIVE "siphash24" +#define crypto_shorthash_IMPLEMENTATION crypto_shorthash_siphash24_IMPLEMENTATION +#define crypto_shorthash_VERSION crypto_shorthash_siphash24_VERSION diff --git a/src/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24.c b/src/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24.c new file mode 100644 index 00000000..36763820 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24.c @@ -0,0 +1,91 @@ +#include "api.h" +#include "crypto_uint64.h" +#include "crypto_uint32.h" +#include "crypto_uint8.h" + +typedef crypto_uint64 u64; +typedef crypto_uint32 u32; +typedef crypto_uint8 u8; + +#define ROTL(x,b) (u64)( ((x) << (b)) | ( (x) >> (64 - (b))) ) + +#define U32TO8_LE(p, v) \ + (p)[0] = (u8)((v) ); (p)[1] = (u8)((v) >> 8); \ + (p)[2] = (u8)((v) >> 16); (p)[3] = (u8)((v) >> 24); + +#define U64TO8_LE(p, v) \ + U32TO8_LE((p), (u32)((v) )); \ + U32TO8_LE((p) + 4, (u32)((v) >> 32)); + +#define U8TO64_LE(p) \ + (((u64)((p)[0]) ) | \ + ((u64)((p)[1]) << 8) | \ + ((u64)((p)[2]) << 16) | \ + ((u64)((p)[3]) << 24) | \ + ((u64)((p)[4]) << 32) | \ + ((u64)((p)[5]) << 40) | \ + ((u64)((p)[6]) << 48) | \ + ((u64)((p)[7]) << 56)) + +#define SIPROUND \ + do { \ + v0 += v1; v1=ROTL(v1,13); v1 ^= v0; v0=ROTL(v0,32); \ + v2 += v3; v3=ROTL(v3,16); v3 ^= v2; \ + v0 += v3; v3=ROTL(v3,21); v3 ^= v0; \ + v2 += v1; v1=ROTL(v1,17); v1 ^= v2; v2=ROTL(v2,32); \ + } while(0) + +int crypto_shorthash(unsigned char *out,const unsigned char *in,unsigned long long inlen,const unsigned char *k) +{ + /* "somepseudorandomlygeneratedbytes" */ + u64 v0 = 0x736f6d6570736575ULL; + u64 v1 = 0x646f72616e646f6dULL; + u64 v2 = 0x6c7967656e657261ULL; + u64 v3 = 0x7465646279746573ULL; + u64 b; + u64 k0 = U8TO64_LE( k ); + u64 k1 = U8TO64_LE( k + 8 ); + u64 m; + const u8 *end = in + inlen - ( inlen % sizeof( u64 ) ); + const int left = inlen & 7; + b = ( ( u64 )inlen ) << 56; + v3 ^= k1; + v2 ^= k0; + v1 ^= k1; + v0 ^= k0; + + for ( ; in != end; in += 8 ) + { + m = U8TO64_LE( in ); + v3 ^= m; + SIPROUND; + SIPROUND; + v0 ^= m; + } + + switch( left ) + { + case 7: b |= ( ( u64 )in[ 6] ) << 48; + case 6: b |= ( ( u64 )in[ 5] ) << 40; + case 5: b |= ( ( u64 )in[ 4] ) << 32; + case 4: b |= ( ( u64 )in[ 3] ) << 24; + case 3: b |= ( ( u64 )in[ 2] ) << 16; + case 2: b |= ( ( u64 )in[ 1] ) << 8; + case 1: b |= ( ( u64 )in[ 0] ); break; + case 0: break; + } + + v3 ^= b; + SIPROUND; + SIPROUND; + v0 ^= b; + v2 ^= 0xff; + SIPROUND; + SIPROUND; + SIPROUND; + SIPROUND; + b = v0 ^ v1 ^ v2 ^ v3; + U64TO8_LE( out, b ); + return 0; +} + diff --git a/src/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24_api.c b/src/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24_api.c new file mode 100644 index 00000000..dd60202c --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24_api.c @@ -0,0 +1,11 @@ +#include "crypto_shorthash_siphash24.h" + +size_t +crypto_shorthash_siphash24_bytes(void) { + return crypto_shorthash_siphash24_BYTES; +} + +const char * +crypto_shorthash_siphash24_primitive(void) { + return "siphash24"; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/crypto_sign.c b/src/libsodium/src/libsodium/crypto_sign/crypto_sign.c new file mode 100644 index 00000000..81fb1b96 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/crypto_sign.c @@ -0,0 +1,61 @@ + +#include "crypto_sign.h" + +size_t +crypto_sign_bytes(void) +{ + return crypto_sign_BYTES; +} + +size_t +crypto_sign_seedbytes(void) +{ + return crypto_sign_SEEDBYTES; +} + +size_t +crypto_sign_publickeybytes(void) +{ + return crypto_sign_PUBLICKEYBYTES; +} + +size_t +crypto_sign_secretkeybytes(void) +{ + return crypto_sign_SECRETKEYBYTES; +} + +const char * +crypto_sign_primitive(void) +{ + return crypto_sign_PRIMITIVE; +} + +int +crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) +{ + return crypto_sign_ed25519_seed_keypair(pk, sk, seed); +} + +int +crypto_sign_keypair(unsigned char *pk, unsigned char *sk) +{ + return crypto_sign_ed25519_keypair(pk, sk); +} + +int +crypto_sign(unsigned char *sm, unsigned long long *smlen, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) +{ + return crypto_sign_ed25519(sm, smlen, m, mlen, sk); +} + +int +crypto_sign_open(unsigned char *m, unsigned long long *mlen, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) +{ + return crypto_sign_ed25519_open(m, mlen, sm, smlen, pk); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/api.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/api.h new file mode 100644 index 00000000..74309f7e --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/api.h @@ -0,0 +1,14 @@ + +#include "crypto_sign_ed25519.h" + +#define crypto_sign crypto_sign_ed25519 +#define crypto_sign_open crypto_sign_ed25519_open +#define crypto_sign_keypair crypto_sign_ed25519_keypair +#define crypto_sign_seed_keypair crypto_sign_ed25519_seed_keypair +#define crypto_sign_BYTES crypto_sign_ed25519_BYTES +#define crypto_sign_SEEDBYTES crypto_sign_ed25519_SEEDBYTES +#define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES +#define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES +#define crypto_sign_PRIMITIVE "ed25519" +#define crypto_sign_IMPLEMENTATION crypto_sign_ed25519_IMPLEMENTATION +#define crypto_sign_VERSION crypto_sign_ed25519_VERSION diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/base.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/base.h new file mode 100644 index 00000000..573bd8a0 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/base.h @@ -0,0 +1,1344 @@ +{ + { + { 25967493,-14356035,29566456,3660896,-12694345,4014787,27544626,-11754271,-6079156,2047605 }, + { -12545711,934262,-2722910,3049990,-727428,9406986,12720692,5043384,19500929,-15469378 }, + { -8738181,4489570,9688441,-14785194,10184609,-12363380,29287919,11864899,-24514362,-4438546 }, + }, + { + { -12815894,-12976347,-21581243,11784320,-25355658,-2750717,-11717903,-3814571,-358445,-10211303 }, + { -21703237,6903825,27185491,6451973,-29577724,-9554005,-15616551,11189268,-26829678,-5319081 }, + { 26966642,11152617,32442495,15396054,14353839,-12752335,-3128826,-9541118,-15472047,-4166697 }, + }, + { + { 15636291,-9688557,24204773,-7912398,616977,-16685262,27787600,-14772189,28944400,-1550024 }, + { 16568933,4717097,-11556148,-1102322,15682896,-11807043,16354577,-11775962,7689662,11199574 }, + { 30464156,-5976125,-11779434,-15670865,23220365,15915852,7512774,10017326,-17749093,-9920357 }, + }, + { + { -17036878,13921892,10945806,-6033431,27105052,-16084379,-28926210,15006023,3284568,-6276540 }, + { 23599295,-8306047,-11193664,-7687416,13236774,10506355,7464579,9656445,13059162,10374397 }, + { 7798556,16710257,3033922,2874086,28997861,2835604,32406664,-3839045,-641708,-101325 }, + }, + { + { 10861363,11473154,27284546,1981175,-30064349,12577861,32867885,14515107,-15438304,10819380 }, + { 4708026,6336745,20377586,9066809,-11272109,6594696,-25653668,12483688,-12668491,5581306 }, + { 19563160,16186464,-29386857,4097519,10237984,-4348115,28542350,13850243,-23678021,-15815942 }, + }, + { + { -15371964,-12862754,32573250,4720197,-26436522,5875511,-19188627,-15224819,-9818940,-12085777 }, + { -8549212,109983,15149363,2178705,22900618,4543417,3044240,-15689887,1762328,14866737 }, + { -18199695,-15951423,-10473290,1707278,-17185920,3916101,-28236412,3959421,27914454,4383652 }, + }, + { + { 5153746,9909285,1723747,-2777874,30523605,5516873,19480852,5230134,-23952439,-15175766 }, + { -30269007,-3463509,7665486,10083793,28475525,1649722,20654025,16520125,30598449,7715701 }, + { 28881845,14381568,9657904,3680757,-20181635,7843316,-31400660,1370708,29794553,-1409300 }, + }, + { + { 14499471,-2729599,-33191113,-4254652,28494862,14271267,30290735,10876454,-33154098,2381726 }, + { -7195431,-2655363,-14730155,462251,-27724326,3941372,-6236617,3696005,-32300832,15351955 }, + { 27431194,8222322,16448760,-3907995,-18707002,11938355,-32961401,-2970515,29551813,10109425 }, + }, +}, +{ + { + { -13657040,-13155431,-31283750,11777098,21447386,6519384,-2378284,-1627556,10092783,-4764171 }, + { 27939166,14210322,4677035,16277044,-22964462,-12398139,-32508754,12005538,-17810127,12803510 }, + { 17228999,-15661624,-1233527,300140,-1224870,-11714777,30364213,-9038194,18016357,4397660 }, + }, + { + { -10958843,-7690207,4776341,-14954238,27850028,-15602212,-26619106,14544525,-17477504,982639 }, + { 29253598,15796703,-2863982,-9908884,10057023,3163536,7332899,-4120128,-21047696,9934963 }, + { 5793303,16271923,-24131614,-10116404,29188560,1206517,-14747930,4559895,-30123922,-10897950 }, + }, + { + { -27643952,-11493006,16282657,-11036493,28414021,-15012264,24191034,4541697,-13338309,5500568 }, + { 12650548,-1497113,9052871,11355358,-17680037,-8400164,-17430592,12264343,10874051,13524335 }, + { 25556948,-3045990,714651,2510400,23394682,-10415330,33119038,5080568,-22528059,5376628 }, + }, + { + { -26088264,-4011052,-17013699,-3537628,-6726793,1920897,-22321305,-9447443,4535768,1569007 }, + { -2255422,14606630,-21692440,-8039818,28430649,8775819,-30494562,3044290,31848280,12543772 }, + { -22028579,2943893,-31857513,6777306,13784462,-4292203,-27377195,-2062731,7718482,14474653 }, + }, + { + { 2385315,2454213,-22631320,46603,-4437935,-15680415,656965,-7236665,24316168,-5253567 }, + { 13741529,10911568,-33233417,-8603737,-20177830,-1033297,33040651,-13424532,-20729456,8321686 }, + { 21060490,-2212744,15712757,-4336099,1639040,10656336,23845965,-11874838,-9984458,608372 }, + }, + { + { -13672732,-15087586,-10889693,-7557059,-6036909,11305547,1123968,-6780577,27229399,23887 }, + { -23244140,-294205,-11744728,14712571,-29465699,-2029617,12797024,-6440308,-1633405,16678954 }, + { -29500620,4770662,-16054387,14001338,7830047,9564805,-1508144,-4795045,-17169265,4904953 }, + }, + { + { 24059557,14617003,19037157,-15039908,19766093,-14906429,5169211,16191880,2128236,-4326833 }, + { -16981152,4124966,-8540610,-10653797,30336522,-14105247,-29806336,916033,-6882542,-2986532 }, + { -22630907,12419372,-7134229,-7473371,-16478904,16739175,285431,2763829,15736322,4143876 }, + }, + { + { 2379352,11839345,-4110402,-5988665,11274298,794957,212801,-14594663,23527084,-16458268 }, + { 33431127,-11130478,-17838966,-15626900,8909499,8376530,-32625340,4087881,-15188911,-14416214 }, + { 1767683,7197987,-13205226,-2022635,-13091350,448826,5799055,4357868,-4774191,-16323038 }, + }, +}, +{ + { + { 6721966,13833823,-23523388,-1551314,26354293,-11863321,23365147,-3949732,7390890,2759800 }, + { 4409041,2052381,23373853,10530217,7676779,-12885954,21302353,-4264057,1244380,-12919645 }, + { -4421239,7169619,4982368,-2957590,30256825,-2777540,14086413,9208236,15886429,16489664 }, + }, + { + { 1996075,10375649,14346367,13311202,-6874135,-16438411,-13693198,398369,-30606455,-712933 }, + { -25307465,9795880,-2777414,14878809,-33531835,14780363,13348553,12076947,-30836462,5113182 }, + { -17770784,11797796,31950843,13929123,-25888302,12288344,-30341101,-7336386,13847711,5387222 }, + }, + { + { -18582163,-3416217,17824843,-2340966,22744343,-10442611,8763061,3617786,-19600662,10370991 }, + { 20246567,-14369378,22358229,-543712,18507283,-10413996,14554437,-8746092,32232924,16763880 }, + { 9648505,10094563,26416693,14745928,-30374318,-6472621,11094161,15689506,3140038,-16510092 }, + }, + { + { -16160072,5472695,31895588,4744994,8823515,10365685,-27224800,9448613,-28774454,366295 }, + { 19153450,11523972,-11096490,-6503142,-24647631,5420647,28344573,8041113,719605,11671788 }, + { 8678025,2694440,-6808014,2517372,4964326,11152271,-15432916,-15266516,27000813,-10195553 }, + }, + { + { -15157904,7134312,8639287,-2814877,-7235688,10421742,564065,5336097,6750977,-14521026 }, + { 11836410,-3979488,26297894,16080799,23455045,15735944,1695823,-8819122,8169720,16220347 }, + { -18115838,8653647,17578566,-6092619,-8025777,-16012763,-11144307,-2627664,-5990708,-14166033 }, + }, + { + { -23308498,-10968312,15213228,-10081214,-30853605,-11050004,27884329,2847284,2655861,1738395 }, + { -27537433,-14253021,-25336301,-8002780,-9370762,8129821,21651608,-3239336,-19087449,-11005278 }, + { 1533110,3437855,23735889,459276,29970501,11335377,26030092,5821408,10478196,8544890 }, + }, + { + { 32173121,-16129311,24896207,3921497,22579056,-3410854,19270449,12217473,17789017,-3395995 }, + { -30552961,-2228401,-15578829,-10147201,13243889,517024,15479401,-3853233,30460520,1052596 }, + { -11614875,13323618,32618793,8175907,-15230173,12596687,27491595,-4612359,3179268,-9478891 }, + }, + { + { 31947069,-14366651,-4640583,-15339921,-15125977,-6039709,-14756777,-16411740,19072640,-9511060 }, + { 11685058,11822410,3158003,-13952594,33402194,-4165066,5977896,-5215017,473099,5040608 }, + { -20290863,8198642,-27410132,11602123,1290375,-2799760,28326862,1721092,-19558642,-3131606 }, + }, +}, +{ + { + { 7881532,10687937,7578723,7738378,-18951012,-2553952,21820786,8076149,-27868496,11538389 }, + { -19935666,3899861,18283497,-6801568,-15728660,-11249211,8754525,7446702,-5676054,5797016 }, + { -11295600,-3793569,-15782110,-7964573,12708869,-8456199,2014099,-9050574,-2369172,-5877341 }, + }, + { + { -22472376,-11568741,-27682020,1146375,18956691,16640559,1192730,-3714199,15123619,10811505 }, + { 14352098,-3419715,-18942044,10822655,32750596,4699007,-70363,15776356,-28886779,-11974553 }, + { -28241164,-8072475,-4978962,-5315317,29416931,1847569,-20654173,-16484855,4714547,-9600655 }, + }, + { + { 15200332,8368572,19679101,15970074,-31872674,1959451,24611599,-4543832,-11745876,12340220 }, + { 12876937,-10480056,33134381,6590940,-6307776,14872440,9613953,8241152,15370987,9608631 }, + { -4143277,-12014408,8446281,-391603,4407738,13629032,-7724868,15866074,-28210621,-8814099 }, + }, + { + { 26660628,-15677655,8393734,358047,-7401291,992988,-23904233,858697,20571223,8420556 }, + { 14620715,13067227,-15447274,8264467,14106269,15080814,33531827,12516406,-21574435,-12476749 }, + { 236881,10476226,57258,-14677024,6472998,2466984,17258519,7256740,8791136,15069930 }, + }, + { + { 1276410,-9371918,22949635,-16322807,-23493039,-5702186,14711875,4874229,-30663140,-2331391 }, + { 5855666,4990204,-13711848,7294284,-7804282,1924647,-1423175,-7912378,-33069337,9234253 }, + { 20590503,-9018988,31529744,-7352666,-2706834,10650548,31559055,-11609587,18979186,13396066 }, + }, + { + { 24474287,4968103,22267082,4407354,24063882,-8325180,-18816887,13594782,33514650,7021958 }, + { -11566906,-6565505,-21365085,15928892,-26158305,4315421,-25948728,-3916677,-21480480,12868082 }, + { -28635013,13504661,19988037,-2132761,21078225,6443208,-21446107,2244500,-12455797,-8089383 }, + }, + { + { -30595528,13793479,-5852820,319136,-25723172,-6263899,33086546,8957937,-15233648,5540521 }, + { -11630176,-11503902,-8119500,-7643073,2620056,1022908,-23710744,-1568984,-16128528,-14962807 }, + { 23152971,775386,27395463,14006635,-9701118,4649512,1689819,892185,-11513277,-15205948 }, + }, + { + { 9770129,9586738,26496094,4324120,1556511,-3550024,27453819,4763127,-19179614,5867134 }, + { -32765025,1927590,31726409,-4753295,23962434,-16019500,27846559,5931263,-29749703,-16108455 }, + { 27461885,-2977536,22380810,1815854,-23033753,-3031938,7283490,-15148073,-19526700,7734629 }, + }, +}, +{ + { + { -8010264,-9590817,-11120403,6196038,29344158,-13430885,7585295,-3176626,18549497,15302069 }, + { -32658337,-6171222,-7672793,-11051681,6258878,13504381,10458790,-6418461,-8872242,8424746 }, + { 24687205,8613276,-30667046,-3233545,1863892,-1830544,19206234,7134917,-11284482,-828919 }, + }, + { + { 11334899,-9218022,8025293,12707519,17523892,-10476071,10243738,-14685461,-5066034,16498837 }, + { 8911542,6887158,-9584260,-6958590,11145641,-9543680,17303925,-14124238,6536641,10543906 }, + { -28946384,15479763,-17466835,568876,-1497683,11223454,-2669190,-16625574,-27235709,8876771 }, + }, + { + { -25742899,-12566864,-15649966,-846607,-33026686,-796288,-33481822,15824474,-604426,-9039817 }, + { 10330056,70051,7957388,-9002667,9764902,15609756,27698697,-4890037,1657394,3084098 }, + { 10477963,-7470260,12119566,-13250805,29016247,-5365589,31280319,14396151,-30233575,15272409 }, + }, + { + { -12288309,3169463,28813183,16658753,25116432,-5630466,-25173957,-12636138,-25014757,1950504 }, + { -26180358,9489187,11053416,-14746161,-31053720,5825630,-8384306,-8767532,15341279,8373727 }, + { 28685821,7759505,-14378516,-12002860,-31971820,4079242,298136,-10232602,-2878207,15190420 }, + }, + { + { -32932876,13806336,-14337485,-15794431,-24004620,10940928,8669718,2742393,-26033313,-6875003 }, + { -1580388,-11729417,-25979658,-11445023,-17411874,-10912854,9291594,-16247779,-12154742,6048605 }, + { -30305315,14843444,1539301,11864366,20201677,1900163,13934231,5128323,11213262,9168384 }, + }, + { + { -26280513,11007847,19408960,-940758,-18592965,-4328580,-5088060,-11105150,20470157,-16398701 }, + { -23136053,9282192,14855179,-15390078,-7362815,-14408560,-22783952,14461608,14042978,5230683 }, + { 29969567,-2741594,-16711867,-8552442,9175486,-2468974,21556951,3506042,-5933891,-12449708 }, + }, + { + { -3144746,8744661,19704003,4581278,-20430686,6830683,-21284170,8971513,-28539189,15326563 }, + { -19464629,10110288,-17262528,-3503892,-23500387,1355669,-15523050,15300988,-20514118,9168260 }, + { -5353335,4488613,-23803248,16314347,7780487,-15638939,-28948358,9601605,33087103,-9011387 }, + }, + { + { -19443170,-15512900,-20797467,-12445323,-29824447,10229461,-27444329,-15000531,-5996870,15664672 }, + { 23294591,-16632613,-22650781,-8470978,27844204,11461195,13099750,-2460356,18151676,13417686 }, + { -24722913,-4176517,-31150679,5988919,-26858785,6685065,1661597,-12551441,15271676,-15452665 }, + }, +}, +{ + { + { 11433042,-13228665,8239631,-5279517,-1985436,-725718,-18698764,2167544,-6921301,-13440182 }, + { -31436171,15575146,30436815,12192228,-22463353,9395379,-9917708,-8638997,12215110,12028277 }, + { 14098400,6555944,23007258,5757252,-15427832,-12950502,30123440,4617780,-16900089,-655628 }, + }, + { + { -4026201,-15240835,11893168,13718664,-14809462,1847385,-15819999,10154009,23973261,-12684474 }, + { -26531820,-3695990,-1908898,2534301,-31870557,-16550355,18341390,-11419951,32013174,-10103539 }, + { -25479301,10876443,-11771086,-14625140,-12369567,1838104,21911214,6354752,4425632,-837822 }, + }, + { + { -10433389,-14612966,22229858,-3091047,-13191166,776729,-17415375,-12020462,4725005,14044970 }, + { 19268650,-7304421,1555349,8692754,-21474059,-9910664,6347390,-1411784,-19522291,-16109756 }, + { -24864089,12986008,-10898878,-5558584,-11312371,-148526,19541418,8180106,9282262,10282508 }, + }, + { + { -26205082,4428547,-8661196,-13194263,4098402,-14165257,15522535,8372215,5542595,-10702683 }, + { -10562541,14895633,26814552,-16673850,-17480754,-2489360,-2781891,6993761,-18093885,10114655 }, + { -20107055,-929418,31422704,10427861,-7110749,6150669,-29091755,-11529146,25953725,-106158 }, + }, + { + { -4234397,-8039292,-9119125,3046000,2101609,-12607294,19390020,6094296,-3315279,12831125 }, + { -15998678,7578152,5310217,14408357,-33548620,-224739,31575954,6326196,7381791,-2421839 }, + { -20902779,3296811,24736065,-16328389,18374254,7318640,6295303,8082724,-15362489,12339664 }, + }, + { + { 27724736,2291157,6088201,-14184798,1792727,5857634,13848414,15768922,25091167,14856294 }, + { -18866652,8331043,24373479,8541013,-701998,-9269457,12927300,-12695493,-22182473,-9012899 }, + { -11423429,-5421590,11632845,3405020,30536730,-11674039,-27260765,13866390,30146206,9142070 }, + }, + { + { 3924129,-15307516,-13817122,-10054960,12291820,-668366,-27702774,9326384,-8237858,4171294 }, + { -15921940,16037937,6713787,16606682,-21612135,2790944,26396185,3731949,345228,-5462949 }, + { -21327538,13448259,25284571,1143661,20614966,-8849387,2031539,-12391231,-16253183,-13582083 }, + }, + { + { 31016211,-16722429,26371392,-14451233,-5027349,14854137,17477601,3842657,28012650,-16405420 }, + { -5075835,9368966,-8562079,-4600902,-15249953,6970560,-9189873,16292057,-8867157,3507940 }, + { 29439664,3537914,23333589,6997794,-17555561,-11018068,-15209202,-15051267,-9164929,6580396 }, + }, +}, +{ + { + { -12185861,-7679788,16438269,10826160,-8696817,-6235611,17860444,-9273846,-2095802,9304567 }, + { 20714564,-4336911,29088195,7406487,11426967,-5095705,14792667,-14608617,5289421,-477127 }, + { -16665533,-10650790,-6160345,-13305760,9192020,-1802462,17271490,12349094,26939669,-3752294 }, + }, + { + { -12889898,9373458,31595848,16374215,21471720,13221525,-27283495,-12348559,-3698806,117887 }, + { 22263325,-6560050,3984570,-11174646,-15114008,-566785,28311253,5358056,-23319780,541964 }, + { 16259219,3261970,2309254,-15534474,-16885711,-4581916,24134070,-16705829,-13337066,-13552195 }, + }, + { + { 9378160,-13140186,-22845982,-12745264,28198281,-7244098,-2399684,-717351,690426,14876244 }, + { 24977353,-314384,-8223969,-13465086,28432343,-1176353,-13068804,-12297348,-22380984,6618999 }, + { -1538174,11685646,12944378,13682314,-24389511,-14413193,8044829,-13817328,32239829,-5652762 }, + }, + { + { -18603066,4762990,-926250,8885304,-28412480,-3187315,9781647,-10350059,32779359,5095274 }, + { -33008130,-5214506,-32264887,-3685216,9460461,-9327423,-24601656,14506724,21639561,-2630236 }, + { -16400943,-13112215,25239338,15531969,3987758,-4499318,-1289502,-6863535,17874574,558605 }, + }, + { + { -13600129,10240081,9171883,16131053,-20869254,9599700,33499487,5080151,2085892,5119761 }, + { -22205145,-2519528,-16381601,414691,-25019550,2170430,30634760,-8363614,-31999993,-5759884 }, + { -6845704,15791202,8550074,-1312654,29928809,-12092256,27534430,-7192145,-22351378,12961482 }, + }, + { + { -24492060,-9570771,10368194,11582341,-23397293,-2245287,16533930,8206996,-30194652,-5159638 }, + { -11121496,-3382234,2307366,6362031,-135455,8868177,-16835630,7031275,7589640,8945490 }, + { -32152748,8917967,6661220,-11677616,-1192060,-15793393,7251489,-11182180,24099109,-14456170 }, + }, + { + { 5019558,-7907470,4244127,-14714356,-26933272,6453165,-19118182,-13289025,-6231896,-10280736 }, + { 10853594,10721687,26480089,5861829,-22995819,1972175,-1866647,-10557898,-3363451,-6441124 }, + { -17002408,5906790,221599,-6563147,7828208,-13248918,24362661,-2008168,-13866408,7421392 }, + }, + { + { 8139927,-6546497,32257646,-5890546,30375719,1886181,-21175108,15441252,28826358,-4123029 }, + { 6267086,9695052,7709135,-16603597,-32869068,-1886135,14795160,-7840124,13746021,-1742048 }, + { 28584902,7787108,-6732942,-15050729,22846041,-7571236,-3181936,-363524,4771362,-8419958 }, + }, +}, +{ + { + { 24949256,6376279,-27466481,-8174608,-18646154,-9930606,33543569,-12141695,3569627,11342593 }, + { 26514989,4740088,27912651,3697550,19331575,-11472339,6809886,4608608,7325975,-14801071 }, + { -11618399,-14554430,-24321212,7655128,-1369274,5214312,-27400540,10258390,-17646694,-8186692 }, + }, + { + { 11431204,15823007,26570245,14329124,18029990,4796082,-31446179,15580664,9280358,-3973687 }, + { -160783,-10326257,-22855316,-4304997,-20861367,-13621002,-32810901,-11181622,-15545091,4387441 }, + { -20799378,12194512,3937617,-5805892,-27154820,9340370,-24513992,8548137,20617071,-7482001 }, + }, + { + { -938825,-3930586,-8714311,16124718,24603125,-6225393,-13775352,-11875822,24345683,10325460 }, + { -19855277,-1568885,-22202708,8714034,14007766,6928528,16318175,-1010689,4766743,3552007 }, + { -21751364,-16730916,1351763,-803421,-4009670,3950935,3217514,14481909,10988822,-3994762 }, + }, + { + { 15564307,-14311570,3101243,5684148,30446780,-8051356,12677127,-6505343,-8295852,13296005 }, + { -9442290,6624296,-30298964,-11913677,-4670981,-2057379,31521204,9614054,-30000824,12074674 }, + { 4771191,-135239,14290749,-13089852,27992298,14998318,-1413936,-1556716,29832613,-16391035 }, + }, + { + { 7064884,-7541174,-19161962,-5067537,-18891269,-2912736,25825242,5293297,-27122660,13101590 }, + { -2298563,2439670,-7466610,1719965,-27267541,-16328445,32512469,-5317593,-30356070,-4190957 }, + { -30006540,10162316,-33180176,3981723,-16482138,-13070044,14413974,9515896,19568978,9628812 }, + }, + { + { 33053803,199357,15894591,1583059,27380243,-4580435,-17838894,-6106839,-6291786,3437740 }, + { -18978877,3884493,19469877,12726490,15913552,13614290,-22961733,70104,7463304,4176122 }, + { -27124001,10659917,11482427,-16070381,12771467,-6635117,-32719404,-5322751,24216882,5944158 }, + }, + { + { 8894125,7450974,-2664149,-9765752,-28080517,-12389115,19345746,14680796,11632993,5847885 }, + { 26942781,-2315317,9129564,-4906607,26024105,11769399,-11518837,6367194,-9727230,4782140 }, + { 19916461,-4828410,-22910704,-11414391,25606324,-5972441,33253853,8220911,6358847,-1873857 }, + }, + { + { 801428,-2081702,16569428,11065167,29875704,96627,7908388,-4480480,-13538503,1387155 }, + { 19646058,5720633,-11416706,12814209,11607948,12749789,14147075,15156355,-21866831,11835260 }, + { 19299512,1155910,28703737,14890794,2925026,7269399,26121523,15467869,-26560550,5052483 }, + }, +}, +{ + { + { -3017432,10058206,1980837,3964243,22160966,12322533,-6431123,-12618185,12228557,-7003677 }, + { 32944382,14922211,-22844894,5188528,21913450,-8719943,4001465,13238564,-6114803,8653815 }, + { 22865569,-4652735,27603668,-12545395,14348958,8234005,24808405,5719875,28483275,2841751 }, + }, + { + { -16420968,-1113305,-327719,-12107856,21886282,-15552774,-1887966,-315658,19932058,-12739203 }, + { -11656086,10087521,-8864888,-5536143,-19278573,-3055912,3999228,13239134,-4777469,-13910208 }, + { 1382174,-11694719,17266790,9194690,-13324356,9720081,20403944,11284705,-14013818,3093230 }, + }, + { + { 16650921,-11037932,-1064178,1570629,-8329746,7352753,-302424,16271225,-24049421,-6691850 }, + { -21911077,-5927941,-4611316,-5560156,-31744103,-10785293,24123614,15193618,-21652117,-16739389 }, + { -9935934,-4289447,-25279823,4372842,2087473,10399484,31870908,14690798,17361620,11864968 }, + }, + { + { -11307610,6210372,13206574,5806320,-29017692,-13967200,-12331205,-7486601,-25578460,-16240689 }, + { 14668462,-12270235,26039039,15305210,25515617,4542480,10453892,6577524,9145645,-6443880 }, + { 5974874,3053895,-9433049,-10385191,-31865124,3225009,-7972642,3936128,-5652273,-3050304 }, + }, + { + { 30625386,-4729400,-25555961,-12792866,-20484575,7695099,17097188,-16303496,-27999779,1803632 }, + { -3553091,9865099,-5228566,4272701,-5673832,-16689700,14911344,12196514,-21405489,7047412 }, + { 20093277,9920966,-11138194,-5343857,13161587,12044805,-32856851,4124601,-32343828,-10257566 }, + }, + { + { -20788824,14084654,-13531713,7842147,19119038,-13822605,4752377,-8714640,-21679658,2288038 }, + { -26819236,-3283715,29965059,3039786,-14473765,2540457,29457502,14625692,-24819617,12570232 }, + { -1063558,-11551823,16920318,12494842,1278292,-5869109,-21159943,-3498680,-11974704,4724943 }, + }, + { + { 17960970,-11775534,-4140968,-9702530,-8876562,-1410617,-12907383,-8659932,-29576300,1903856 }, + { 23134274,-14279132,-10681997,-1611936,20684485,15770816,-12989750,3190296,26955097,14109738 }, + { 15308788,5320727,-30113809,-14318877,22902008,7767164,29425325,-11277562,31960942,11934971 }, + }, + { + { -27395711,8435796,4109644,12222639,-24627868,14818669,20638173,4875028,10491392,1379718 }, + { -13159415,9197841,3875503,-8936108,-1383712,-5879801,33518459,16176658,21432314,12180697 }, + { -11787308,11500838,13787581,-13832590,-22430679,10140205,1465425,12689540,-10301319,-13872883 }, + }, +}, +{ + { + { 5414091,-15386041,-21007664,9643570,12834970,1186149,-2622916,-1342231,26128231,6032912 }, + { -26337395,-13766162,32496025,-13653919,17847801,-12669156,3604025,8316894,-25875034,-10437358 }, + { 3296484,6223048,24680646,-12246460,-23052020,5903205,-8862297,-4639164,12376617,3188849 }, + }, + { + { 29190488,-14659046,27549113,-1183516,3520066,-10697301,32049515,-7309113,-16109234,-9852307 }, + { -14744486,-9309156,735818,-598978,-20407687,-5057904,25246078,-15795669,18640741,-960977 }, + { -6928835,-16430795,10361374,5642961,4910474,12345252,-31638386,-494430,10530747,1053335 }, + }, + { + { -29265967,-14186805,-13538216,-12117373,-19457059,-10655384,-31462369,-2948985,24018831,15026644 }, + { -22592535,-3145277,-2289276,5953843,-13440189,9425631,25310643,13003497,-2314791,-15145616 }, + { -27419985,-603321,-8043984,-1669117,-26092265,13987819,-27297622,187899,-23166419,-2531735 }, + }, + { + { -21744398,-13810475,1844840,5021428,-10434399,-15911473,9716667,16266922,-5070217,726099 }, + { 29370922,-6053998,7334071,-15342259,9385287,2247707,-13661962,-4839461,30007388,-15823341 }, + { -936379,16086691,23751945,-543318,-1167538,-5189036,9137109,730663,9835848,4555336 }, + }, + { + { -23376435,1410446,-22253753,-12899614,30867635,15826977,17693930,544696,-11985298,12422646 }, + { 31117226,-12215734,-13502838,6561947,-9876867,-12757670,-5118685,-4096706,29120153,13924425 }, + { -17400879,-14233209,19675799,-2734756,-11006962,-5858820,-9383939,-11317700,7240931,-237388 }, + }, + { + { -31361739,-11346780,-15007447,-5856218,-22453340,-12152771,1222336,4389483,3293637,-15551743 }, + { -16684801,-14444245,11038544,11054958,-13801175,-3338533,-24319580,7733547,12796905,-6335822 }, + { -8759414,-10817836,-25418864,10783769,-30615557,-9746811,-28253339,3647836,3222231,-11160462 }, + }, + { + { 18606113,1693100,-25448386,-15170272,4112353,10045021,23603893,-2048234,-7550776,2484985 }, + { 9255317,-3131197,-12156162,-1004256,13098013,-9214866,16377220,-2102812,-19802075,-3034702 }, + { -22729289,7496160,-5742199,11329249,19991973,-3347502,-31718148,9936966,-30097688,-10618797 }, + }, + { + { 21878590,-5001297,4338336,13643897,-3036865,13160960,19708896,5415497,-7360503,-4109293 }, + { 27736861,10103576,12500508,8502413,-3413016,-9633558,10436918,-1550276,-23659143,-8132100 }, + { 19492550,-12104365,-29681976,-852630,-3208171,12403437,30066266,8367329,13243957,8709688 }, + }, +}, +{ + { + { 12015105,2801261,28198131,10151021,24818120,-4743133,-11194191,-5645734,5150968,7274186 }, + { 2831366,-12492146,1478975,6122054,23825128,-12733586,31097299,6083058,31021603,-9793610 }, + { -2529932,-2229646,445613,10720828,-13849527,-11505937,-23507731,16354465,15067285,-14147707 }, + }, + { + { 7840942,14037873,-33364863,15934016,-728213,-3642706,21403988,1057586,-19379462,-12403220 }, + { 915865,-16469274,15608285,-8789130,-24357026,6060030,-17371319,8410997,-7220461,16527025 }, + { 32922597,-556987,20336074,-16184568,10903705,-5384487,16957574,52992,23834301,6588044 }, + }, + { + { 32752030,11232950,3381995,-8714866,22652988,-10744103,17159699,16689107,-20314580,-1305992 }, + { -4689649,9166776,-25710296,-10847306,11576752,12733943,7924251,-2752281,1976123,-7249027 }, + { 21251222,16309901,-2983015,-6783122,30810597,12967303,156041,-3371252,12331345,-8237197 }, + }, + { + { 8651614,-4477032,-16085636,-4996994,13002507,2950805,29054427,-5106970,10008136,-4667901 }, + { 31486080,15114593,-14261250,12951354,14369431,-7387845,16347321,-13662089,8684155,-10532952 }, + { 19443825,11385320,24468943,-9659068,-23919258,2187569,-26263207,-6086921,31316348,14219878 }, + }, + { + { -28594490,1193785,32245219,11392485,31092169,15722801,27146014,6992409,29126555,9207390 }, + { 32382935,1110093,18477781,11028262,-27411763,-7548111,-4980517,10843782,-7957600,-14435730 }, + { 2814918,7836403,27519878,-7868156,-20894015,-11553689,-21494559,8550130,28346258,1994730 }, + }, + { + { -19578299,8085545,-14000519,-3948622,2785838,-16231307,-19516951,7174894,22628102,8115180 }, + { -30405132,955511,-11133838,-15078069,-32447087,-13278079,-25651578,3317160,-9943017,930272 }, + { -15303681,-6833769,28856490,1357446,23421993,1057177,24091212,-1388970,-22765376,-10650715 }, + }, + { + { -22751231,-5303997,-12907607,-12768866,-15811511,-7797053,-14839018,-16554220,-1867018,8398970 }, + { -31969310,2106403,-4736360,1362501,12813763,16200670,22981545,-6291273,18009408,-15772772 }, + { -17220923,-9545221,-27784654,14166835,29815394,7444469,29551787,-3727419,19288549,1325865 }, + }, + { + { 15100157,-15835752,-23923978,-1005098,-26450192,15509408,12376730,-3479146,33166107,-8042750 }, + { 20909231,13023121,-9209752,16251778,-5778415,-8094914,12412151,10018715,2213263,-13878373 }, + { 32529814,-11074689,30361439,-16689753,-9135940,1513226,22922121,6382134,-5766928,8371348 }, + }, +}, +{ + { + { 9923462,11271500,12616794,3544722,-29998368,-1721626,12891687,-8193132,-26442943,10486144 }, + { -22597207,-7012665,8587003,-8257861,4084309,-12970062,361726,2610596,-23921530,-11455195 }, + { 5408411,-1136691,-4969122,10561668,24145918,14240566,31319731,-4235541,19985175,-3436086 }, + }, + { + { -13994457,16616821,14549246,3341099,32155958,13648976,-17577068,8849297,65030,8370684 }, + { -8320926,-12049626,31204563,5839400,-20627288,-1057277,-19442942,6922164,12743482,-9800518 }, + { -2361371,12678785,28815050,4759974,-23893047,4884717,23783145,11038569,18800704,255233 }, + }, + { + { -5269658,-1773886,13957886,7990715,23132995,728773,13393847,9066957,19258688,-14753793 }, + { -2936654,-10827535,-10432089,14516793,-3640786,4372541,-31934921,2209390,-1524053,2055794 }, + { 580882,16705327,5468415,-2683018,-30926419,-14696000,-7203346,-8994389,-30021019,7394435 }, + }, + { + { 23838809,1822728,-15738443,15242727,8318092,-3733104,-21672180,-3492205,-4821741,14799921 }, + { 13345610,9759151,3371034,-16137791,16353039,8577942,31129804,13496856,-9056018,7402518 }, + { 2286874,-4435931,-20042458,-2008336,-13696227,5038122,11006906,-15760352,8205061,1607563 }, + }, + { + { 14414086,-8002132,3331830,-3208217,22249151,-5594188,18364661,-2906958,30019587,-9029278 }, + { -27688051,1585953,-10775053,931069,-29120221,-11002319,-14410829,12029093,9944378,8024 }, + { 4368715,-3709630,29874200,-15022983,-20230386,-11410704,-16114594,-999085,-8142388,5640030 }, + }, + { + { 10299610,13746483,11661824,16234854,7630238,5998374,9809887,-16694564,15219798,-14327783 }, + { 27425505,-5719081,3055006,10660664,23458024,595578,-15398605,-1173195,-18342183,9742717 }, + { 6744077,2427284,26042789,2720740,-847906,1118974,32324614,7406442,12420155,1994844 }, + }, + { + { 14012521,-5024720,-18384453,-9578469,-26485342,-3936439,-13033478,-10909803,24319929,-6446333 }, + { 16412690,-4507367,10772641,15929391,-17068788,-4658621,10555945,-10484049,-30102368,-4739048 }, + { 22397382,-7767684,-9293161,-12792868,17166287,-9755136,-27333065,6199366,21880021,-12250760 }, + }, + { + { -4283307,5368523,-31117018,8163389,-30323063,3209128,16557151,8890729,8840445,4957760 }, + { -15447727,709327,-6919446,-10870178,-29777922,6522332,-21720181,12130072,-14796503,5005757 }, + { -2114751,-14308128,23019042,15765735,-25269683,6002752,10183197,-13239326,-16395286,-2176112 }, + }, +}, +{ + { + { -19025756,1632005,13466291,-7995100,-23640451,16573537,-32013908,-3057104,22208662,2000468 }, + { 3065073,-1412761,-25598674,-361432,-17683065,-5703415,-8164212,11248527,-3691214,-7414184 }, + { 10379208,-6045554,8877319,1473647,-29291284,-12507580,16690915,2553332,-3132688,16400289 }, + }, + { + { 15716668,1254266,-18472690,7446274,-8448918,6344164,-22097271,-7285580,26894937,9132066 }, + { 24158887,12938817,11085297,-8177598,-28063478,-4457083,-30576463,64452,-6817084,-2692882 }, + { 13488534,7794716,22236231,5989356,25426474,-12578208,2350710,-3418511,-4688006,2364226 }, + }, + { + { 16335052,9132434,25640582,6678888,1725628,8517937,-11807024,-11697457,15445875,-7798101 }, + { 29004207,-7867081,28661402,-640412,-12794003,-7943086,31863255,-4135540,-278050,-15759279 }, + { -6122061,-14866665,-28614905,14569919,-10857999,-3591829,10343412,-6976290,-29828287,-10815811 }, + }, + { + { 27081650,3463984,14099042,-4517604,1616303,-6205604,29542636,15372179,17293797,960709 }, + { 20263915,11434237,-5765435,11236810,13505955,-10857102,-16111345,6493122,-19384511,7639714 }, + { -2830798,-14839232,25403038,-8215196,-8317012,-16173699,18006287,-16043750,29994677,-15808121 }, + }, + { + { 9769828,5202651,-24157398,-13631392,-28051003,-11561624,-24613141,-13860782,-31184575,709464 }, + { 12286395,13076066,-21775189,-1176622,-25003198,4057652,-32018128,-8890874,16102007,13205847 }, + { 13733362,5599946,10557076,3195751,-5557991,8536970,-25540170,8525972,10151379,10394400 }, + }, + { + { 4024660,-16137551,22436262,12276534,-9099015,-2686099,19698229,11743039,-33302334,8934414 }, + { -15879800,-4525240,-8580747,-2934061,14634845,-698278,-9449077,3137094,-11536886,11721158 }, + { 17555939,-5013938,8268606,2331751,-22738815,9761013,9319229,8835153,-9205489,-1280045 }, + }, + { + { -461409,-7830014,20614118,16688288,-7514766,-4807119,22300304,505429,6108462,-6183415 }, + { -5070281,12367917,-30663534,3234473,32617080,-8422642,29880583,-13483331,-26898490,-7867459 }, + { -31975283,5726539,26934134,10237677,-3173717,-605053,24199304,3795095,7592688,-14992079 }, + }, + { + { 21594432,-14964228,17466408,-4077222,32537084,2739898,6407723,12018833,-28256052,4298412 }, + { -20650503,-11961496,-27236275,570498,3767144,-1717540,13891942,-1569194,13717174,10805743 }, + { -14676630,-15644296,15287174,11927123,24177847,-8175568,-796431,14860609,-26938930,-5863836 }, + }, +}, +{ + { + { 12962541,5311799,-10060768,11658280,18855286,-7954201,13286263,-12808704,-4381056,9882022 }, + { 18512079,11319350,-20123124,15090309,18818594,5271736,-22727904,3666879,-23967430,-3299429 }, + { -6789020,-3146043,16192429,13241070,15898607,-14206114,-10084880,-6661110,-2403099,5276065 }, + }, + { + { 30169808,-5317648,26306206,-11750859,27814964,7069267,7152851,3684982,1449224,13082861 }, + { 10342826,3098505,2119311,193222,25702612,12233820,23697382,15056736,-21016438,-8202000 }, + { -33150110,3261608,22745853,7948688,19370557,-15177665,-26171976,6482814,-10300080,-11060101 }, + }, + { + { 32869458,-5408545,25609743,15678670,-10687769,-15471071,26112421,2521008,-22664288,6904815 }, + { 29506923,4457497,3377935,-9796444,-30510046,12935080,1561737,3841096,-29003639,-6657642 }, + { 10340844,-6630377,-18656632,-2278430,12621151,-13339055,30878497,-11824370,-25584551,5181966 }, + }, + { + { 25940115,-12658025,17324188,-10307374,-8671468,15029094,24396252,-16450922,-2322852,-12388574 }, + { -21765684,9916823,-1300409,4079498,-1028346,11909559,1782390,12641087,20603771,-6561742 }, + { -18882287,-11673380,24849422,11501709,13161720,-4768874,1925523,11914390,4662781,7820689 }, + }, + { + { 12241050,-425982,8132691,9393934,32846760,-1599620,29749456,12172924,16136752,15264020 }, + { -10349955,-14680563,-8211979,2330220,-17662549,-14545780,10658213,6671822,19012087,3772772 }, + { 3753511,-3421066,10617074,2028709,14841030,-6721664,28718732,-15762884,20527771,12988982 }, + }, + { + { -14822485,-5797269,-3707987,12689773,-898983,-10914866,-24183046,-10564943,3299665,-12424953 }, + { -16777703,-15253301,-9642417,4978983,3308785,8755439,6943197,6461331,-25583147,8991218 }, + { -17226263,1816362,-1673288,-6086439,31783888,-8175991,-32948145,7417950,-30242287,1507265 }, + }, + { + { 29692663,6829891,-10498800,4334896,20945975,-11906496,-28887608,8209391,14606362,-10647073 }, + { -3481570,8707081,32188102,5672294,22096700,1711240,-33020695,9761487,4170404,-2085325 }, + { -11587470,14855945,-4127778,-1531857,-26649089,15084046,22186522,16002000,-14276837,-8400798 }, + }, + { + { -4811456,13761029,-31703877,-2483919,-3312471,7869047,-7113572,-9620092,13240845,10965870 }, + { -7742563,-8256762,-14768334,-13656260,-23232383,12387166,4498947,14147411,29514390,4302863 }, + { -13413405,-12407859,20757302,-13801832,14785143,8976368,-5061276,-2144373,17846988,-13971927 }, + }, +}, +{ + { + { -2244452,-754728,-4597030,-1066309,-6247172,1455299,-21647728,-9214789,-5222701,12650267 }, + { -9906797,-16070310,21134160,12198166,-27064575,708126,387813,13770293,-19134326,10958663 }, + { 22470984,12369526,23446014,-5441109,-21520802,-9698723,-11772496,-11574455,-25083830,4271862 }, + }, + { + { -25169565,-10053642,-19909332,15361595,-5984358,2159192,75375,-4278529,-32526221,8469673 }, + { 15854970,4148314,-8893890,7259002,11666551,13824734,-30531198,2697372,24154791,-9460943 }, + { 15446137,-15806644,29759747,14019369,30811221,-9610191,-31582008,12840104,24913809,9815020 }, + }, + { + { -4709286,-5614269,-31841498,-12288893,-14443537,10799414,-9103676,13438769,18735128,9466238 }, + { 11933045,9281483,5081055,-5183824,-2628162,-4905629,-7727821,-10896103,-22728655,16199064 }, + { 14576810,379472,-26786533,-8317236,-29426508,-10812974,-102766,1876699,30801119,2164795 }, + }, + { + { 15995086,3199873,13672555,13712240,-19378835,-4647646,-13081610,-15496269,-13492807,1268052 }, + { -10290614,-3659039,-3286592,10948818,23037027,3794475,-3470338,-12600221,-17055369,3565904 }, + { 29210088,-9419337,-5919792,-4952785,10834811,-13327726,-16512102,-10820713,-27162222,-14030531 }, + }, + { + { -13161890,15508588,16663704,-8156150,-28349942,9019123,-29183421,-3769423,2244111,-14001979 }, + { -5152875,-3800936,-9306475,-6071583,16243069,14684434,-25673088,-16180800,13491506,4641841 }, + { 10813417,643330,-19188515,-728916,30292062,-16600078,27548447,-7721242,14476989,-12767431 }, + }, + { + { 10292079,9984945,6481436,8279905,-7251514,7032743,27282937,-1644259,-27912810,12651324 }, + { -31185513,-813383,22271204,11835308,10201545,15351028,17099662,3988035,21721536,-3148940 }, + { 10202177,-6545839,-31373232,-9574638,-32150642,-8119683,-12906320,3852694,13216206,14842320 }, + }, + { + { -15815640,-10601066,-6538952,-7258995,-6984659,-6581778,-31500847,13765824,-27434397,9900184 }, + { 14465505,-13833331,-32133984,-14738873,-27443187,12990492,33046193,15796406,-7051866,-8040114 }, + { 30924417,-8279620,6359016,-12816335,16508377,9071735,-25488601,15413635,9524356,-7018878 }, + }, + { + { 12274201,-13175547,32627641,-1785326,6736625,13267305,5237659,-5109483,15663516,4035784 }, + { -2951309,8903985,17349946,601635,-16432815,-4612556,-13732739,-15889334,-22258478,4659091 }, + { -16916263,-4952973,-30393711,-15158821,20774812,15897498,5736189,15026997,-2178256,-13455585 }, + }, +}, +{ + { + { -8858980,-2219056,28571666,-10155518,-474467,-10105698,-3801496,278095,23440562,-290208 }, + { 10226241,-5928702,15139956,120818,-14867693,5218603,32937275,11551483,-16571960,-7442864 }, + { 17932739,-12437276,-24039557,10749060,11316803,7535897,22503767,5561594,-3646624,3898661 }, + }, + { + { 7749907,-969567,-16339731,-16464,-25018111,15122143,-1573531,7152530,21831162,1245233 }, + { 26958459,-14658026,4314586,8346991,-5677764,11960072,-32589295,-620035,-30402091,-16716212 }, + { -12165896,9166947,33491384,13673479,29787085,13096535,6280834,14587357,-22338025,13987525 }, + }, + { + { -24349909,7778775,21116000,15572597,-4833266,-5357778,-4300898,-5124639,-7469781,-2858068 }, + { 9681908,-6737123,-31951644,13591838,-6883821,386950,31622781,6439245,-14581012,4091397 }, + { -8426427,1470727,-28109679,-1596990,3978627,-5123623,-19622683,12092163,29077877,-14741988 }, + }, + { + { 5269168,-6859726,-13230211,-8020715,25932563,1763552,-5606110,-5505881,-20017847,2357889 }, + { 32264008,-15407652,-5387735,-1160093,-2091322,-3946900,23104804,-12869908,5727338,189038 }, + { 14609123,-8954470,-6000566,-16622781,-14577387,-7743898,-26745169,10942115,-25888931,-14884697 }, + }, + { + { 20513500,5557931,-15604613,7829531,26413943,-2019404,-21378968,7471781,13913677,-5137875 }, + { -25574376,11967826,29233242,12948236,-6754465,4713227,-8940970,14059180,12878652,8511905 }, + { -25656801,3393631,-2955415,-7075526,-2250709,9366908,-30223418,6812974,5568676,-3127656 }, + }, + { + { 11630004,12144454,2116339,13606037,27378885,15676917,-17408753,-13504373,-14395196,8070818 }, + { 27117696,-10007378,-31282771,-5570088,1127282,12772488,-29845906,10483306,-11552749,-1028714 }, + { 10637467,-5688064,5674781,1072708,-26343588,-6982302,-1683975,9177853,-27493162,15431203 }, + }, + { + { 20525145,10892566,-12742472,12779443,-29493034,16150075,-28240519,14943142,-15056790,-7935931 }, + { -30024462,5626926,-551567,-9981087,753598,11981191,25244767,-3239766,-3356550,9594024 }, + { -23752644,2636870,-5163910,-10103818,585134,7877383,11345683,-6492290,13352335,-10977084 }, + }, + { + { -1931799,-5407458,3304649,-12884869,17015806,-4877091,-29783850,-7752482,-13215537,-319204 }, + { 20239939,6607058,6203985,3483793,-18386976,-779229,-20723742,15077870,-22750759,14523817 }, + { 27406042,-6041657,27423596,-4497394,4996214,10002360,-28842031,-4545494,-30172742,-4805667 }, + }, +}, +{ + { + { 11374242,12660715,17861383,-12540833,10935568,1099227,-13886076,-9091740,-27727044,11358504 }, + { -12730809,10311867,1510375,10778093,-2119455,-9145702,32676003,11149336,-26123651,4985768 }, + { -19096303,341147,-6197485,-239033,15756973,-8796662,-983043,13794114,-19414307,-15621255 }, + }, + { + { 6490081,11940286,25495923,-7726360,8668373,-8751316,3367603,6970005,-1691065,-9004790 }, + { 1656497,13457317,15370807,6364910,13605745,8362338,-19174622,-5475723,-16796596,-5031438 }, + { -22273315,-13524424,-64685,-4334223,-18605636,-10921968,-20571065,-7007978,-99853,-10237333 }, + }, + { + { 17747465,10039260,19368299,-4050591,-20630635,-16041286,31992683,-15857976,-29260363,-5511971 }, + { 31932027,-4986141,-19612382,16366580,22023614,88450,11371999,-3744247,4882242,-10626905 }, + { 29796507,37186,19818052,10115756,-11829032,3352736,18551198,3272828,-5190932,-4162409 }, + }, + { + { 12501286,4044383,-8612957,-13392385,-32430052,5136599,-19230378,-3529697,330070,-3659409 }, + { 6384877,2899513,17807477,7663917,-2358888,12363165,25366522,-8573892,-271295,12071499 }, + { -8365515,-4042521,25133448,-4517355,-6211027,2265927,-32769618,1936675,-5159697,3829363 }, + }, + { + { 28425966,-5835433,-577090,-4697198,-14217555,6870930,7921550,-6567787,26333140,14267664 }, + { -11067219,11871231,27385719,-10559544,-4585914,-11189312,10004786,-8709488,-21761224,8930324 }, + { -21197785,-16396035,25654216,-1725397,12282012,11008919,1541940,4757911,-26491501,-16408940 }, + }, + { + { 13537262,-7759490,-20604840,10961927,-5922820,-13218065,-13156584,6217254,-15943699,13814990 }, + { -17422573,15157790,18705543,29619,24409717,-260476,27361681,9257833,-1956526,-1776914 }, + { -25045300,-10191966,15366585,15166509,-13105086,8423556,-29171540,12361135,-18685978,4578290 }, + }, + { + { 24579768,3711570,1342322,-11180126,-27005135,14124956,-22544529,14074919,21964432,8235257 }, + { -6528613,-2411497,9442966,-5925588,12025640,-1487420,-2981514,-1669206,13006806,2355433 }, + { -16304899,-13605259,-6632427,-5142349,16974359,-10911083,27202044,1719366,1141648,-12796236 }, + }, + { + { -12863944,-13219986,-8318266,-11018091,-6810145,-4843894,13475066,-3133972,32674895,13715045 }, + { 11423335,-5468059,32344216,8962751,24989809,9241752,-13265253,16086212,-28740881,-15642093 }, + { -1409668,12530728,-6368726,10847387,19531186,-14132160,-11709148,7791794,-27245943,4383347 }, + }, +}, +{ + { + { -28970898,5271447,-1266009,-9736989,-12455236,16732599,-4862407,-4906449,27193557,6245191 }, + { -15193956,5362278,-1783893,2695834,4960227,12840725,23061898,3260492,22510453,8577507 }, + { -12632451,11257346,-32692994,13548177,-721004,10879011,31168030,13952092,-29571492,-3635906 }, + }, + { + { 3877321,-9572739,32416692,5405324,-11004407,-13656635,3759769,11935320,5611860,8164018 }, + { -16275802,14667797,15906460,12155291,-22111149,-9039718,32003002,-8832289,5773085,-8422109 }, + { -23788118,-8254300,1950875,8937633,18686727,16459170,-905725,12376320,31632953,190926 }, + }, + { + { -24593607,-16138885,-8423991,13378746,14162407,6901328,-8288749,4508564,-25341555,-3627528 }, + { 8884438,-5884009,6023974,10104341,-6881569,-4941533,18722941,-14786005,-1672488,827625 }, + { -32720583,-16289296,-32503547,7101210,13354605,2659080,-1800575,-14108036,-24878478,1541286 }, + }, + { + { 2901347,-1117687,3880376,-10059388,-17620940,-3612781,-21802117,-3567481,20456845,-1885033 }, + { 27019610,12299467,-13658288,-1603234,-12861660,-4861471,-19540150,-5016058,29439641,15138866 }, + { 21536104,-6626420,-32447818,-10690208,-22408077,5175814,-5420040,-16361163,7779328,109896 }, + }, + { + { 30279744,14648750,-8044871,6425558,13639621,-743509,28698390,12180118,23177719,-554075 }, + { 26572847,3405927,-31701700,12890905,-19265668,5335866,-6493768,2378492,4439158,-13279347 }, + { -22716706,3489070,-9225266,-332753,18875722,-1140095,14819434,-12731527,-17717757,-5461437 }, + }, + { + { -5056483,16566551,15953661,3767752,-10436499,15627060,-820954,2177225,8550082,-15114165 }, + { -18473302,16596775,-381660,15663611,22860960,15585581,-27844109,-3582739,-23260460,-8428588 }, + { -32480551,15707275,-8205912,-5652081,29464558,2713815,-22725137,15860482,-21902570,1494193 }, + }, + { + { -19562091,-14087393,-25583872,-9299552,13127842,759709,21923482,16529112,8742704,12967017 }, + { -28464899,1553205,32536856,-10473729,-24691605,-406174,-8914625,-2933896,-29903758,15553883 }, + { 21877909,3230008,9881174,10539357,-4797115,2841332,11543572,14513274,19375923,-12647961 }, + }, + { + { 8832269,-14495485,13253511,5137575,5037871,4078777,24880818,-6222716,2862653,9455043 }, + { 29306751,5123106,20245049,-14149889,9592566,8447059,-2077124,-2990080,15511449,4789663 }, + { -20679756,7004547,8824831,-9434977,-4045704,-3750736,-5754762,108893,23513200,16652362 }, + }, +}, +{ + { + { -33256173,4144782,-4476029,-6579123,10770039,-7155542,-6650416,-12936300,-18319198,10212860 }, + { 2756081,8598110,7383731,-6859892,22312759,-1105012,21179801,2600940,-9988298,-12506466 }, + { -24645692,13317462,-30449259,-15653928,21365574,-10869657,11344424,864440,-2499677,-16710063 }, + }, + { + { -26432803,6148329,-17184412,-14474154,18782929,-275997,-22561534,211300,2719757,4940997 }, + { -1323882,3911313,-6948744,14759765,-30027150,7851207,21690126,8518463,26699843,5276295 }, + { -13149873,-6429067,9396249,365013,24703301,-10488939,1321586,149635,-15452774,7159369 }, + }, + { + { 9987780,-3404759,17507962,9505530,9731535,-2165514,22356009,8312176,22477218,-8403385 }, + { 18155857,-16504990,19744716,9006923,15154154,-10538976,24256460,-4864995,-22548173,9334109 }, + { 2986088,-4911893,10776628,-3473844,10620590,-7083203,-21413845,14253545,-22587149,536906 }, + }, + { + { 4377756,8115836,24567078,15495314,11625074,13064599,7390551,10589625,10838060,-15420424 }, + { -19342404,867880,9277171,-3218459,-14431572,-1986443,19295826,-15796950,6378260,699185 }, + { 7895026,4057113,-7081772,-13077756,-17886831,-323126,-716039,15693155,-5045064,-13373962 }, + }, + { + { -7737563,-5869402,-14566319,-7406919,11385654,13201616,31730678,-10962840,-3918636,-9669325 }, + { 10188286,-15770834,-7336361,13427543,22223443,14896287,30743455,7116568,-21786507,5427593 }, + { 696102,13206899,27047647,-10632082,15285305,-9853179,10798490,-4578720,19236243,12477404 }, + }, + { + { -11229439,11243796,-17054270,-8040865,-788228,-8167967,-3897669,11180504,-23169516,7733644 }, + { 17800790,-14036179,-27000429,-11766671,23887827,3149671,23466177,-10538171,10322027,15313801 }, + { 26246234,11968874,32263343,-5468728,6830755,-13323031,-15794704,-101982,-24449242,10890804 }, + }, + { + { -31365647,10271363,-12660625,-6267268,16690207,-13062544,-14982212,16484931,25180797,-5334884 }, + { -586574,10376444,-32586414,-11286356,19801893,10997610,2276632,9482883,316878,13820577 }, + { -9882808,-4510367,-2115506,16457136,-11100081,11674996,30756178,-7515054,30696930,-3712849 }, + }, + { + { 32988917,-9603412,12499366,7910787,-10617257,-11931514,-7342816,-9985397,-32349517,7392473 }, + { -8855661,15927861,9866406,-3649411,-2396914,-16655781,-30409476,-9134995,25112947,-2926644 }, + { -2504044,-436966,25621774,-5678772,15085042,-5479877,-24884878,-13526194,5537438,-13914319 }, + }, +}, +{ + { + { -11225584,2320285,-9584280,10149187,-33444663,5808648,-14876251,-1729667,31234590,6090599 }, + { -9633316,116426,26083934,2897444,-6364437,-2688086,609721,15878753,-6970405,-9034768 }, + { -27757857,247744,-15194774,-9002551,23288161,-10011936,-23869595,6503646,20650474,1804084 }, + }, + { + { -27589786,15456424,8972517,8469608,15640622,4439847,3121995,-10329713,27842616,-202328 }, + { -15306973,2839644,22530074,10026331,4602058,5048462,28248656,5031932,-11375082,12714369 }, + { 20807691,-7270825,29286141,11421711,-27876523,-13868230,-21227475,1035546,-19733229,12796920 }, + }, + { + { 12076899,-14301286,-8785001,-11848922,-25012791,16400684,-17591495,-12899438,3480665,-15182815 }, + { -32361549,5457597,28548107,7833186,7303070,-11953545,-24363064,-15921875,-33374054,2771025 }, + { -21389266,421932,26597266,6860826,22486084,-6737172,-17137485,-4210226,-24552282,15673397 }, + }, + { + { -20184622,2338216,19788685,-9620956,-4001265,-8740893,-20271184,4733254,3727144,-12934448 }, + { 6120119,814863,-11794402,-622716,6812205,-15747771,2019594,7975683,31123697,-10958981 }, + { 30069250,-11435332,30434654,2958439,18399564,-976289,12296869,9204260,-16432438,9648165 }, + }, + { + { 32705432,-1550977,30705658,7451065,-11805606,9631813,3305266,5248604,-26008332,-11377501 }, + { 17219865,2375039,-31570947,-5575615,-19459679,9219903,294711,15298639,2662509,-16297073 }, + { -1172927,-7558695,-4366770,-4287744,-21346413,-8434326,32087529,-1222777,32247248,-14389861 }, + }, + { + { 14312628,1221556,17395390,-8700143,-4945741,-8684635,-28197744,-9637817,-16027623,-13378845 }, + { -1428825,-9678990,-9235681,6549687,-7383069,-468664,23046502,9803137,17597934,2346211 }, + { 18510800,15337574,26171504,981392,-22241552,7827556,-23491134,-11323352,3059833,-11782870 }, + }, + { + { 10141598,6082907,17829293,-1947643,9830092,13613136,-25556636,-5544586,-33502212,3592096 }, + { 33114168,-15889352,-26525686,-13343397,33076705,8716171,1151462,1521897,-982665,-6837803 }, + { -32939165,-4255815,23947181,-324178,-33072974,-12305637,-16637686,3891704,26353178,693168 }, + }, + { + { 30374239,1595580,-16884039,13186931,4600344,406904,9585294,-400668,31375464,14369965 }, + { -14370654,-7772529,1510301,6434173,-18784789,-6262728,32732230,-13108839,17901441,16011505 }, + { 18171223,-11934626,-12500402,15197122,-11038147,-15230035,-19172240,-16046376,8764035,12309598 }, + }, +}, +{ + { + { 5975908,-5243188,-19459362,-9681747,-11541277,14015782,-23665757,1228319,17544096,-10593782 }, + { 5811932,-1715293,3442887,-2269310,-18367348,-8359541,-18044043,-15410127,-5565381,12348900 }, + { -31399660,11407555,25755363,6891399,-3256938,14872274,-24849353,8141295,-10632534,-585479 }, + }, + { + { -12675304,694026,-5076145,13300344,14015258,-14451394,-9698672,-11329050,30944593,1130208 }, + { 8247766,-6710942,-26562381,-7709309,-14401939,-14648910,4652152,2488540,23550156,-271232 }, + { 17294316,-3788438,7026748,15626851,22990044,113481,2267737,-5908146,-408818,-137719 }, + }, + { + { 16091085,-16253926,18599252,7340678,2137637,-1221657,-3364161,14550936,3260525,-7166271 }, + { -4910104,-13332887,18550887,10864893,-16459325,-7291596,-23028869,-13204905,-12748722,2701326 }, + { -8574695,16099415,4629974,-16340524,-20786213,-6005432,-10018363,9276971,11329923,1862132 }, + }, + { + { 14763076,-15903608,-30918270,3689867,3511892,10313526,-21951088,12219231,-9037963,-940300 }, + { 8894987,-3446094,6150753,3013931,301220,15693451,-31981216,-2909717,-15438168,11595570 }, + { 15214962,3537601,-26238722,-14058872,4418657,-15230761,13947276,10730794,-13489462,-4363670 }, + }, + { + { -2538306,7682793,32759013,263109,-29984731,-7955452,-22332124,-10188635,977108,699994 }, + { -12466472,4195084,-9211532,550904,-15565337,12917920,19118110,-439841,-30534533,-14337913 }, + { 31788461,-14507657,4799989,7372237,8808585,-14747943,9408237,-10051775,12493932,-5409317 }, + }, + { + { -25680606,5260744,-19235809,-6284470,-3695942,16566087,27218280,2607121,29375955,6024730 }, + { 842132,-2794693,-4763381,-8722815,26332018,-12405641,11831880,6985184,-9940361,2854096 }, + { -4847262,-7969331,2516242,-5847713,9695691,-7221186,16512645,960770,12121869,16648078 }, + }, + { + { -15218652,14667096,-13336229,2013717,30598287,-464137,-31504922,-7882064,20237806,2838411 }, + { -19288047,4453152,15298546,-16178388,22115043,-15972604,12544294,-13470457,1068881,-12499905 }, + { -9558883,-16518835,33238498,13506958,30505848,-1114596,-8486907,-2630053,12521378,4845654 }, + }, + { + { -28198521,10744108,-2958380,10199664,7759311,-13088600,3409348,-873400,-6482306,-12885870 }, + { -23561822,6230156,-20382013,10655314,-24040585,-11621172,10477734,-1240216,-3113227,13974498 }, + { 12966261,15550616,-32038948,-1615346,21025980,-629444,5642325,7188737,18895762,12629579 }, + }, +}, +{ + { + { 14741879,-14946887,22177208,-11721237,1279741,8058600,11758140,789443,32195181,3895677 }, + { 10758205,15755439,-4509950,9243698,-4879422,6879879,-2204575,-3566119,-8982069,4429647 }, + { -2453894,15725973,-20436342,-10410672,-5803908,-11040220,-7135870,-11642895,18047436,-15281743 }, + }, + { + { -25173001,-11307165,29759956,11776784,-22262383,-15820455,10993114,-12850837,-17620701,-9408468 }, + { 21987233,700364,-24505048,14972008,-7774265,-5718395,32155026,2581431,-29958985,8773375 }, + { -25568350,454463,-13211935,16126715,25240068,8594567,20656846,12017935,-7874389,-13920155 }, + }, + { + { 6028182,6263078,-31011806,-11301710,-818919,2461772,-31841174,-5468042,-1721788,-2776725 }, + { -12278994,16624277,987579,-5922598,32908203,1248608,7719845,-4166698,28408820,6816612 }, + { -10358094,-8237829,19549651,-12169222,22082623,16147817,20613181,13982702,-10339570,5067943 }, + }, + { + { -30505967,-3821767,12074681,13582412,-19877972,2443951,-19719286,12746132,5331210,-10105944 }, + { 30528811,3601899,-1957090,4619785,-27361822,-15436388,24180793,-12570394,27679908,-1648928 }, + { 9402404,-13957065,32834043,10838634,-26580150,-13237195,26653274,-8685565,22611444,-12715406 }, + }, + { + { 22190590,1118029,22736441,15130463,-30460692,-5991321,19189625,-4648942,4854859,6622139 }, + { -8310738,-2953450,-8262579,-3388049,-10401731,-271929,13424426,-3567227,26404409,13001963 }, + { -31241838,-15415700,-2994250,8939346,11562230,-12840670,-26064365,-11621720,-15405155,11020693 }, + }, + { + { 1866042,-7949489,-7898649,-10301010,12483315,13477547,3175636,-12424163,28761762,1406734 }, + { -448555,-1777666,13018551,3194501,-9580420,-11161737,24760585,-4347088,25577411,-13378680 }, + { -24290378,4759345,-690653,-1852816,2066747,10693769,-29595790,9884936,-9368926,4745410 }, + }, + { + { -9141284,6049714,-19531061,-4341411,-31260798,9944276,-15462008,-11311852,10931924,-11931931 }, + { -16561513,14112680,-8012645,4817318,-8040464,-11414606,-22853429,10856641,-20470770,13434654 }, + { 22759489,-10073434,-16766264,-1871422,13637442,-10168091,1765144,-12654326,28445307,-5364710 }, + }, + { + { 29875063,12493613,2795536,-3786330,1710620,15181182,-10195717,-8788675,9074234,1167180 }, + { -26205683,11014233,-9842651,-2635485,-26908120,7532294,-18716888,-9535498,3843903,9367684 }, + { -10969595,-6403711,9591134,9582310,11349256,108879,16235123,8601684,-139197,4242895 }, + }, +}, +{ + { + { 22092954,-13191123,-2042793,-11968512,32186753,-11517388,-6574341,2470660,-27417366,16625501 }, + { -11057722,3042016,13770083,-9257922,584236,-544855,-7770857,2602725,-27351616,14247413 }, + { 6314175,-10264892,-32772502,15957557,-10157730,168750,-8618807,14290061,27108877,-1180880 }, + }, + { + { -8586597,-7170966,13241782,10960156,-32991015,-13794596,33547976,-11058889,-27148451,981874 }, + { 22833440,9293594,-32649448,-13618667,-9136966,14756819,-22928859,-13970780,-10479804,-16197962 }, + { -7768587,3326786,-28111797,10783824,19178761,14905060,22680049,13906969,-15933690,3797899 }, + }, + { + { 21721356,-4212746,-12206123,9310182,-3882239,-13653110,23740224,-2709232,20491983,-8042152 }, + { 9209270,-15135055,-13256557,-6167798,-731016,15289673,25947805,15286587,30997318,-6703063 }, + { 7392032,16618386,23946583,-8039892,-13265164,-1533858,-14197445,-2321576,17649998,-250080 }, + }, + { + { -9301088,-14193827,30609526,-3049543,-25175069,-1283752,-15241566,-9525724,-2233253,7662146 }, + { -17558673,1763594,-33114336,15908610,-30040870,-12174295,7335080,-8472199,-3174674,3440183 }, + { -19889700,-5977008,-24111293,-9688870,10799743,-16571957,40450,-4431835,4862400,1133 }, + }, + { + { -32856209,-7873957,-5422389,14860950,-16319031,7956142,7258061,311861,-30594991,-7379421 }, + { -3773428,-1565936,28985340,7499440,24445838,9325937,29727763,16527196,18278453,15405622 }, + { -4381906,8508652,-19898366,-3674424,-5984453,15149970,-13313598,843523,-21875062,13626197 }, + }, + { + { 2281448,-13487055,-10915418,-2609910,1879358,16164207,-10783882,3953792,13340839,15928663 }, + { 31727126,-7179855,-18437503,-8283652,2875793,-16390330,-25269894,-7014826,-23452306,5964753 }, + { 4100420,-5959452,-17179337,6017714,-18705837,12227141,-26684835,11344144,2538215,-7570755 }, + }, + { + { -9433605,6123113,11159803,-2156608,30016280,14966241,-20474983,1485421,-629256,-15958862 }, + { -26804558,4260919,11851389,9658551,-32017107,16367492,-20205425,-13191288,11659922,-11115118 }, + { 26180396,10015009,-30844224,-8581293,5418197,9480663,2231568,-10170080,33100372,-1306171 }, + }, + { + { 15121113,-5201871,-10389905,15427821,-27509937,-15992507,21670947,4486675,-5931810,-14466380 }, + { 16166486,-9483733,-11104130,6023908,-31926798,-1364923,2340060,-16254968,-10735770,-10039824 }, + { 28042865,-3557089,-12126526,12259706,-3717498,-6945899,6766453,-8689599,18036436,5803270 }, + }, +}, +{ + { + { -817581,6763912,11803561,1585585,10958447,-2671165,23855391,4598332,-6159431,-14117438 }, + { -31031306,-14256194,17332029,-2383520,31312682,-5967183,696309,50292,-20095739,11763584 }, + { -594563,-2514283,-32234153,12643980,12650761,14811489,665117,-12613632,-19773211,-10713562 }, + }, + { + { 30464590,-11262872,-4127476,-12734478,19835327,-7105613,-24396175,2075773,-17020157,992471 }, + { 18357185,-6994433,7766382,16342475,-29324918,411174,14578841,8080033,-11574335,-10601610 }, + { 19598397,10334610,12555054,2555664,18821899,-10339780,21873263,16014234,26224780,16452269 }, + }, + { + { -30223925,5145196,5944548,16385966,3976735,2009897,-11377804,-7618186,-20533829,3698650 }, + { 14187449,3448569,-10636236,-10810935,-22663880,-3433596,7268410,-10890444,27394301,12015369 }, + { 19695761,16087646,28032085,12999827,6817792,11427614,20244189,-1312777,-13259127,-3402461 }, + }, + { + { 30860103,12735208,-1888245,-4699734,-16974906,2256940,-8166013,12298312,-8550524,-10393462 }, + { -5719826,-11245325,-1910649,15569035,26642876,-7587760,-5789354,-15118654,-4976164,12651793 }, + { -2848395,9953421,11531313,-5282879,26895123,-12697089,-13118820,-16517902,9768698,-2533218 }, + }, + { + { -24719459,1894651,-287698,-4704085,15348719,-8156530,32767513,12765450,4940095,10678226 }, + { 18860224,15980149,-18987240,-1562570,-26233012,-11071856,-7843882,13944024,-24372348,16582019 }, + { -15504260,4970268,-29893044,4175593,-20993212,-2199756,-11704054,15444560,-11003761,7989037 }, + }, + { + { 31490452,5568061,-2412803,2182383,-32336847,4531686,-32078269,6200206,-19686113,-14800171 }, + { -17308668,-15879940,-31522777,-2831,-32887382,16375549,8680158,-16371713,28550068,-6857132 }, + { -28126887,-5688091,16837845,-1820458,-6850681,12700016,-30039981,4364038,1155602,5988841 }, + }, + { + { 21890435,-13272907,-12624011,12154349,-7831873,15300496,23148983,-4470481,24618407,8283181 }, + { -33136107,-10512751,9975416,6841041,-31559793,16356536,3070187,-7025928,1466169,10740210 }, + { -1509399,-15488185,-13503385,-10655916,32799044,909394,-13938903,-5779719,-32164649,-15327040 }, + }, + { + { 3960823,-14267803,-28026090,-15918051,-19404858,13146868,15567327,951507,-3260321,-573935 }, + { 24740841,5052253,-30094131,8961361,25877428,6165135,-24368180,14397372,-7380369,-6144105 }, + { -28888365,3510803,-28103278,-1158478,-11238128,-10631454,-15441463,-14453128,-1625486,-6494814 }, + }, +}, +{ + { + { 793299,-9230478,8836302,-6235707,-27360908,-2369593,33152843,-4885251,-9906200,-621852 }, + { 5666233,525582,20782575,-8038419,-24538499,14657740,16099374,1468826,-6171428,-15186581 }, + { -4859255,-3779343,-2917758,-6748019,7778750,11688288,-30404353,-9871238,-1558923,-9863646 }, + }, + { + { 10896332,-7719704,824275,472601,-19460308,3009587,25248958,14783338,-30581476,-15757844 }, + { 10566929,12612572,-31944212,11118703,-12633376,12362879,21752402,8822496,24003793,14264025 }, + { 27713862,-7355973,-11008240,9227530,27050101,2504721,23886875,-13117525,13958495,-5732453 }, + }, + { + { -23481610,4867226,-27247128,3900521,29838369,-8212291,-31889399,-10041781,7340521,-15410068 }, + { 4646514,-8011124,-22766023,-11532654,23184553,8566613,31366726,-1381061,-15066784,-10375192 }, + { -17270517,12723032,-16993061,14878794,21619651,-6197576,27584817,3093888,-8843694,3849921 }, + }, + { + { -9064912,2103172,25561640,-15125738,-5239824,9582958,32477045,-9017955,5002294,-15550259 }, + { -12057553,-11177906,21115585,-13365155,8808712,-12030708,16489530,13378448,-25845716,12741426 }, + { -5946367,10645103,-30911586,15390284,-3286982,-7118677,24306472,15852464,28834118,-7646072 }, + }, + { + { -17335748,-9107057,-24531279,9434953,-8472084,-583362,-13090771,455841,20461858,5491305 }, + { 13669248,-16095482,-12481974,-10203039,-14569770,-11893198,-24995986,11293807,-28588204,-9421832 }, + { 28497928,6272777,-33022994,14470570,8906179,-1225630,18504674,-14165166,29867745,-8795943 }, + }, + { + { -16207023,13517196,-27799630,-13697798,24009064,-6373891,-6367600,-13175392,22853429,-4012011 }, + { 24191378,16712145,-13931797,15217831,14542237,1646131,18603514,-11037887,12876623,-2112447 }, + { 17902668,4518229,-411702,-2829247,26878217,5258055,-12860753,608397,16031844,3723494 }, + }, + { + { -28632773,12763728,-20446446,7577504,33001348,-13017745,17558842,-7872890,23896954,-4314245 }, + { -20005381,-12011952,31520464,605201,2543521,5991821,-2945064,7229064,-9919646,-8826859 }, + { 28816045,298879,-28165016,-15920938,19000928,-1665890,-12680833,-2949325,-18051778,-2082915 }, + }, + { + { 16000882,-344896,3493092,-11447198,-29504595,-13159789,12577740,16041268,-19715240,7847707 }, + { 10151868,10572098,27312476,7922682,14825339,4723128,-32855931,-6519018,-10020567,3852848 }, + { -11430470,15697596,-21121557,-4420647,5386314,15063598,16514493,-15932110,29330899,-15076224 }, + }, +}, +{ + { + { -25499735,-4378794,-15222908,-6901211,16615731,2051784,3303702,15490,-27548796,12314391 }, + { 15683520,-6003043,18109120,-9980648,15337968,-5997823,-16717435,15921866,16103996,-3731215 }, + { -23169824,-10781249,13588192,-1628807,-3798557,-1074929,-19273607,5402699,-29815713,-9841101 }, + }, + { + { 23190676,2384583,-32714340,3462154,-29903655,-1529132,-11266856,8911517,-25205859,2739713 }, + { 21374101,-3554250,-33524649,9874411,15377179,11831242,-33529904,6134907,4931255,11987849 }, + { -7732,-2978858,-16223486,7277597,105524,-322051,-31480539,13861388,-30076310,10117930 }, + }, + { + { -29501170,-10744872,-26163768,13051539,-25625564,5089643,-6325503,6704079,12890019,15728940 }, + { -21972360,-11771379,-951059,-4418840,14704840,2695116,903376,-10428139,12885167,8311031 }, + { -17516482,5352194,10384213,-13811658,7506451,13453191,26423267,4384730,1888765,-5435404 }, + }, + { + { -25817338,-3107312,-13494599,-3182506,30896459,-13921729,-32251644,-12707869,-19464434,-3340243 }, + { -23607977,-2665774,-526091,4651136,5765089,4618330,6092245,14845197,17151279,-9854116 }, + { -24830458,-12733720,-15165978,10367250,-29530908,-265356,22825805,-7087279,-16866484,16176525 }, + }, + { + { -23583256,6564961,20063689,3798228,-4740178,7359225,2006182,-10363426,-28746253,-10197509 }, + { -10626600,-4486402,-13320562,-5125317,3432136,-6393229,23632037,-1940610,32808310,1099883 }, + { 15030977,5768825,-27451236,-2887299,-6427378,-15361371,-15277896,-6809350,2051441,-15225865 }, + }, + { + { -3362323,-7239372,7517890,9824992,23555850,295369,5148398,-14154188,-22686354,16633660 }, + { 4577086,-16752288,13249841,-15304328,19958763,-14537274,18559670,-10759549,8402478,-9864273 }, + { -28406330,-1051581,-26790155,-907698,-17212414,-11030789,9453451,-14980072,17983010,9967138 }, + }, + { + { -25762494,6524722,26585488,9969270,24709298,1220360,-1677990,7806337,17507396,3651560 }, + { -10420457,-4118111,14584639,15971087,-15768321,8861010,26556809,-5574557,-18553322,-11357135 }, + { 2839101,14284142,4029895,3472686,14402957,12689363,-26642121,8459447,-5605463,-7621941 }, + }, + { + { -4839289,-3535444,9744961,2871048,25113978,3187018,-25110813,-849066,17258084,-7977739 }, + { 18164541,-10595176,-17154882,-1542417,19237078,-9745295,23357533,-15217008,26908270,12150756 }, + { -30264870,-7647865,5112249,-7036672,-1499807,-6974257,43168,-5537701,-32302074,16215819 }, + }, +}, +{ + { + { -6898905,9824394,-12304779,-4401089,-31397141,-6276835,32574489,12532905,-7503072,-8675347 }, + { -27343522,-16515468,-27151524,-10722951,946346,16291093,254968,7168080,21676107,-1943028 }, + { 21260961,-8424752,-16831886,-11920822,-23677961,3968121,-3651949,-6215466,-3556191,-7913075 }, + }, + { + { 16544754,13250366,-16804428,15546242,-4583003,12757258,-2462308,-8680336,-18907032,-9662799 }, + { -2415239,-15577728,18312303,4964443,-15272530,-12653564,26820651,16690659,25459437,-4564609 }, + { -25144690,11425020,28423002,-11020557,-6144921,-15826224,9142795,-2391602,-6432418,-1644817 }, + }, + { + { -23104652,6253476,16964147,-3768872,-25113972,-12296437,-27457225,-16344658,6335692,7249989 }, + { -30333227,13979675,7503222,-12368314,-11956721,-4621693,-30272269,2682242,25993170,-12478523 }, + { 4364628,5930691,32304656,-10044554,-8054781,15091131,22857016,-10598955,31820368,15075278 }, + }, + { + { 31879134,-8918693,17258761,90626,-8041836,-4917709,24162788,-9650886,-17970238,12833045 }, + { 19073683,14851414,-24403169,-11860168,7625278,11091125,-19619190,2074449,-9413939,14905377 }, + { 24483667,-11935567,-2518866,-11547418,-1553130,15355506,-25282080,9253129,27628530,-7555480 }, + }, + { + { 17597607,8340603,19355617,552187,26198470,-3176583,4593324,-9157582,-14110875,15297016 }, + { 510886,14337390,-31785257,16638632,6328095,2713355,-20217417,-11864220,8683221,2921426 }, + { 18606791,11874196,27155355,-5281482,-24031742,6265446,-25178240,-1278924,4674690,13890525 }, + }, + { + { 13609624,13069022,-27372361,-13055908,24360586,9592974,14977157,9835105,4389687,288396 }, + { 9922506,-519394,13613107,5883594,-18758345,-434263,-12304062,8317628,23388070,16052080 }, + { 12720016,11937594,-31970060,-5028689,26900120,8561328,-20155687,-11632979,-14754271,-10812892 }, + }, + { + { 15961858,14150409,26716931,-665832,-22794328,13603569,11829573,7467844,-28822128,929275 }, + { 11038231,-11582396,-27310482,-7316562,-10498527,-16307831,-23479533,-9371869,-21393143,2465074 }, + { 20017163,-4323226,27915242,1529148,12396362,15675764,13817261,-9658066,2463391,-4622140 }, + }, + { + { -16358878,-12663911,-12065183,4996454,-1256422,1073572,9583558,12851107,4003896,12673717 }, + { -1731589,-15155870,-3262930,16143082,19294135,13385325,14741514,-9103726,7903886,2348101 }, + { 24536016,-16515207,12715592,-3862155,1511293,10047386,-3842346,-7129159,-28377538,10048127 }, + }, +}, +{ + { + { -12622226,-6204820,30718825,2591312,-10617028,12192840,18873298,-7297090,-32297756,15221632 }, + { -26478122,-11103864,11546244,-1852483,9180880,7656409,-21343950,2095755,29769758,6593415 }, + { -31994208,-2907461,4176912,3264766,12538965,-868111,26312345,-6118678,30958054,8292160 }, + }, + { + { 31429822,-13959116,29173532,15632448,12174511,-2760094,32808831,3977186,26143136,-3148876 }, + { 22648901,1402143,-22799984,13746059,7936347,365344,-8668633,-1674433,-3758243,-2304625 }, + { -15491917,8012313,-2514730,-12702462,-23965846,-10254029,-1612713,-1535569,-16664475,8194478 }, + }, + { + { 27338066,-7507420,-7414224,10140405,-19026427,-6589889,27277191,8855376,28572286,3005164 }, + { 26287124,4821776,25476601,-4145903,-3764513,-15788984,-18008582,1182479,-26094821,-13079595 }, + { -7171154,3178080,23970071,6201893,-17195577,-4489192,-21876275,-13982627,32208683,-1198248 }, + }, + { + { -16657702,2817643,-10286362,14811298,6024667,13349505,-27315504,-10497842,-27672585,-11539858 }, + { 15941029,-9405932,-21367050,8062055,31876073,-238629,-15278393,-1444429,15397331,-4130193 }, + { 8934485,-13485467,-23286397,-13423241,-32446090,14047986,31170398,-1441021,-27505566,15087184 }, + }, + { + { -18357243,-2156491,24524913,-16677868,15520427,-6360776,-15502406,11461896,16788528,-5868942 }, + { -1947386,16013773,21750665,3714552,-17401782,-16055433,-3770287,-10323320,31322514,-11615635 }, + { 21426655,-5650218,-13648287,-5347537,-28812189,-4920970,-18275391,-14621414,13040862,-12112948 }, + }, + { + { 11293895,12478086,-27136401,15083750,-29307421,14748872,14555558,-13417103,1613711,4896935 }, + { -25894883,15323294,-8489791,-8057900,25967126,-13425460,2825960,-4897045,-23971776,-11267415 }, + { -15924766,-5229880,-17443532,6410664,3622847,10243618,20615400,12405433,-23753030,-8436416 }, + }, + { + { -7091295,12556208,-20191352,9025187,-17072479,4333801,4378436,2432030,23097949,-566018 }, + { 4565804,-16025654,20084412,-7842817,1724999,189254,24767264,10103221,-18512313,2424778 }, + { 366633,-11976806,8173090,-6890119,30788634,5745705,-7168678,1344109,-3642553,12412659 }, + }, + { + { -24001791,7690286,14929416,-168257,-32210835,-13412986,24162697,-15326504,-3141501,11179385 }, + { 18289522,-14724954,8056945,16430056,-21729724,7842514,-6001441,-1486897,-18684645,-11443503 }, + { 476239,6601091,-6152790,-9723375,17503545,-4863900,27672959,13403813,11052904,5219329 }, + }, +}, +{ + { + { 20678546,-8375738,-32671898,8849123,-5009758,14574752,31186971,-3973730,9014762,-8579056 }, + { -13644050,-10350239,-15962508,5075808,-1514661,-11534600,-33102500,9160280,8473550,-3256838 }, + { 24900749,14435722,17209120,-15292541,-22592275,9878983,-7689309,-16335821,-24568481,11788948 }, + }, + { + { -3118155,-11395194,-13802089,14797441,9652448,-6845904,-20037437,10410733,-24568470,-1458691 }, + { -15659161,16736706,-22467150,10215878,-9097177,7563911,11871841,-12505194,-18513325,8464118 }, + { -23400612,8348507,-14585951,-861714,-3950205,-6373419,14325289,8628612,33313881,-8370517 }, + }, + { + { -20186973,-4967935,22367356,5271547,-1097117,-4788838,-24805667,-10236854,-8940735,-5818269 }, + { -6948785,-1795212,-32625683,-16021179,32635414,-7374245,15989197,-12838188,28358192,-4253904 }, + { -23561781,-2799059,-32351682,-1661963,-9147719,10429267,-16637684,4072016,-5351664,5596589 }, + }, + { + { -28236598,-3390048,12312896,6213178,3117142,16078565,29266239,2557221,1768301,15373193 }, + { -7243358,-3246960,-4593467,-7553353,-127927,-912245,-1090902,-4504991,-24660491,3442910 }, + { -30210571,5124043,14181784,8197961,18964734,-11939093,22597931,7176455,-18585478,13365930 }, + }, + { + { -7877390,-1499958,8324673,4690079,6261860,890446,24538107,-8570186,-9689599,-3031667 }, + { 25008904,-10771599,-4305031,-9638010,16265036,15721635,683793,-11823784,15723479,-15163481 }, + { -9660625,12374379,-27006999,-7026148,-7724114,-12314514,11879682,5400171,519526,-1235876 }, + }, + { + { 22258397,-16332233,-7869817,14613016,-22520255,-2950923,-20353881,7315967,16648397,7605640 }, + { -8081308,-8464597,-8223311,9719710,19259459,-15348212,23994942,-5281555,-9468848,4763278 }, + { -21699244,9220969,-15730624,1084137,-25476107,-2852390,31088447,-7764523,-11356529,728112 }, + }, + { + { 26047220,-11751471,-6900323,-16521798,24092068,9158119,-4273545,-12555558,-29365436,-5498272 }, + { 17510331,-322857,5854289,8403524,17133918,-3112612,-28111007,12327945,10750447,10014012 }, + { -10312768,3936952,9156313,-8897683,16498692,-994647,-27481051,-666732,3424691,7540221 }, + }, + { + { 30322361,-6964110,11361005,-4143317,7433304,4989748,-7071422,-16317219,-9244265,15258046 }, + { 13054562,-2779497,19155474,469045,-12482797,4566042,5631406,2711395,1062915,-5136345 }, + { -19240248,-11254599,-29509029,-7499965,-5835763,13005411,-6066489,12194497,32960380,1459310 }, + }, +}, +{ + { + { 19852034,7027924,23669353,10020366,8586503,-6657907,394197,-6101885,18638003,-11174937 }, + { 31395534,15098109,26581030,8030562,-16527914,-5007134,9012486,-7584354,-6643087,-5442636 }, + { -9192165,-2347377,-1997099,4529534,25766844,607986,-13222,9677543,-32294889,-6456008 }, + }, + { + { -2444496,-149937,29348902,8186665,1873760,12489863,-30934579,-7839692,-7852844,-8138429 }, + { -15236356,-15433509,7766470,746860,26346930,-10221762,-27333451,10754588,-9431476,5203576 }, + { 31834314,14135496,-770007,5159118,20917671,-16768096,-7467973,-7337524,31809243,7347066 }, + }, + { + { -9606723,-11874240,20414459,13033986,13716524,-11691881,19797970,-12211255,15192876,-2087490 }, + { -12663563,-2181719,1168162,-3804809,26747877,-14138091,10609330,12694420,33473243,-13382104 }, + { 33184999,11180355,15832085,-11385430,-1633671,225884,15089336,-11023903,-6135662,14480053 }, + }, + { + { 31308717,-5619998,31030840,-1897099,15674547,-6582883,5496208,13685227,27595050,8737275 }, + { -20318852,-15150239,10933843,-16178022,8335352,-7546022,-31008351,-12610604,26498114,66511 }, + { 22644454,-8761729,-16671776,4884562,-3105614,-13559366,30540766,-4286747,-13327787,-7515095 }, + }, + { + { -28017847,9834845,18617207,-2681312,-3401956,-13307506,8205540,13585437,-17127465,15115439 }, + { 23711543,-672915,31206561,-8362711,6164647,-9709987,-33535882,-1426096,8236921,16492939 }, + { -23910559,-13515526,-26299483,-4503841,25005590,-7687270,19574902,10071562,6708380,-6222424 }, + }, + { + { 2101391,-4930054,19702731,2367575,-15427167,1047675,5301017,9328700,29955601,-11678310 }, + { 3096359,9271816,-21620864,-15521844,-14847996,-7592937,-25892142,-12635595,-9917575,6216608 }, + { -32615849,338663,-25195611,2510422,-29213566,-13820213,24822830,-6146567,-26767480,7525079 }, + }, + { + { -23066649,-13985623,16133487,-7896178,-3389565,778788,-910336,-2782495,-19386633,11994101 }, + { 21691500,-13624626,-641331,-14367021,3285881,-3483596,-25064666,9718258,-7477437,13381418 }, + { 18445390,-4202236,14979846,11622458,-1727110,-3582980,23111648,-6375247,28535282,15779576 }, + }, + { + { 30098053,3089662,-9234387,16662135,-21306940,11308411,-14068454,12021730,9955285,-16303356 }, + { 9734894,-14576830,-7473633,-9138735,2060392,11313496,-18426029,9924399,20194861,13380996 }, + { -26378102,-7965207,-22167821,15789297,-18055342,-6168792,-1984914,15707771,26342023,10146099 }, + }, +}, +{ + { + { -26016874,-219943,21339191,-41388,19745256,-2878700,-29637280,2227040,21612326,-545728 }, + { -13077387,1184228,23562814,-5970442,-20351244,-6348714,25764461,12243797,-20856566,11649658 }, + { -10031494,11262626,27384172,2271902,26947504,-15997771,39944,6114064,33514190,2333242 }, + }, + { + { -21433588,-12421821,8119782,7219913,-21830522,-9016134,-6679750,-12670638,24350578,-13450001 }, + { -4116307,-11271533,-23886186,4843615,-30088339,690623,-31536088,-10406836,8317860,12352766 }, + { 18200138,-14475911,-33087759,-2696619,-23702521,-9102511,-23552096,-2287550,20712163,6719373 }, + }, + { + { 26656208,6075253,-7858556,1886072,-28344043,4262326,11117530,-3763210,26224235,-3297458 }, + { -17168938,-14854097,-3395676,-16369877,-19954045,14050420,21728352,9493610,18620611,-16428628 }, + { -13323321,13325349,11432106,5964811,18609221,6062965,-5269471,-9725556,-30701573,-16479657 }, + }, + { + { -23860538,-11233159,26961357,1640861,-32413112,-16737940,12248509,-5240639,13735342,1934062 }, + { 25089769,6742589,17081145,-13406266,21909293,-16067981,-15136294,-3765346,-21277997,5473616 }, + { 31883677,-7961101,1083432,-11572403,22828471,13290673,-7125085,12469656,29111212,-5451014 }, + }, + { + { 24244947,-15050407,-26262976,2791540,-14997599,16666678,24367466,6388839,-10295587,452383 }, + { -25640782,-3417841,5217916,16224624,19987036,-4082269,-24236251,-5915248,15766062,8407814 }, + { -20406999,13990231,15495425,16395525,5377168,15166495,-8917023,-4388953,-8067909,2276718 }, + }, + { + { 30157918,12924066,-17712050,9245753,19895028,3368142,-23827587,5096219,22740376,-7303417 }, + { 2041139,-14256350,7783687,13876377,-25946985,-13352459,24051124,13742383,-15637599,13295222 }, + { 33338237,-8505733,12532113,7977527,9106186,-1715251,-17720195,-4612972,-4451357,-14669444 }, + }, + { + { -20045281,5454097,-14346548,6447146,28862071,1883651,-2469266,-4141880,7770569,9620597 }, + { 23208068,7979712,33071466,8149229,1758231,-10834995,30945528,-1694323,-33502340,-14767970 }, + { 1439958,-16270480,-1079989,-793782,4625402,10647766,-5043801,1220118,30494170,-11440799 }, + }, + { + { -5037580,-13028295,-2970559,-3061767,15640974,-6701666,-26739026,926050,-1684339,-13333647 }, + { 13908495,-3549272,30919928,-6273825,-21521863,7989039,9021034,9078865,3353509,4033511 }, + { -29663431,-15113610,32259991,-344482,24295849,-12912123,23161163,8839127,27485041,7356032 }, + }, +}, +{ + { + { 9661027,705443,11980065,-5370154,-1628543,14661173,-6346142,2625015,28431036,-16771834 }, + { -23839233,-8311415,-25945511,7480958,-17681669,-8354183,-22545972,14150565,15970762,4099461 }, + { 29262576,16756590,26350592,-8793563,8529671,-11208050,13617293,-9937143,11465739,8317062 }, + }, + { + { -25493081,-6962928,32500200,-9419051,-23038724,-2302222,14898637,3848455,20969334,-5157516 }, + { -20384450,-14347713,-18336405,13884722,-33039454,2842114,-21610826,-3649888,11177095,14989547 }, + { -24496721,-11716016,16959896,2278463,12066309,10137771,13515641,2581286,-28487508,9930240 }, + }, + { + { -17751622,-2097826,16544300,-13009300,-15914807,-14949081,18345767,-13403753,16291481,-5314038 }, + { -33229194,2553288,32678213,9875984,8534129,6889387,-9676774,6957617,4368891,9788741 }, + { 16660756,7281060,-10830758,12911820,20108584,-8101676,-21722536,-8613148,16250552,-11111103 }, + }, + { + { -19765507,2390526,-16551031,14161980,1905286,6414907,4689584,10604807,-30190403,4782747 }, + { -1354539,14736941,-7367442,-13292886,7710542,-14155590,-9981571,4383045,22546403,437323 }, + { 31665577,-12180464,-16186830,1491339,-18368625,3294682,27343084,2786261,-30633590,-14097016 }, + }, + { + { -14467279,-683715,-33374107,7448552,19294360,14334329,-19690631,2355319,-19284671,-6114373 }, + { 15121312,-15796162,6377020,-6031361,-10798111,-12957845,18952177,15496498,-29380133,11754228 }, + { -2637277,-13483075,8488727,-14303896,12728761,-1622493,7141596,11724556,22761615,-10134141 }, + }, + { + { 16918416,11729663,-18083579,3022987,-31015732,-13339659,-28741185,-12227393,32851222,11717399 }, + { 11166634,7338049,-6722523,4531520,-29468672,-7302055,31474879,3483633,-1193175,-4030831 }, + { -185635,9921305,31456609,-13536438,-12013818,13348923,33142652,6546660,-19985279,-3948376 }, + }, + { + { -32460596,11266712,-11197107,-7899103,31703694,3855903,-8537131,-12833048,-30772034,-15486313 }, + { -18006477,12709068,3991746,-6479188,-21491523,-10550425,-31135347,-16049879,10928917,3011958 }, + { -6957757,-15594337,31696059,334240,29576716,14796075,-30831056,-12805180,18008031,10258577 }, + }, + { + { -22448644,15655569,7018479,-4410003,-30314266,-1201591,-1853465,1367120,25127874,6671743 }, + { 29701166,-14373934,-10878120,9279288,-17568,13127210,21382910,11042292,25838796,4642684 }, + { -20430234,14955537,-24126347,8124619,-5369288,-5990470,30468147,-13900640,18423289,4177476 }, + }, +}, diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/base2.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/base2.h new file mode 100644 index 00000000..8c538440 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/base2.h @@ -0,0 +1,40 @@ + { + { 25967493,-14356035,29566456,3660896,-12694345,4014787,27544626,-11754271,-6079156,2047605 }, + { -12545711,934262,-2722910,3049990,-727428,9406986,12720692,5043384,19500929,-15469378 }, + { -8738181,4489570,9688441,-14785194,10184609,-12363380,29287919,11864899,-24514362,-4438546 }, + }, + { + { 15636291,-9688557,24204773,-7912398,616977,-16685262,27787600,-14772189,28944400,-1550024 }, + { 16568933,4717097,-11556148,-1102322,15682896,-11807043,16354577,-11775962,7689662,11199574 }, + { 30464156,-5976125,-11779434,-15670865,23220365,15915852,7512774,10017326,-17749093,-9920357 }, + }, + { + { 10861363,11473154,27284546,1981175,-30064349,12577861,32867885,14515107,-15438304,10819380 }, + { 4708026,6336745,20377586,9066809,-11272109,6594696,-25653668,12483688,-12668491,5581306 }, + { 19563160,16186464,-29386857,4097519,10237984,-4348115,28542350,13850243,-23678021,-15815942 }, + }, + { + { 5153746,9909285,1723747,-2777874,30523605,5516873,19480852,5230134,-23952439,-15175766 }, + { -30269007,-3463509,7665486,10083793,28475525,1649722,20654025,16520125,30598449,7715701 }, + { 28881845,14381568,9657904,3680757,-20181635,7843316,-31400660,1370708,29794553,-1409300 }, + }, + { + { -22518993,-6692182,14201702,-8745502,-23510406,8844726,18474211,-1361450,-13062696,13821877 }, + { -6455177,-7839871,3374702,-4740862,-27098617,-10571707,31655028,-7212327,18853322,-14220951 }, + { 4566830,-12963868,-28974889,-12240689,-7602672,-2830569,-8514358,-10431137,2207753,-3209784 }, + }, + { + { -25154831,-4185821,29681144,7868801,-6854661,-9423865,-12437364,-663000,-31111463,-16132436 }, + { 25576264,-2703214,7349804,-11814844,16472782,9300885,3844789,15725684,171356,6466918 }, + { 23103977,13316479,9739013,-16149481,817875,-15038942,8965339,-14088058,-30714912,16193877 }, + }, + { + { -33521811,3180713,-2394130,14003687,-16903474,-16270840,17238398,4729455,-18074513,9256800 }, + { -25182317,-4174131,32336398,5036987,-21236817,11360617,22616405,9761698,-19827198,630305 }, + { -13720693,2639453,-24237460,-7406481,9494427,-5774029,-6554551,-15960994,-2449256,-14291300 }, + }, + { + { -3151181,-5046075,9282714,6866145,-31907062,-863023,-18940575,15033784,25105118,-7894876 }, + { -24326370,15950226,-31801215,-14592823,-11662737,-5090925,1573892,-2625887,2198790,-15804619 }, + { -3099351,10324967,-2241613,7453183,-5446979,-2735503,-13812022,-16236442,-32461234,-12290683 }, + }, diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/d.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/d.h new file mode 100644 index 00000000..e25f5783 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/d.h @@ -0,0 +1 @@ +-10913610,13857413,-15372611,6949391,114729,-8787816,-6275908,-3247719,-18696448,-12055116 diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/d2.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/d2.h new file mode 100644 index 00000000..01aaec75 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/d2.h @@ -0,0 +1 @@ +-21827239,-5839606,-30745221,13898782,229458,15978800,-12551817,-6495438,29715968,9444199 diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe.h new file mode 100644 index 00000000..60c308ba --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe.h @@ -0,0 +1,56 @@ +#ifndef FE_H +#define FE_H + +#include "crypto_int32.h" + +typedef crypto_int32 fe[10]; + +/* +fe means field element. +Here the field is \Z/(2^255-19). +An element t, entries t[0]...t[9], represents the integer +t[0]+2^26 t[1]+2^51 t[2]+2^77 t[3]+2^102 t[4]+...+2^230 t[9]. +Bounds on each t[i] vary depending on context. +*/ + +#define fe_frombytes crypto_sign_ed25519_ref10_fe_frombytes +#define fe_tobytes crypto_sign_ed25519_ref10_fe_tobytes +#define fe_copy crypto_sign_ed25519_ref10_fe_copy +#define fe_isnonzero crypto_sign_ed25519_ref10_fe_isnonzero +#define fe_isnegative crypto_sign_ed25519_ref10_fe_isnegative +#define fe_0 crypto_sign_ed25519_ref10_fe_0 +#define fe_1 crypto_sign_ed25519_ref10_fe_1 +#define fe_cswap crypto_sign_ed25519_ref10_fe_cswap +#define fe_cmov crypto_sign_ed25519_ref10_fe_cmov +#define fe_add crypto_sign_ed25519_ref10_fe_add +#define fe_sub crypto_sign_ed25519_ref10_fe_sub +#define fe_neg crypto_sign_ed25519_ref10_fe_neg +#define fe_mul crypto_sign_ed25519_ref10_fe_mul +#define fe_sq crypto_sign_ed25519_ref10_fe_sq +#define fe_sq2 crypto_sign_ed25519_ref10_fe_sq2 +#define fe_mul121666 crypto_sign_ed25519_ref10_fe_mul121666 +#define fe_invert crypto_sign_ed25519_ref10_fe_invert +#define fe_pow22523 crypto_sign_ed25519_ref10_fe_pow22523 + +extern void fe_frombytes(fe,const unsigned char *); +extern void fe_tobytes(unsigned char *,const fe); + +extern void fe_copy(fe,const fe); +extern int fe_isnonzero(const fe); +extern int fe_isnegative(const fe); +extern void fe_0(fe); +extern void fe_1(fe); +extern void fe_cswap(fe,fe,unsigned int); +extern void fe_cmov(fe,const fe,unsigned int); + +extern void fe_add(fe,const fe,const fe); +extern void fe_sub(fe,const fe,const fe); +extern void fe_neg(fe,const fe); +extern void fe_mul(fe,const fe,const fe); +extern void fe_sq(fe,const fe); +extern void fe_sq2(fe,const fe); +extern void fe_mul121666(fe,const fe); +extern void fe_invert(fe,const fe); +extern void fe_pow22523(fe,const fe); + +#endif diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_0.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_0.c new file mode 100644 index 00000000..ec879d73 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_0.c @@ -0,0 +1,19 @@ +#include "fe.h" + +/* +h = 0 +*/ + +void fe_0(fe h) +{ + h[0] = 0; + h[1] = 0; + h[2] = 0; + h[3] = 0; + h[4] = 0; + h[5] = 0; + h[6] = 0; + h[7] = 0; + h[8] = 0; + h[9] = 0; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_1.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_1.c new file mode 100644 index 00000000..8cf77848 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_1.c @@ -0,0 +1,19 @@ +#include "fe.h" + +/* +h = 1 +*/ + +void fe_1(fe h) +{ + h[0] = 1; + h[1] = 0; + h[2] = 0; + h[3] = 0; + h[4] = 0; + h[5] = 0; + h[6] = 0; + h[7] = 0; + h[8] = 0; + h[9] = 0; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_add.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_add.c new file mode 100644 index 00000000..e6a81da2 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_add.c @@ -0,0 +1,57 @@ +#include "fe.h" + +/* +h = f + g +Can overlap h with f or g. + +Preconditions: + |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + +Postconditions: + |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +*/ + +void fe_add(fe h,const fe f,const fe g) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 g0 = g[0]; + crypto_int32 g1 = g[1]; + crypto_int32 g2 = g[2]; + crypto_int32 g3 = g[3]; + crypto_int32 g4 = g[4]; + crypto_int32 g5 = g[5]; + crypto_int32 g6 = g[6]; + crypto_int32 g7 = g[7]; + crypto_int32 g8 = g[8]; + crypto_int32 g9 = g[9]; + crypto_int32 h0 = f0 + g0; + crypto_int32 h1 = f1 + g1; + crypto_int32 h2 = f2 + g2; + crypto_int32 h3 = f3 + g3; + crypto_int32 h4 = f4 + g4; + crypto_int32 h5 = f5 + g5; + crypto_int32 h6 = f6 + g6; + crypto_int32 h7 = f7 + g7; + crypto_int32 h8 = f8 + g8; + crypto_int32 h9 = f9 + g9; + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_cmov.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_cmov.c new file mode 100644 index 00000000..8ca584fb --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_cmov.c @@ -0,0 +1,63 @@ +#include "fe.h" + +/* +Replace (f,g) with (g,g) if b == 1; +replace (f,g) with (f,g) if b == 0. + +Preconditions: b in {0,1}. +*/ + +void fe_cmov(fe f,const fe g,unsigned int b) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 g0 = g[0]; + crypto_int32 g1 = g[1]; + crypto_int32 g2 = g[2]; + crypto_int32 g3 = g[3]; + crypto_int32 g4 = g[4]; + crypto_int32 g5 = g[5]; + crypto_int32 g6 = g[6]; + crypto_int32 g7 = g[7]; + crypto_int32 g8 = g[8]; + crypto_int32 g9 = g[9]; + crypto_int32 x0 = f0 ^ g0; + crypto_int32 x1 = f1 ^ g1; + crypto_int32 x2 = f2 ^ g2; + crypto_int32 x3 = f3 ^ g3; + crypto_int32 x4 = f4 ^ g4; + crypto_int32 x5 = f5 ^ g5; + crypto_int32 x6 = f6 ^ g6; + crypto_int32 x7 = f7 ^ g7; + crypto_int32 x8 = f8 ^ g8; + crypto_int32 x9 = f9 ^ g9; + b = -b; + x0 &= b; + x1 &= b; + x2 &= b; + x3 &= b; + x4 &= b; + x5 &= b; + x6 &= b; + x7 &= b; + x8 &= b; + x9 &= b; + f[0] = f0 ^ x0; + f[1] = f1 ^ x1; + f[2] = f2 ^ x2; + f[3] = f3 ^ x3; + f[4] = f4 ^ x4; + f[5] = f5 ^ x5; + f[6] = f6 ^ x6; + f[7] = f7 ^ x7; + f[8] = f8 ^ x8; + f[9] = f9 ^ x9; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_copy.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_copy.c new file mode 100644 index 00000000..9c5bf865 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_copy.c @@ -0,0 +1,29 @@ +#include "fe.h" + +/* +h = f +*/ + +void fe_copy(fe h,const fe f) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + h[0] = f0; + h[1] = f1; + h[2] = f2; + h[3] = f3; + h[4] = f4; + h[5] = f5; + h[6] = f6; + h[7] = f7; + h[8] = f8; + h[9] = f9; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_frombytes.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_frombytes.c new file mode 100644 index 00000000..5c179174 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_frombytes.c @@ -0,0 +1,73 @@ +#include "fe.h" +#include "crypto_int64.h" +#include "crypto_uint64.h" + +static crypto_uint64 load_3(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + return result; +} + +static crypto_uint64 load_4(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + result |= ((crypto_uint64) in[3]) << 24; + return result; +} + +/* +Ignores top bit of h. +*/ + +void fe_frombytes(fe h,const unsigned char *s) +{ + crypto_int64 h0 = load_4(s); + crypto_int64 h1 = load_3(s + 4) << 6; + crypto_int64 h2 = load_3(s + 7) << 5; + crypto_int64 h3 = load_3(s + 10) << 3; + crypto_int64 h4 = load_3(s + 13) << 2; + crypto_int64 h5 = load_4(s + 16); + crypto_int64 h6 = load_3(s + 20) << 7; + crypto_int64 h7 = load_3(s + 23) << 5; + crypto_int64 h8 = load_3(s + 26) << 4; + crypto_int64 h9 = (load_3(s + 29) & 8388607) << 2; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + + carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_invert.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_invert.c new file mode 100644 index 00000000..bcfdb8ff --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_invert.c @@ -0,0 +1,14 @@ +#include "fe.h" + +void fe_invert(fe out,const fe z) +{ + fe t0; + fe t1; + fe t2; + fe t3; + int i; + +#include "pow225521.h" + + return; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_isnegative.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_isnegative.c new file mode 100644 index 00000000..3b2c8b8d --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_isnegative.c @@ -0,0 +1,16 @@ +#include "fe.h" + +/* +return 1 if f is in {1,3,5,...,q-2} +return 0 if f is in {0,2,4,...,q-1} + +Preconditions: + |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +*/ + +int fe_isnegative(const fe f) +{ + unsigned char s[32]; + fe_tobytes(s,f); + return s[0] & 1; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_isnonzero.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_isnonzero.c new file mode 100644 index 00000000..db29c254 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_isnonzero.c @@ -0,0 +1,19 @@ +#include "fe.h" +#include "crypto_verify_32.h" + +/* +return 1 if f == 0 +return 0 if f != 0 + +Preconditions: + |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +*/ + +static unsigned char zero[32]; + +int fe_isnonzero(const fe f) +{ + unsigned char s[32]; + fe_tobytes(s,f); + return crypto_verify_32(s,zero); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_mul.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_mul.c new file mode 100644 index 00000000..26ca8b36 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_mul.c @@ -0,0 +1,253 @@ +#include "fe.h" +#include "crypto_int64.h" + +/* +h = f * g +Can overlap h with f or g. + +Preconditions: + |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + |g| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + +Postconditions: + |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. +*/ + +/* +Notes on implementation strategy: + +Using schoolbook multiplication. +Karatsuba would save a little in some cost models. + +Most multiplications by 2 and 19 are 32-bit precomputations; +cheaper than 64-bit postcomputations. + +There is one remaining multiplication by 19 in the carry chain; +one *19 precomputation can be merged into this, +but the resulting data flow is considerably less clean. + +There are 12 carries below. +10 of them are 2-way parallelizable and vectorizable. +Can get away with 11 carries, but then data flow is much deeper. + +With tighter constraints on inputs can squeeze carries into int32. +*/ + +void fe_mul(fe h,const fe f,const fe g) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 g0 = g[0]; + crypto_int32 g1 = g[1]; + crypto_int32 g2 = g[2]; + crypto_int32 g3 = g[3]; + crypto_int32 g4 = g[4]; + crypto_int32 g5 = g[5]; + crypto_int32 g6 = g[6]; + crypto_int32 g7 = g[7]; + crypto_int32 g8 = g[8]; + crypto_int32 g9 = g[9]; + crypto_int32 g1_19 = 19 * g1; /* 1.959375*2^29 */ + crypto_int32 g2_19 = 19 * g2; /* 1.959375*2^30; still ok */ + crypto_int32 g3_19 = 19 * g3; + crypto_int32 g4_19 = 19 * g4; + crypto_int32 g5_19 = 19 * g5; + crypto_int32 g6_19 = 19 * g6; + crypto_int32 g7_19 = 19 * g7; + crypto_int32 g8_19 = 19 * g8; + crypto_int32 g9_19 = 19 * g9; + crypto_int32 f1_2 = 2 * f1; + crypto_int32 f3_2 = 2 * f3; + crypto_int32 f5_2 = 2 * f5; + crypto_int32 f7_2 = 2 * f7; + crypto_int32 f9_2 = 2 * f9; + crypto_int64 f0g0 = f0 * (crypto_int64) g0; + crypto_int64 f0g1 = f0 * (crypto_int64) g1; + crypto_int64 f0g2 = f0 * (crypto_int64) g2; + crypto_int64 f0g3 = f0 * (crypto_int64) g3; + crypto_int64 f0g4 = f0 * (crypto_int64) g4; + crypto_int64 f0g5 = f0 * (crypto_int64) g5; + crypto_int64 f0g6 = f0 * (crypto_int64) g6; + crypto_int64 f0g7 = f0 * (crypto_int64) g7; + crypto_int64 f0g8 = f0 * (crypto_int64) g8; + crypto_int64 f0g9 = f0 * (crypto_int64) g9; + crypto_int64 f1g0 = f1 * (crypto_int64) g0; + crypto_int64 f1g1_2 = f1_2 * (crypto_int64) g1; + crypto_int64 f1g2 = f1 * (crypto_int64) g2; + crypto_int64 f1g3_2 = f1_2 * (crypto_int64) g3; + crypto_int64 f1g4 = f1 * (crypto_int64) g4; + crypto_int64 f1g5_2 = f1_2 * (crypto_int64) g5; + crypto_int64 f1g6 = f1 * (crypto_int64) g6; + crypto_int64 f1g7_2 = f1_2 * (crypto_int64) g7; + crypto_int64 f1g8 = f1 * (crypto_int64) g8; + crypto_int64 f1g9_38 = f1_2 * (crypto_int64) g9_19; + crypto_int64 f2g0 = f2 * (crypto_int64) g0; + crypto_int64 f2g1 = f2 * (crypto_int64) g1; + crypto_int64 f2g2 = f2 * (crypto_int64) g2; + crypto_int64 f2g3 = f2 * (crypto_int64) g3; + crypto_int64 f2g4 = f2 * (crypto_int64) g4; + crypto_int64 f2g5 = f2 * (crypto_int64) g5; + crypto_int64 f2g6 = f2 * (crypto_int64) g6; + crypto_int64 f2g7 = f2 * (crypto_int64) g7; + crypto_int64 f2g8_19 = f2 * (crypto_int64) g8_19; + crypto_int64 f2g9_19 = f2 * (crypto_int64) g9_19; + crypto_int64 f3g0 = f3 * (crypto_int64) g0; + crypto_int64 f3g1_2 = f3_2 * (crypto_int64) g1; + crypto_int64 f3g2 = f3 * (crypto_int64) g2; + crypto_int64 f3g3_2 = f3_2 * (crypto_int64) g3; + crypto_int64 f3g4 = f3 * (crypto_int64) g4; + crypto_int64 f3g5_2 = f3_2 * (crypto_int64) g5; + crypto_int64 f3g6 = f3 * (crypto_int64) g6; + crypto_int64 f3g7_38 = f3_2 * (crypto_int64) g7_19; + crypto_int64 f3g8_19 = f3 * (crypto_int64) g8_19; + crypto_int64 f3g9_38 = f3_2 * (crypto_int64) g9_19; + crypto_int64 f4g0 = f4 * (crypto_int64) g0; + crypto_int64 f4g1 = f4 * (crypto_int64) g1; + crypto_int64 f4g2 = f4 * (crypto_int64) g2; + crypto_int64 f4g3 = f4 * (crypto_int64) g3; + crypto_int64 f4g4 = f4 * (crypto_int64) g4; + crypto_int64 f4g5 = f4 * (crypto_int64) g5; + crypto_int64 f4g6_19 = f4 * (crypto_int64) g6_19; + crypto_int64 f4g7_19 = f4 * (crypto_int64) g7_19; + crypto_int64 f4g8_19 = f4 * (crypto_int64) g8_19; + crypto_int64 f4g9_19 = f4 * (crypto_int64) g9_19; + crypto_int64 f5g0 = f5 * (crypto_int64) g0; + crypto_int64 f5g1_2 = f5_2 * (crypto_int64) g1; + crypto_int64 f5g2 = f5 * (crypto_int64) g2; + crypto_int64 f5g3_2 = f5_2 * (crypto_int64) g3; + crypto_int64 f5g4 = f5 * (crypto_int64) g4; + crypto_int64 f5g5_38 = f5_2 * (crypto_int64) g5_19; + crypto_int64 f5g6_19 = f5 * (crypto_int64) g6_19; + crypto_int64 f5g7_38 = f5_2 * (crypto_int64) g7_19; + crypto_int64 f5g8_19 = f5 * (crypto_int64) g8_19; + crypto_int64 f5g9_38 = f5_2 * (crypto_int64) g9_19; + crypto_int64 f6g0 = f6 * (crypto_int64) g0; + crypto_int64 f6g1 = f6 * (crypto_int64) g1; + crypto_int64 f6g2 = f6 * (crypto_int64) g2; + crypto_int64 f6g3 = f6 * (crypto_int64) g3; + crypto_int64 f6g4_19 = f6 * (crypto_int64) g4_19; + crypto_int64 f6g5_19 = f6 * (crypto_int64) g5_19; + crypto_int64 f6g6_19 = f6 * (crypto_int64) g6_19; + crypto_int64 f6g7_19 = f6 * (crypto_int64) g7_19; + crypto_int64 f6g8_19 = f6 * (crypto_int64) g8_19; + crypto_int64 f6g9_19 = f6 * (crypto_int64) g9_19; + crypto_int64 f7g0 = f7 * (crypto_int64) g0; + crypto_int64 f7g1_2 = f7_2 * (crypto_int64) g1; + crypto_int64 f7g2 = f7 * (crypto_int64) g2; + crypto_int64 f7g3_38 = f7_2 * (crypto_int64) g3_19; + crypto_int64 f7g4_19 = f7 * (crypto_int64) g4_19; + crypto_int64 f7g5_38 = f7_2 * (crypto_int64) g5_19; + crypto_int64 f7g6_19 = f7 * (crypto_int64) g6_19; + crypto_int64 f7g7_38 = f7_2 * (crypto_int64) g7_19; + crypto_int64 f7g8_19 = f7 * (crypto_int64) g8_19; + crypto_int64 f7g9_38 = f7_2 * (crypto_int64) g9_19; + crypto_int64 f8g0 = f8 * (crypto_int64) g0; + crypto_int64 f8g1 = f8 * (crypto_int64) g1; + crypto_int64 f8g2_19 = f8 * (crypto_int64) g2_19; + crypto_int64 f8g3_19 = f8 * (crypto_int64) g3_19; + crypto_int64 f8g4_19 = f8 * (crypto_int64) g4_19; + crypto_int64 f8g5_19 = f8 * (crypto_int64) g5_19; + crypto_int64 f8g6_19 = f8 * (crypto_int64) g6_19; + crypto_int64 f8g7_19 = f8 * (crypto_int64) g7_19; + crypto_int64 f8g8_19 = f8 * (crypto_int64) g8_19; + crypto_int64 f8g9_19 = f8 * (crypto_int64) g9_19; + crypto_int64 f9g0 = f9 * (crypto_int64) g0; + crypto_int64 f9g1_38 = f9_2 * (crypto_int64) g1_19; + crypto_int64 f9g2_19 = f9 * (crypto_int64) g2_19; + crypto_int64 f9g3_38 = f9_2 * (crypto_int64) g3_19; + crypto_int64 f9g4_19 = f9 * (crypto_int64) g4_19; + crypto_int64 f9g5_38 = f9_2 * (crypto_int64) g5_19; + crypto_int64 f9g6_19 = f9 * (crypto_int64) g6_19; + crypto_int64 f9g7_38 = f9_2 * (crypto_int64) g7_19; + crypto_int64 f9g8_19 = f9 * (crypto_int64) g8_19; + crypto_int64 f9g9_38 = f9_2 * (crypto_int64) g9_19; + crypto_int64 h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38; + crypto_int64 h1 = f0g1+f1g0 +f2g9_19+f3g8_19+f4g7_19+f5g6_19+f6g5_19+f7g4_19+f8g3_19+f9g2_19; + crypto_int64 h2 = f0g2+f1g1_2 +f2g0 +f3g9_38+f4g8_19+f5g7_38+f6g6_19+f7g5_38+f8g4_19+f9g3_38; + crypto_int64 h3 = f0g3+f1g2 +f2g1 +f3g0 +f4g9_19+f5g8_19+f6g7_19+f7g6_19+f8g5_19+f9g4_19; + crypto_int64 h4 = f0g4+f1g3_2 +f2g2 +f3g1_2 +f4g0 +f5g9_38+f6g8_19+f7g7_38+f8g6_19+f9g5_38; + crypto_int64 h5 = f0g5+f1g4 +f2g3 +f3g2 +f4g1 +f5g0 +f6g9_19+f7g8_19+f8g7_19+f9g6_19; + crypto_int64 h6 = f0g6+f1g5_2 +f2g4 +f3g3_2 +f4g2 +f5g1_2 +f6g0 +f7g9_38+f8g8_19+f9g7_38; + crypto_int64 h7 = f0g7+f1g6 +f2g5 +f3g4 +f4g3 +f5g2 +f6g1 +f7g0 +f8g9_19+f9g8_19; + crypto_int64 h8 = f0g8+f1g7_2 +f2g6 +f3g5_2 +f4g4 +f5g3_2 +f6g2 +f7g1_2 +f8g0 +f9g9_38; + crypto_int64 h9 = f0g9+f1g8 +f2g7 +f3g6 +f4g5 +f5g4 +f6g3 +f7g2 +f8g1 +f9g0 ; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + + /* + |h0| <= (1.65*1.65*2^52*(1+19+19+19+19)+1.65*1.65*2^50*(38+38+38+38+38)) + i.e. |h0| <= 1.4*2^60; narrower ranges for h2, h4, h6, h8 + |h1| <= (1.65*1.65*2^51*(1+1+19+19+19+19+19+19+19+19)) + i.e. |h1| <= 1.7*2^59; narrower ranges for h3, h5, h7, h9 + */ + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + /* |h0| <= 2^25 */ + /* |h4| <= 2^25 */ + /* |h1| <= 1.71*2^59 */ + /* |h5| <= 1.71*2^59 */ + + carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + /* |h1| <= 2^24; from now on fits into int32 */ + /* |h5| <= 2^24; from now on fits into int32 */ + /* |h2| <= 1.41*2^60 */ + /* |h6| <= 1.41*2^60 */ + + carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + /* |h2| <= 2^25; from now on fits into int32 unchanged */ + /* |h6| <= 2^25; from now on fits into int32 unchanged */ + /* |h3| <= 1.71*2^59 */ + /* |h7| <= 1.71*2^59 */ + + carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + /* |h3| <= 2^24; from now on fits into int32 unchanged */ + /* |h7| <= 2^24; from now on fits into int32 unchanged */ + /* |h4| <= 1.72*2^34 */ + /* |h8| <= 1.41*2^60 */ + + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + /* |h4| <= 2^25; from now on fits into int32 unchanged */ + /* |h8| <= 2^25; from now on fits into int32 unchanged */ + /* |h5| <= 1.01*2^24 */ + /* |h9| <= 1.71*2^59 */ + + carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + /* |h9| <= 2^24; from now on fits into int32 unchanged */ + /* |h0| <= 1.1*2^39 */ + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + /* |h0| <= 2^25; from now on fits into int32 unchanged */ + /* |h1| <= 1.01*2^24 */ + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_neg.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_neg.c new file mode 100644 index 00000000..2078ce52 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_neg.c @@ -0,0 +1,45 @@ +#include "fe.h" + +/* +h = -f + +Preconditions: + |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + +Postconditions: + |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +*/ + +void fe_neg(fe h,const fe f) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 h0 = -f0; + crypto_int32 h1 = -f1; + crypto_int32 h2 = -f2; + crypto_int32 h3 = -f3; + crypto_int32 h4 = -f4; + crypto_int32 h5 = -f5; + crypto_int32 h6 = -f6; + crypto_int32 h7 = -f7; + crypto_int32 h8 = -f8; + crypto_int32 h9 = -f9; + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_pow22523.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_pow22523.c new file mode 100644 index 00000000..56675a59 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_pow22523.c @@ -0,0 +1,13 @@ +#include "fe.h" + +void fe_pow22523(fe out,const fe z) +{ + fe t0; + fe t1; + fe t2; + int i; + +#include "pow22523.h" + + return; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sq.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sq.c new file mode 100644 index 00000000..8dd11984 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sq.c @@ -0,0 +1,149 @@ +#include "fe.h" +#include "crypto_int64.h" + +/* +h = f * f +Can overlap h with f. + +Preconditions: + |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + +Postconditions: + |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. +*/ + +/* +See fe_mul.c for discussion of implementation strategy. +*/ + +void fe_sq(fe h,const fe f) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 f0_2 = 2 * f0; + crypto_int32 f1_2 = 2 * f1; + crypto_int32 f2_2 = 2 * f2; + crypto_int32 f3_2 = 2 * f3; + crypto_int32 f4_2 = 2 * f4; + crypto_int32 f5_2 = 2 * f5; + crypto_int32 f6_2 = 2 * f6; + crypto_int32 f7_2 = 2 * f7; + crypto_int32 f5_38 = 38 * f5; /* 1.959375*2^30 */ + crypto_int32 f6_19 = 19 * f6; /* 1.959375*2^30 */ + crypto_int32 f7_38 = 38 * f7; /* 1.959375*2^30 */ + crypto_int32 f8_19 = 19 * f8; /* 1.959375*2^30 */ + crypto_int32 f9_38 = 38 * f9; /* 1.959375*2^30 */ + crypto_int64 f0f0 = f0 * (crypto_int64) f0; + crypto_int64 f0f1_2 = f0_2 * (crypto_int64) f1; + crypto_int64 f0f2_2 = f0_2 * (crypto_int64) f2; + crypto_int64 f0f3_2 = f0_2 * (crypto_int64) f3; + crypto_int64 f0f4_2 = f0_2 * (crypto_int64) f4; + crypto_int64 f0f5_2 = f0_2 * (crypto_int64) f5; + crypto_int64 f0f6_2 = f0_2 * (crypto_int64) f6; + crypto_int64 f0f7_2 = f0_2 * (crypto_int64) f7; + crypto_int64 f0f8_2 = f0_2 * (crypto_int64) f8; + crypto_int64 f0f9_2 = f0_2 * (crypto_int64) f9; + crypto_int64 f1f1_2 = f1_2 * (crypto_int64) f1; + crypto_int64 f1f2_2 = f1_2 * (crypto_int64) f2; + crypto_int64 f1f3_4 = f1_2 * (crypto_int64) f3_2; + crypto_int64 f1f4_2 = f1_2 * (crypto_int64) f4; + crypto_int64 f1f5_4 = f1_2 * (crypto_int64) f5_2; + crypto_int64 f1f6_2 = f1_2 * (crypto_int64) f6; + crypto_int64 f1f7_4 = f1_2 * (crypto_int64) f7_2; + crypto_int64 f1f8_2 = f1_2 * (crypto_int64) f8; + crypto_int64 f1f9_76 = f1_2 * (crypto_int64) f9_38; + crypto_int64 f2f2 = f2 * (crypto_int64) f2; + crypto_int64 f2f3_2 = f2_2 * (crypto_int64) f3; + crypto_int64 f2f4_2 = f2_2 * (crypto_int64) f4; + crypto_int64 f2f5_2 = f2_2 * (crypto_int64) f5; + crypto_int64 f2f6_2 = f2_2 * (crypto_int64) f6; + crypto_int64 f2f7_2 = f2_2 * (crypto_int64) f7; + crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19; + crypto_int64 f2f9_38 = f2 * (crypto_int64) f9_38; + crypto_int64 f3f3_2 = f3_2 * (crypto_int64) f3; + crypto_int64 f3f4_2 = f3_2 * (crypto_int64) f4; + crypto_int64 f3f5_4 = f3_2 * (crypto_int64) f5_2; + crypto_int64 f3f6_2 = f3_2 * (crypto_int64) f6; + crypto_int64 f3f7_76 = f3_2 * (crypto_int64) f7_38; + crypto_int64 f3f8_38 = f3_2 * (crypto_int64) f8_19; + crypto_int64 f3f9_76 = f3_2 * (crypto_int64) f9_38; + crypto_int64 f4f4 = f4 * (crypto_int64) f4; + crypto_int64 f4f5_2 = f4_2 * (crypto_int64) f5; + crypto_int64 f4f6_38 = f4_2 * (crypto_int64) f6_19; + crypto_int64 f4f7_38 = f4 * (crypto_int64) f7_38; + crypto_int64 f4f8_38 = f4_2 * (crypto_int64) f8_19; + crypto_int64 f4f9_38 = f4 * (crypto_int64) f9_38; + crypto_int64 f5f5_38 = f5 * (crypto_int64) f5_38; + crypto_int64 f5f6_38 = f5_2 * (crypto_int64) f6_19; + crypto_int64 f5f7_76 = f5_2 * (crypto_int64) f7_38; + crypto_int64 f5f8_38 = f5_2 * (crypto_int64) f8_19; + crypto_int64 f5f9_76 = f5_2 * (crypto_int64) f9_38; + crypto_int64 f6f6_19 = f6 * (crypto_int64) f6_19; + crypto_int64 f6f7_38 = f6 * (crypto_int64) f7_38; + crypto_int64 f6f8_38 = f6_2 * (crypto_int64) f8_19; + crypto_int64 f6f9_38 = f6 * (crypto_int64) f9_38; + crypto_int64 f7f7_38 = f7 * (crypto_int64) f7_38; + crypto_int64 f7f8_38 = f7_2 * (crypto_int64) f8_19; + crypto_int64 f7f9_76 = f7_2 * (crypto_int64) f9_38; + crypto_int64 f8f8_19 = f8 * (crypto_int64) f8_19; + crypto_int64 f8f9_38 = f8 * (crypto_int64) f9_38; + crypto_int64 f9f9_38 = f9 * (crypto_int64) f9_38; + crypto_int64 h0 = f0f0 +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38; + crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38; + crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19; + crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38; + crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2 +f5f9_76+f6f8_38+f7f7_38; + crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38; + crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19; + crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38; + crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4 +f9f9_38; + crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + + carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + + carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + + carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + + carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sq2.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sq2.c new file mode 100644 index 00000000..026ed3aa --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sq2.c @@ -0,0 +1,160 @@ +#include "fe.h" +#include "crypto_int64.h" + +/* +h = 2 * f * f +Can overlap h with f. + +Preconditions: + |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + +Postconditions: + |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. +*/ + +/* +See fe_mul.c for discussion of implementation strategy. +*/ + +void fe_sq2(fe h,const fe f) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 f0_2 = 2 * f0; + crypto_int32 f1_2 = 2 * f1; + crypto_int32 f2_2 = 2 * f2; + crypto_int32 f3_2 = 2 * f3; + crypto_int32 f4_2 = 2 * f4; + crypto_int32 f5_2 = 2 * f5; + crypto_int32 f6_2 = 2 * f6; + crypto_int32 f7_2 = 2 * f7; + crypto_int32 f5_38 = 38 * f5; /* 1.959375*2^30 */ + crypto_int32 f6_19 = 19 * f6; /* 1.959375*2^30 */ + crypto_int32 f7_38 = 38 * f7; /* 1.959375*2^30 */ + crypto_int32 f8_19 = 19 * f8; /* 1.959375*2^30 */ + crypto_int32 f9_38 = 38 * f9; /* 1.959375*2^30 */ + crypto_int64 f0f0 = f0 * (crypto_int64) f0; + crypto_int64 f0f1_2 = f0_2 * (crypto_int64) f1; + crypto_int64 f0f2_2 = f0_2 * (crypto_int64) f2; + crypto_int64 f0f3_2 = f0_2 * (crypto_int64) f3; + crypto_int64 f0f4_2 = f0_2 * (crypto_int64) f4; + crypto_int64 f0f5_2 = f0_2 * (crypto_int64) f5; + crypto_int64 f0f6_2 = f0_2 * (crypto_int64) f6; + crypto_int64 f0f7_2 = f0_2 * (crypto_int64) f7; + crypto_int64 f0f8_2 = f0_2 * (crypto_int64) f8; + crypto_int64 f0f9_2 = f0_2 * (crypto_int64) f9; + crypto_int64 f1f1_2 = f1_2 * (crypto_int64) f1; + crypto_int64 f1f2_2 = f1_2 * (crypto_int64) f2; + crypto_int64 f1f3_4 = f1_2 * (crypto_int64) f3_2; + crypto_int64 f1f4_2 = f1_2 * (crypto_int64) f4; + crypto_int64 f1f5_4 = f1_2 * (crypto_int64) f5_2; + crypto_int64 f1f6_2 = f1_2 * (crypto_int64) f6; + crypto_int64 f1f7_4 = f1_2 * (crypto_int64) f7_2; + crypto_int64 f1f8_2 = f1_2 * (crypto_int64) f8; + crypto_int64 f1f9_76 = f1_2 * (crypto_int64) f9_38; + crypto_int64 f2f2 = f2 * (crypto_int64) f2; + crypto_int64 f2f3_2 = f2_2 * (crypto_int64) f3; + crypto_int64 f2f4_2 = f2_2 * (crypto_int64) f4; + crypto_int64 f2f5_2 = f2_2 * (crypto_int64) f5; + crypto_int64 f2f6_2 = f2_2 * (crypto_int64) f6; + crypto_int64 f2f7_2 = f2_2 * (crypto_int64) f7; + crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19; + crypto_int64 f2f9_38 = f2 * (crypto_int64) f9_38; + crypto_int64 f3f3_2 = f3_2 * (crypto_int64) f3; + crypto_int64 f3f4_2 = f3_2 * (crypto_int64) f4; + crypto_int64 f3f5_4 = f3_2 * (crypto_int64) f5_2; + crypto_int64 f3f6_2 = f3_2 * (crypto_int64) f6; + crypto_int64 f3f7_76 = f3_2 * (crypto_int64) f7_38; + crypto_int64 f3f8_38 = f3_2 * (crypto_int64) f8_19; + crypto_int64 f3f9_76 = f3_2 * (crypto_int64) f9_38; + crypto_int64 f4f4 = f4 * (crypto_int64) f4; + crypto_int64 f4f5_2 = f4_2 * (crypto_int64) f5; + crypto_int64 f4f6_38 = f4_2 * (crypto_int64) f6_19; + crypto_int64 f4f7_38 = f4 * (crypto_int64) f7_38; + crypto_int64 f4f8_38 = f4_2 * (crypto_int64) f8_19; + crypto_int64 f4f9_38 = f4 * (crypto_int64) f9_38; + crypto_int64 f5f5_38 = f5 * (crypto_int64) f5_38; + crypto_int64 f5f6_38 = f5_2 * (crypto_int64) f6_19; + crypto_int64 f5f7_76 = f5_2 * (crypto_int64) f7_38; + crypto_int64 f5f8_38 = f5_2 * (crypto_int64) f8_19; + crypto_int64 f5f9_76 = f5_2 * (crypto_int64) f9_38; + crypto_int64 f6f6_19 = f6 * (crypto_int64) f6_19; + crypto_int64 f6f7_38 = f6 * (crypto_int64) f7_38; + crypto_int64 f6f8_38 = f6_2 * (crypto_int64) f8_19; + crypto_int64 f6f9_38 = f6 * (crypto_int64) f9_38; + crypto_int64 f7f7_38 = f7 * (crypto_int64) f7_38; + crypto_int64 f7f8_38 = f7_2 * (crypto_int64) f8_19; + crypto_int64 f7f9_76 = f7_2 * (crypto_int64) f9_38; + crypto_int64 f8f8_19 = f8 * (crypto_int64) f8_19; + crypto_int64 f8f9_38 = f8 * (crypto_int64) f9_38; + crypto_int64 f9f9_38 = f9 * (crypto_int64) f9_38; + crypto_int64 h0 = f0f0 +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38; + crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38; + crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19; + crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38; + crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2 +f5f9_76+f6f8_38+f7f7_38; + crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38; + crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19; + crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38; + crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4 +f9f9_38; + crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + + h0 += h0; + h1 += h1; + h2 += h2; + h3 += h3; + h4 += h4; + h5 += h5; + h6 += h6; + h7 += h7; + h8 += h8; + h9 += h9; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + + carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + + carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + + carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + + carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sub.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sub.c new file mode 100644 index 00000000..6e26b7df --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sub.c @@ -0,0 +1,57 @@ +#include "fe.h" + +/* +h = f - g +Can overlap h with f or g. + +Preconditions: + |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + +Postconditions: + |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +*/ + +void fe_sub(fe h,const fe f,const fe g) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 g0 = g[0]; + crypto_int32 g1 = g[1]; + crypto_int32 g2 = g[2]; + crypto_int32 g3 = g[3]; + crypto_int32 g4 = g[4]; + crypto_int32 g5 = g[5]; + crypto_int32 g6 = g[6]; + crypto_int32 g7 = g[7]; + crypto_int32 g8 = g[8]; + crypto_int32 g9 = g[9]; + crypto_int32 h0 = f0 - g0; + crypto_int32 h1 = f1 - g1; + crypto_int32 h2 = f2 - g2; + crypto_int32 h3 = f3 - g3; + crypto_int32 h4 = f4 - g4; + crypto_int32 h5 = f5 - g5; + crypto_int32 h6 = f6 - g6; + crypto_int32 h7 = f7 - g7; + crypto_int32 h8 = f8 - g8; + crypto_int32 h9 = f9 - g9; + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_tobytes.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_tobytes.c new file mode 100644 index 00000000..0a63baf9 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_tobytes.c @@ -0,0 +1,119 @@ +#include "fe.h" + +/* +Preconditions: + |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + +Write p=2^255-19; q=floor(h/p). +Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))). + +Proof: + Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4. + Also have |h-2^230 h9|<2^231 so |19 2^(-255)(h-2^230 h9)|<1/4. + + Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9). + Then 0<y<1. + + Write r=h-pq. + Have 0<=r<=p-1=2^255-20. + Thus 0<=r+19(2^-255)r<r+19(2^-255)2^255<=2^255-1. + + Write x=r+19(2^-255)r+y. + Then 0<x<2^255 so floor(2^(-255)x) = 0 so floor(q+2^(-255)x) = q. + + Have q+2^(-255)x = 2^(-255)(h + 19 2^(-25) h9 + 2^(-1)) + so floor(2^(-255)(h + 19 2^(-25) h9 + 2^(-1))) = q. +*/ + +void fe_tobytes(unsigned char *s,const fe h) +{ + crypto_int32 h0 = h[0]; + crypto_int32 h1 = h[1]; + crypto_int32 h2 = h[2]; + crypto_int32 h3 = h[3]; + crypto_int32 h4 = h[4]; + crypto_int32 h5 = h[5]; + crypto_int32 h6 = h[6]; + crypto_int32 h7 = h[7]; + crypto_int32 h8 = h[8]; + crypto_int32 h9 = h[9]; + crypto_int32 q; + crypto_int32 carry0; + crypto_int32 carry1; + crypto_int32 carry2; + crypto_int32 carry3; + crypto_int32 carry4; + crypto_int32 carry5; + crypto_int32 carry6; + crypto_int32 carry7; + crypto_int32 carry8; + crypto_int32 carry9; + + q = (19 * h9 + (((crypto_int32) 1) << 24)) >> 25; + q = (h0 + q) >> 26; + q = (h1 + q) >> 25; + q = (h2 + q) >> 26; + q = (h3 + q) >> 25; + q = (h4 + q) >> 26; + q = (h5 + q) >> 25; + q = (h6 + q) >> 26; + q = (h7 + q) >> 25; + q = (h8 + q) >> 26; + q = (h9 + q) >> 25; + + /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */ + h0 += 19 * q; + /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */ + + carry0 = h0 >> 26; h1 += carry0; h0 -= carry0 << 26; + carry1 = h1 >> 25; h2 += carry1; h1 -= carry1 << 25; + carry2 = h2 >> 26; h3 += carry2; h2 -= carry2 << 26; + carry3 = h3 >> 25; h4 += carry3; h3 -= carry3 << 25; + carry4 = h4 >> 26; h5 += carry4; h4 -= carry4 << 26; + carry5 = h5 >> 25; h6 += carry5; h5 -= carry5 << 25; + carry6 = h6 >> 26; h7 += carry6; h6 -= carry6 << 26; + carry7 = h7 >> 25; h8 += carry7; h7 -= carry7 << 25; + carry8 = h8 >> 26; h9 += carry8; h8 -= carry8 << 26; + carry9 = h9 >> 25; h9 -= carry9 << 25; + /* h10 = carry9 */ + + /* + Goal: Output h0+...+2^255 h10-2^255 q, which is between 0 and 2^255-20. + Have h0+...+2^230 h9 between 0 and 2^255-1; + evidently 2^255 h10-2^255 q = 0. + Goal: Output h0+...+2^230 h9. + */ + + s[0] = h0 >> 0; + s[1] = h0 >> 8; + s[2] = h0 >> 16; + s[3] = (h0 >> 24) | (h1 << 2); + s[4] = h1 >> 6; + s[5] = h1 >> 14; + s[6] = (h1 >> 22) | (h2 << 3); + s[7] = h2 >> 5; + s[8] = h2 >> 13; + s[9] = (h2 >> 21) | (h3 << 5); + s[10] = h3 >> 3; + s[11] = h3 >> 11; + s[12] = (h3 >> 19) | (h4 << 6); + s[13] = h4 >> 2; + s[14] = h4 >> 10; + s[15] = h4 >> 18; + s[16] = h5 >> 0; + s[17] = h5 >> 8; + s[18] = h5 >> 16; + s[19] = (h5 >> 24) | (h6 << 1); + s[20] = h6 >> 7; + s[21] = h6 >> 15; + s[22] = (h6 >> 23) | (h7 << 3); + s[23] = h7 >> 5; + s[24] = h7 >> 13; + s[25] = (h7 >> 21) | (h8 << 4); + s[26] = h8 >> 4; + s[27] = h8 >> 12; + s[28] = (h8 >> 20) | (h9 << 6); + s[29] = h9 >> 2; + s[30] = h9 >> 10; + s[31] = h9 >> 18; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge.h new file mode 100644 index 00000000..55e95f95 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge.h @@ -0,0 +1,95 @@ +#ifndef GE_H +#define GE_H + +/* +ge means group element. + +Here the group is the set of pairs (x,y) of field elements (see fe.h) +satisfying -x^2 + y^2 = 1 + d x^2y^2 +where d = -121665/121666. + +Representations: + ge_p2 (projective): (X:Y:Z) satisfying x=X/Z, y=Y/Z + ge_p3 (extended): (X:Y:Z:T) satisfying x=X/Z, y=Y/Z, XY=ZT + ge_p1p1 (completed): ((X:Z),(Y:T)) satisfying x=X/Z, y=Y/T + ge_precomp (Duif): (y+x,y-x,2dxy) +*/ + +#include "fe.h" + +typedef struct { + fe X; + fe Y; + fe Z; +} ge_p2; + +typedef struct { + fe X; + fe Y; + fe Z; + fe T; +} ge_p3; + +typedef struct { + fe X; + fe Y; + fe Z; + fe T; +} ge_p1p1; + +typedef struct { + fe yplusx; + fe yminusx; + fe xy2d; +} ge_precomp; + +typedef struct { + fe YplusX; + fe YminusX; + fe Z; + fe T2d; +} ge_cached; + +#define ge_frombytes_negate_vartime crypto_sign_ed25519_ref10_ge_frombytes_negate_vartime +#define ge_tobytes crypto_sign_ed25519_ref10_ge_tobytes +#define ge_p3_tobytes crypto_sign_ed25519_ref10_ge_p3_tobytes + +#define ge_p2_0 crypto_sign_ed25519_ref10_ge_p2_0 +#define ge_p3_0 crypto_sign_ed25519_ref10_ge_p3_0 +#define ge_precomp_0 crypto_sign_ed25519_ref10_ge_precomp_0 +#define ge_p3_to_p2 crypto_sign_ed25519_ref10_ge_p3_to_p2 +#define ge_p3_to_cached crypto_sign_ed25519_ref10_ge_p3_to_cached +#define ge_p1p1_to_p2 crypto_sign_ed25519_ref10_ge_p1p1_to_p2 +#define ge_p1p1_to_p3 crypto_sign_ed25519_ref10_ge_p1p1_to_p3 +#define ge_p2_dbl crypto_sign_ed25519_ref10_ge_p2_dbl +#define ge_p3_dbl crypto_sign_ed25519_ref10_ge_p3_dbl + +#define ge_madd crypto_sign_ed25519_ref10_ge_madd +#define ge_msub crypto_sign_ed25519_ref10_ge_msub +#define ge_add crypto_sign_ed25519_ref10_ge_add +#define ge_sub crypto_sign_ed25519_ref10_ge_sub +#define ge_scalarmult_base crypto_sign_ed25519_ref10_ge_scalarmult_base +#define ge_double_scalarmult_vartime crypto_sign_ed25519_ref10_ge_double_scalarmult_vartime + +extern void ge_tobytes(unsigned char *,const ge_p2 *); +extern void ge_p3_tobytes(unsigned char *,const ge_p3 *); +extern int ge_frombytes_negate_vartime(ge_p3 *,const unsigned char *); + +extern void ge_p2_0(ge_p2 *); +extern void ge_p3_0(ge_p3 *); +extern void ge_precomp_0(ge_precomp *); +extern void ge_p3_to_p2(ge_p2 *,const ge_p3 *); +extern void ge_p3_to_cached(ge_cached *,const ge_p3 *); +extern void ge_p1p1_to_p2(ge_p2 *,const ge_p1p1 *); +extern void ge_p1p1_to_p3(ge_p3 *,const ge_p1p1 *); +extern void ge_p2_dbl(ge_p1p1 *,const ge_p2 *); +extern void ge_p3_dbl(ge_p1p1 *,const ge_p3 *); + +extern void ge_madd(ge_p1p1 *,const ge_p3 *,const ge_precomp *); +extern void ge_msub(ge_p1p1 *,const ge_p3 *,const ge_precomp *); +extern void ge_add(ge_p1p1 *,const ge_p3 *,const ge_cached *); +extern void ge_sub(ge_p1p1 *,const ge_p3 *,const ge_cached *); +extern void ge_scalarmult_base(ge_p3 *,const unsigned char *); +extern void ge_double_scalarmult_vartime(ge_p2 *,const unsigned char *,const ge_p3 *,const unsigned char *); + +#endif diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_add.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_add.c new file mode 100644 index 00000000..da7ff5d2 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_add.c @@ -0,0 +1,11 @@ +#include "ge.h" + +/* +r = p + q +*/ + +void ge_add(ge_p1p1 *r,const ge_p3 *p,const ge_cached *q) +{ + fe t0; +#include "ge_add.h" +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_add.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_add.h new file mode 100644 index 00000000..7481f8ff --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_add.h @@ -0,0 +1,97 @@ + +/* qhasm: enter ge_add */ + +/* qhasm: fe X1 */ + +/* qhasm: fe Y1 */ + +/* qhasm: fe Z1 */ + +/* qhasm: fe Z2 */ + +/* qhasm: fe T1 */ + +/* qhasm: fe ZZ */ + +/* qhasm: fe YpX2 */ + +/* qhasm: fe YmX2 */ + +/* qhasm: fe T2d2 */ + +/* qhasm: fe X3 */ + +/* qhasm: fe Y3 */ + +/* qhasm: fe Z3 */ + +/* qhasm: fe T3 */ + +/* qhasm: fe YpX1 */ + +/* qhasm: fe YmX1 */ + +/* qhasm: fe A */ + +/* qhasm: fe B */ + +/* qhasm: fe C */ + +/* qhasm: fe D */ + +/* qhasm: YpX1 = Y1+X1 */ +/* asm 1: fe_add(>YpX1=fe#1,<Y1=fe#12,<X1=fe#11); */ +/* asm 2: fe_add(>YpX1=r->X,<Y1=p->Y,<X1=p->X); */ +fe_add(r->X,p->Y,p->X); + +/* qhasm: YmX1 = Y1-X1 */ +/* asm 1: fe_sub(>YmX1=fe#2,<Y1=fe#12,<X1=fe#11); */ +/* asm 2: fe_sub(>YmX1=r->Y,<Y1=p->Y,<X1=p->X); */ +fe_sub(r->Y,p->Y,p->X); + +/* qhasm: A = YpX1*YpX2 */ +/* asm 1: fe_mul(>A=fe#3,<YpX1=fe#1,<YpX2=fe#15); */ +/* asm 2: fe_mul(>A=r->Z,<YpX1=r->X,<YpX2=q->YplusX); */ +fe_mul(r->Z,r->X,q->YplusX); + +/* qhasm: B = YmX1*YmX2 */ +/* asm 1: fe_mul(>B=fe#2,<YmX1=fe#2,<YmX2=fe#16); */ +/* asm 2: fe_mul(>B=r->Y,<YmX1=r->Y,<YmX2=q->YminusX); */ +fe_mul(r->Y,r->Y,q->YminusX); + +/* qhasm: C = T2d2*T1 */ +/* asm 1: fe_mul(>C=fe#4,<T2d2=fe#18,<T1=fe#14); */ +/* asm 2: fe_mul(>C=r->T,<T2d2=q->T2d,<T1=p->T); */ +fe_mul(r->T,q->T2d,p->T); + +/* qhasm: ZZ = Z1*Z2 */ +/* asm 1: fe_mul(>ZZ=fe#1,<Z1=fe#13,<Z2=fe#17); */ +/* asm 2: fe_mul(>ZZ=r->X,<Z1=p->Z,<Z2=q->Z); */ +fe_mul(r->X,p->Z,q->Z); + +/* qhasm: D = 2*ZZ */ +/* asm 1: fe_add(>D=fe#5,<ZZ=fe#1,<ZZ=fe#1); */ +/* asm 2: fe_add(>D=t0,<ZZ=r->X,<ZZ=r->X); */ +fe_add(t0,r->X,r->X); + +/* qhasm: X3 = A-B */ +/* asm 1: fe_sub(>X3=fe#1,<A=fe#3,<B=fe#2); */ +/* asm 2: fe_sub(>X3=r->X,<A=r->Z,<B=r->Y); */ +fe_sub(r->X,r->Z,r->Y); + +/* qhasm: Y3 = A+B */ +/* asm 1: fe_add(>Y3=fe#2,<A=fe#3,<B=fe#2); */ +/* asm 2: fe_add(>Y3=r->Y,<A=r->Z,<B=r->Y); */ +fe_add(r->Y,r->Z,r->Y); + +/* qhasm: Z3 = D+C */ +/* asm 1: fe_add(>Z3=fe#3,<D=fe#5,<C=fe#4); */ +/* asm 2: fe_add(>Z3=r->Z,<D=t0,<C=r->T); */ +fe_add(r->Z,t0,r->T); + +/* qhasm: T3 = D-C */ +/* asm 1: fe_sub(>T3=fe#4,<D=fe#5,<C=fe#4); */ +/* asm 2: fe_sub(>T3=r->T,<D=t0,<C=r->T); */ +fe_sub(r->T,t0,r->T); + +/* qhasm: return */ diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_double_scalarmult.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_double_scalarmult.c new file mode 100644 index 00000000..f8bf4bf7 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_double_scalarmult.c @@ -0,0 +1,96 @@ +#include "ge.h" + +static void slide(signed char *r,const unsigned char *a) +{ + int i; + int b; + int k; + + for (i = 0;i < 256;++i) + r[i] = 1 & (a[i >> 3] >> (i & 7)); + + for (i = 0;i < 256;++i) + if (r[i]) { + for (b = 1;b <= 6 && i + b < 256;++b) { + if (r[i + b]) { + if (r[i] + (r[i + b] << b) <= 15) { + r[i] += r[i + b] << b; r[i + b] = 0; + } else if (r[i] - (r[i + b] << b) >= -15) { + r[i] -= r[i + b] << b; + for (k = i + b;k < 256;++k) { + if (!r[k]) { + r[k] = 1; + break; + } + r[k] = 0; + } + } else + break; + } + } + } + +} + +static ge_precomp Bi[8] = { +#include "base2.h" +} ; + +/* +r = a * A + b * B +where a = a[0]+256*a[1]+...+256^31 a[31]. +and b = b[0]+256*b[1]+...+256^31 b[31]. +B is the Ed25519 base point (x,4/5) with x positive. +*/ + +void ge_double_scalarmult_vartime(ge_p2 *r,const unsigned char *a,const ge_p3 *A,const unsigned char *b) +{ + signed char aslide[256]; + signed char bslide[256]; + ge_cached Ai[8]; /* A,3A,5A,7A,9A,11A,13A,15A */ + ge_p1p1 t; + ge_p3 u; + ge_p3 A2; + int i; + + slide(aslide,a); + slide(bslide,b); + + ge_p3_to_cached(&Ai[0],A); + ge_p3_dbl(&t,A); ge_p1p1_to_p3(&A2,&t); + ge_add(&t,&A2,&Ai[0]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[1],&u); + ge_add(&t,&A2,&Ai[1]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[2],&u); + ge_add(&t,&A2,&Ai[2]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[3],&u); + ge_add(&t,&A2,&Ai[3]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[4],&u); + ge_add(&t,&A2,&Ai[4]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[5],&u); + ge_add(&t,&A2,&Ai[5]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[6],&u); + ge_add(&t,&A2,&Ai[6]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[7],&u); + + ge_p2_0(r); + + for (i = 255;i >= 0;--i) { + if (aslide[i] || bslide[i]) break; + } + + for (;i >= 0;--i) { + ge_p2_dbl(&t,r); + + if (aslide[i] > 0) { + ge_p1p1_to_p3(&u,&t); + ge_add(&t,&u,&Ai[aslide[i]/2]); + } else if (aslide[i] < 0) { + ge_p1p1_to_p3(&u,&t); + ge_sub(&t,&u,&Ai[(-aslide[i])/2]); + } + + if (bslide[i] > 0) { + ge_p1p1_to_p3(&u,&t); + ge_madd(&t,&u,&Bi[bslide[i]/2]); + } else if (bslide[i] < 0) { + ge_p1p1_to_p3(&u,&t); + ge_msub(&t,&u,&Bi[(-bslide[i])/2]); + } + + ge_p1p1_to_p2(r,&t); + } +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_frombytes.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_frombytes.c new file mode 100644 index 00000000..1a059ee9 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_frombytes.c @@ -0,0 +1,50 @@ +#include "ge.h" + +static const fe d = { +#include "d.h" +} ; + +static const fe sqrtm1 = { +#include "sqrtm1.h" +} ; + +int ge_frombytes_negate_vartime(ge_p3 *h,const unsigned char *s) +{ + fe u; + fe v; + fe v3; + fe vxx; + fe check; + + fe_frombytes(h->Y,s); + fe_1(h->Z); + fe_sq(u,h->Y); + fe_mul(v,u,d); + fe_sub(u,u,h->Z); /* u = y^2-1 */ + fe_add(v,v,h->Z); /* v = dy^2+1 */ + + fe_sq(v3,v); + fe_mul(v3,v3,v); /* v3 = v^3 */ + fe_sq(h->X,v3); + fe_mul(h->X,h->X,v); + fe_mul(h->X,h->X,u); /* x = uv^7 */ + + fe_pow22523(h->X,h->X); /* x = (uv^7)^((q-5)/8) */ + fe_mul(h->X,h->X,v3); + fe_mul(h->X,h->X,u); /* x = uv^3(uv^7)^((q-5)/8) */ + + fe_sq(vxx,h->X); + fe_mul(vxx,vxx,v); + fe_sub(check,vxx,u); /* vx^2-u */ + if (fe_isnonzero(check)) { + fe_add(check,vxx,u); /* vx^2+u */ + if (fe_isnonzero(check)) return -1; + fe_mul(h->X,h->X,sqrtm1); + } + + if (fe_isnegative(h->X) == (s[31] >> 7)) + fe_neg(h->X,h->X); + + fe_mul(h->T,h->X,h->Y); + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_madd.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_madd.c new file mode 100644 index 00000000..62257177 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_madd.c @@ -0,0 +1,11 @@ +#include "ge.h" + +/* +r = p + q +*/ + +void ge_madd(ge_p1p1 *r,const ge_p3 *p,const ge_precomp *q) +{ + fe t0; +#include "ge_madd.h" +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_madd.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_madd.h new file mode 100644 index 00000000..ecae8495 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_madd.h @@ -0,0 +1,88 @@ + +/* qhasm: enter ge_madd */ + +/* qhasm: fe X1 */ + +/* qhasm: fe Y1 */ + +/* qhasm: fe Z1 */ + +/* qhasm: fe T1 */ + +/* qhasm: fe ypx2 */ + +/* qhasm: fe ymx2 */ + +/* qhasm: fe xy2d2 */ + +/* qhasm: fe X3 */ + +/* qhasm: fe Y3 */ + +/* qhasm: fe Z3 */ + +/* qhasm: fe T3 */ + +/* qhasm: fe YpX1 */ + +/* qhasm: fe YmX1 */ + +/* qhasm: fe A */ + +/* qhasm: fe B */ + +/* qhasm: fe C */ + +/* qhasm: fe D */ + +/* qhasm: YpX1 = Y1+X1 */ +/* asm 1: fe_add(>YpX1=fe#1,<Y1=fe#12,<X1=fe#11); */ +/* asm 2: fe_add(>YpX1=r->X,<Y1=p->Y,<X1=p->X); */ +fe_add(r->X,p->Y,p->X); + +/* qhasm: YmX1 = Y1-X1 */ +/* asm 1: fe_sub(>YmX1=fe#2,<Y1=fe#12,<X1=fe#11); */ +/* asm 2: fe_sub(>YmX1=r->Y,<Y1=p->Y,<X1=p->X); */ +fe_sub(r->Y,p->Y,p->X); + +/* qhasm: A = YpX1*ypx2 */ +/* asm 1: fe_mul(>A=fe#3,<YpX1=fe#1,<ypx2=fe#15); */ +/* asm 2: fe_mul(>A=r->Z,<YpX1=r->X,<ypx2=q->yplusx); */ +fe_mul(r->Z,r->X,q->yplusx); + +/* qhasm: B = YmX1*ymx2 */ +/* asm 1: fe_mul(>B=fe#2,<YmX1=fe#2,<ymx2=fe#16); */ +/* asm 2: fe_mul(>B=r->Y,<YmX1=r->Y,<ymx2=q->yminusx); */ +fe_mul(r->Y,r->Y,q->yminusx); + +/* qhasm: C = xy2d2*T1 */ +/* asm 1: fe_mul(>C=fe#4,<xy2d2=fe#17,<T1=fe#14); */ +/* asm 2: fe_mul(>C=r->T,<xy2d2=q->xy2d,<T1=p->T); */ +fe_mul(r->T,q->xy2d,p->T); + +/* qhasm: D = 2*Z1 */ +/* asm 1: fe_add(>D=fe#5,<Z1=fe#13,<Z1=fe#13); */ +/* asm 2: fe_add(>D=t0,<Z1=p->Z,<Z1=p->Z); */ +fe_add(t0,p->Z,p->Z); + +/* qhasm: X3 = A-B */ +/* asm 1: fe_sub(>X3=fe#1,<A=fe#3,<B=fe#2); */ +/* asm 2: fe_sub(>X3=r->X,<A=r->Z,<B=r->Y); */ +fe_sub(r->X,r->Z,r->Y); + +/* qhasm: Y3 = A+B */ +/* asm 1: fe_add(>Y3=fe#2,<A=fe#3,<B=fe#2); */ +/* asm 2: fe_add(>Y3=r->Y,<A=r->Z,<B=r->Y); */ +fe_add(r->Y,r->Z,r->Y); + +/* qhasm: Z3 = D+C */ +/* asm 1: fe_add(>Z3=fe#3,<D=fe#5,<C=fe#4); */ +/* asm 2: fe_add(>Z3=r->Z,<D=t0,<C=r->T); */ +fe_add(r->Z,t0,r->T); + +/* qhasm: T3 = D-C */ +/* asm 1: fe_sub(>T3=fe#4,<D=fe#5,<C=fe#4); */ +/* asm 2: fe_sub(>T3=r->T,<D=t0,<C=r->T); */ +fe_sub(r->T,t0,r->T); + +/* qhasm: return */ diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_msub.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_msub.c new file mode 100644 index 00000000..741ecbf1 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_msub.c @@ -0,0 +1,11 @@ +#include "ge.h" + +/* +r = p - q +*/ + +void ge_msub(ge_p1p1 *r,const ge_p3 *p,const ge_precomp *q) +{ + fe t0; +#include "ge_msub.h" +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_msub.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_msub.h new file mode 100644 index 00000000..500f986b --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_msub.h @@ -0,0 +1,88 @@ + +/* qhasm: enter ge_msub */ + +/* qhasm: fe X1 */ + +/* qhasm: fe Y1 */ + +/* qhasm: fe Z1 */ + +/* qhasm: fe T1 */ + +/* qhasm: fe ypx2 */ + +/* qhasm: fe ymx2 */ + +/* qhasm: fe xy2d2 */ + +/* qhasm: fe X3 */ + +/* qhasm: fe Y3 */ + +/* qhasm: fe Z3 */ + +/* qhasm: fe T3 */ + +/* qhasm: fe YpX1 */ + +/* qhasm: fe YmX1 */ + +/* qhasm: fe A */ + +/* qhasm: fe B */ + +/* qhasm: fe C */ + +/* qhasm: fe D */ + +/* qhasm: YpX1 = Y1+X1 */ +/* asm 1: fe_add(>YpX1=fe#1,<Y1=fe#12,<X1=fe#11); */ +/* asm 2: fe_add(>YpX1=r->X,<Y1=p->Y,<X1=p->X); */ +fe_add(r->X,p->Y,p->X); + +/* qhasm: YmX1 = Y1-X1 */ +/* asm 1: fe_sub(>YmX1=fe#2,<Y1=fe#12,<X1=fe#11); */ +/* asm 2: fe_sub(>YmX1=r->Y,<Y1=p->Y,<X1=p->X); */ +fe_sub(r->Y,p->Y,p->X); + +/* qhasm: A = YpX1*ymx2 */ +/* asm 1: fe_mul(>A=fe#3,<YpX1=fe#1,<ymx2=fe#16); */ +/* asm 2: fe_mul(>A=r->Z,<YpX1=r->X,<ymx2=q->yminusx); */ +fe_mul(r->Z,r->X,q->yminusx); + +/* qhasm: B = YmX1*ypx2 */ +/* asm 1: fe_mul(>B=fe#2,<YmX1=fe#2,<ypx2=fe#15); */ +/* asm 2: fe_mul(>B=r->Y,<YmX1=r->Y,<ypx2=q->yplusx); */ +fe_mul(r->Y,r->Y,q->yplusx); + +/* qhasm: C = xy2d2*T1 */ +/* asm 1: fe_mul(>C=fe#4,<xy2d2=fe#17,<T1=fe#14); */ +/* asm 2: fe_mul(>C=r->T,<xy2d2=q->xy2d,<T1=p->T); */ +fe_mul(r->T,q->xy2d,p->T); + +/* qhasm: D = 2*Z1 */ +/* asm 1: fe_add(>D=fe#5,<Z1=fe#13,<Z1=fe#13); */ +/* asm 2: fe_add(>D=t0,<Z1=p->Z,<Z1=p->Z); */ +fe_add(t0,p->Z,p->Z); + +/* qhasm: X3 = A-B */ +/* asm 1: fe_sub(>X3=fe#1,<A=fe#3,<B=fe#2); */ +/* asm 2: fe_sub(>X3=r->X,<A=r->Z,<B=r->Y); */ +fe_sub(r->X,r->Z,r->Y); + +/* qhasm: Y3 = A+B */ +/* asm 1: fe_add(>Y3=fe#2,<A=fe#3,<B=fe#2); */ +/* asm 2: fe_add(>Y3=r->Y,<A=r->Z,<B=r->Y); */ +fe_add(r->Y,r->Z,r->Y); + +/* qhasm: Z3 = D-C */ +/* asm 1: fe_sub(>Z3=fe#3,<D=fe#5,<C=fe#4); */ +/* asm 2: fe_sub(>Z3=r->Z,<D=t0,<C=r->T); */ +fe_sub(r->Z,t0,r->T); + +/* qhasm: T3 = D+C */ +/* asm 1: fe_add(>T3=fe#4,<D=fe#5,<C=fe#4); */ +/* asm 2: fe_add(>T3=r->T,<D=t0,<C=r->T); */ +fe_add(r->T,t0,r->T); + +/* qhasm: return */ diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c new file mode 100644 index 00000000..9bb5013d --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c @@ -0,0 +1,12 @@ +#include "ge.h" + +/* +r = p +*/ + +extern void ge_p1p1_to_p2(ge_p2 *r,const ge_p1p1 *p) +{ + fe_mul(r->X,p->X,p->T); + fe_mul(r->Y,p->Y,p->Z); + fe_mul(r->Z,p->Z,p->T); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c new file mode 100644 index 00000000..2f57b109 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c @@ -0,0 +1,13 @@ +#include "ge.h" + +/* +r = p +*/ + +extern void ge_p1p1_to_p3(ge_p3 *r,const ge_p1p1 *p) +{ + fe_mul(r->X,p->X,p->T); + fe_mul(r->Y,p->Y,p->Z); + fe_mul(r->Z,p->Z,p->T); + fe_mul(r->T,p->X,p->Y); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_0.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_0.c new file mode 100644 index 00000000..6191d1e6 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_0.c @@ -0,0 +1,8 @@ +#include "ge.h" + +void ge_p2_0(ge_p2 *h) +{ + fe_0(h->X); + fe_1(h->Y); + fe_1(h->Z); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_dbl.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_dbl.c new file mode 100644 index 00000000..2e332b5c --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_dbl.c @@ -0,0 +1,11 @@ +#include "ge.h" + +/* +r = 2 * p +*/ + +void ge_p2_dbl(ge_p1p1 *r,const ge_p2 *p) +{ + fe t0; +#include "ge_p2_dbl.h" +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_dbl.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_dbl.h new file mode 100644 index 00000000..128efed9 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_dbl.h @@ -0,0 +1,73 @@ + +/* qhasm: enter ge_p2_dbl */ + +/* qhasm: fe X1 */ + +/* qhasm: fe Y1 */ + +/* qhasm: fe Z1 */ + +/* qhasm: fe A */ + +/* qhasm: fe AA */ + +/* qhasm: fe XX */ + +/* qhasm: fe YY */ + +/* qhasm: fe B */ + +/* qhasm: fe X3 */ + +/* qhasm: fe Y3 */ + +/* qhasm: fe Z3 */ + +/* qhasm: fe T3 */ + +/* qhasm: XX=X1^2 */ +/* asm 1: fe_sq(>XX=fe#1,<X1=fe#11); */ +/* asm 2: fe_sq(>XX=r->X,<X1=p->X); */ +fe_sq(r->X,p->X); + +/* qhasm: YY=Y1^2 */ +/* asm 1: fe_sq(>YY=fe#3,<Y1=fe#12); */ +/* asm 2: fe_sq(>YY=r->Z,<Y1=p->Y); */ +fe_sq(r->Z,p->Y); + +/* qhasm: B=2*Z1^2 */ +/* asm 1: fe_sq2(>B=fe#4,<Z1=fe#13); */ +/* asm 2: fe_sq2(>B=r->T,<Z1=p->Z); */ +fe_sq2(r->T,p->Z); + +/* qhasm: A=X1+Y1 */ +/* asm 1: fe_add(>A=fe#2,<X1=fe#11,<Y1=fe#12); */ +/* asm 2: fe_add(>A=r->Y,<X1=p->X,<Y1=p->Y); */ +fe_add(r->Y,p->X,p->Y); + +/* qhasm: AA=A^2 */ +/* asm 1: fe_sq(>AA=fe#5,<A=fe#2); */ +/* asm 2: fe_sq(>AA=t0,<A=r->Y); */ +fe_sq(t0,r->Y); + +/* qhasm: Y3=YY+XX */ +/* asm 1: fe_add(>Y3=fe#2,<YY=fe#3,<XX=fe#1); */ +/* asm 2: fe_add(>Y3=r->Y,<YY=r->Z,<XX=r->X); */ +fe_add(r->Y,r->Z,r->X); + +/* qhasm: Z3=YY-XX */ +/* asm 1: fe_sub(>Z3=fe#3,<YY=fe#3,<XX=fe#1); */ +/* asm 2: fe_sub(>Z3=r->Z,<YY=r->Z,<XX=r->X); */ +fe_sub(r->Z,r->Z,r->X); + +/* qhasm: X3=AA-Y3 */ +/* asm 1: fe_sub(>X3=fe#1,<AA=fe#5,<Y3=fe#2); */ +/* asm 2: fe_sub(>X3=r->X,<AA=t0,<Y3=r->Y); */ +fe_sub(r->X,t0,r->Y); + +/* qhasm: T3=B-Z3 */ +/* asm 1: fe_sub(>T3=fe#4,<B=fe#4,<Z3=fe#3); */ +/* asm 2: fe_sub(>T3=r->T,<B=r->T,<Z3=r->Z); */ +fe_sub(r->T,r->T,r->Z); + +/* qhasm: return */ diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_0.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_0.c new file mode 100644 index 00000000..401b2935 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_0.c @@ -0,0 +1,9 @@ +#include "ge.h" + +void ge_p3_0(ge_p3 *h) +{ + fe_0(h->X); + fe_1(h->Y); + fe_1(h->Z); + fe_0(h->T); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_dbl.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_dbl.c new file mode 100644 index 00000000..0d8a0591 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_dbl.c @@ -0,0 +1,12 @@ +#include "ge.h" + +/* +r = 2 * p +*/ + +void ge_p3_dbl(ge_p1p1 *r,const ge_p3 *p) +{ + ge_p2 q; + ge_p3_to_p2(&q,p); + ge_p2_dbl(r,&q); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_to_cached.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_to_cached.c new file mode 100644 index 00000000..bde64228 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_to_cached.c @@ -0,0 +1,17 @@ +#include "ge.h" + +/* +r = p +*/ + +static const fe d2 = { +#include "d2.h" +} ; + +extern void ge_p3_to_cached(ge_cached *r,const ge_p3 *p) +{ + fe_add(r->YplusX,p->Y,p->X); + fe_sub(r->YminusX,p->Y,p->X); + fe_copy(r->Z,p->Z); + fe_mul(r->T2d,p->T,d2); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_to_p2.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_to_p2.c new file mode 100644 index 00000000..e532a9e4 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_to_p2.c @@ -0,0 +1,12 @@ +#include "ge.h" + +/* +r = p +*/ + +extern void ge_p3_to_p2(ge_p2 *r,const ge_p3 *p) +{ + fe_copy(r->X,p->X); + fe_copy(r->Y,p->Y); + fe_copy(r->Z,p->Z); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_tobytes.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_tobytes.c new file mode 100644 index 00000000..21cb2fc6 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_tobytes.c @@ -0,0 +1,14 @@ +#include "ge.h" + +void ge_p3_tobytes(unsigned char *s,const ge_p3 *h) +{ + fe recip; + fe x; + fe y; + + fe_invert(recip,h->Z); + fe_mul(x,h->X,recip); + fe_mul(y,h->Y,recip); + fe_tobytes(s,y); + s[31] ^= fe_isnegative(x) << 7; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_precomp_0.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_precomp_0.c new file mode 100644 index 00000000..2e218861 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_precomp_0.c @@ -0,0 +1,8 @@ +#include "ge.h" + +void ge_precomp_0(ge_precomp *h) +{ + fe_1(h->yplusx); + fe_1(h->yminusx); + fe_0(h->xy2d); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_scalarmult_base.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_scalarmult_base.c new file mode 100644 index 00000000..421e4fa0 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_scalarmult_base.c @@ -0,0 +1,105 @@ +#include "ge.h" +#include "crypto_uint32.h" + +static unsigned char equal(signed char b,signed char c) +{ + unsigned char ub = b; + unsigned char uc = c; + unsigned char x = ub ^ uc; /* 0: yes; 1..255: no */ + crypto_uint32 y = x; /* 0: yes; 1..255: no */ + y -= 1; /* 4294967295: yes; 0..254: no */ + y >>= 31; /* 1: yes; 0: no */ + return y; +} + +static unsigned char negative(signed char b) +{ + unsigned long long x = b; /* 18446744073709551361..18446744073709551615: yes; 0..255: no */ + x >>= 63; /* 1: yes; 0: no */ + return x; +} + +static void cmov(ge_precomp *t,ge_precomp *u,unsigned char b) +{ + fe_cmov(t->yplusx,u->yplusx,b); + fe_cmov(t->yminusx,u->yminusx,b); + fe_cmov(t->xy2d,u->xy2d,b); +} + +/* base[i][j] = (j+1)*256^i*B */ +static ge_precomp base[32][8] = { +#include "base.h" +} ; + +static void select(ge_precomp *t,int pos,signed char b) +{ + ge_precomp minust; + unsigned char bnegative = negative(b); + unsigned char babs = b - (((-bnegative) & b) << 1); + + ge_precomp_0(t); + cmov(t,&base[pos][0],equal(babs,1)); + cmov(t,&base[pos][1],equal(babs,2)); + cmov(t,&base[pos][2],equal(babs,3)); + cmov(t,&base[pos][3],equal(babs,4)); + cmov(t,&base[pos][4],equal(babs,5)); + cmov(t,&base[pos][5],equal(babs,6)); + cmov(t,&base[pos][6],equal(babs,7)); + cmov(t,&base[pos][7],equal(babs,8)); + fe_copy(minust.yplusx,t->yminusx); + fe_copy(minust.yminusx,t->yplusx); + fe_neg(minust.xy2d,t->xy2d); + cmov(t,&minust,bnegative); +} + +/* +h = a * B +where a = a[0]+256*a[1]+...+256^31 a[31] +B is the Ed25519 base point (x,4/5) with x positive. + +Preconditions: + a[31] <= 127 +*/ + +void ge_scalarmult_base(ge_p3 *h,const unsigned char *a) +{ + signed char e[64]; + signed char carry; + ge_p1p1 r; + ge_p2 s; + ge_precomp t; + int i; + + for (i = 0;i < 32;++i) { + e[2 * i + 0] = (a[i] >> 0) & 15; + e[2 * i + 1] = (a[i] >> 4) & 15; + } + /* each e[i] is between 0 and 15 */ + /* e[63] is between 0 and 7 */ + + carry = 0; + for (i = 0;i < 63;++i) { + e[i] += carry; + carry = e[i] + 8; + carry >>= 4; + e[i] -= carry << 4; + } + e[63] += carry; + /* each e[i] is between -8 and 8 */ + + ge_p3_0(h); + for (i = 1;i < 64;i += 2) { + select(&t,i / 2,e[i]); + ge_madd(&r,h,&t); ge_p1p1_to_p3(h,&r); + } + + ge_p3_dbl(&r,h); ge_p1p1_to_p2(&s,&r); + ge_p2_dbl(&r,&s); ge_p1p1_to_p2(&s,&r); + ge_p2_dbl(&r,&s); ge_p1p1_to_p2(&s,&r); + ge_p2_dbl(&r,&s); ge_p1p1_to_p3(h,&r); + + for (i = 0;i < 64;i += 2) { + select(&t,i / 2,e[i]); + ge_madd(&r,h,&t); ge_p1p1_to_p3(h,&r); + } +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_sub.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_sub.c new file mode 100644 index 00000000..69f3d540 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_sub.c @@ -0,0 +1,11 @@ +#include "ge.h" + +/* +r = p - q +*/ + +void ge_sub(ge_p1p1 *r,const ge_p3 *p,const ge_cached *q) +{ + fe t0; +#include "ge_sub.h" +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_sub.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_sub.h new file mode 100644 index 00000000..b4ef1f5d --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_sub.h @@ -0,0 +1,97 @@ + +/* qhasm: enter ge_sub */ + +/* qhasm: fe X1 */ + +/* qhasm: fe Y1 */ + +/* qhasm: fe Z1 */ + +/* qhasm: fe Z2 */ + +/* qhasm: fe T1 */ + +/* qhasm: fe ZZ */ + +/* qhasm: fe YpX2 */ + +/* qhasm: fe YmX2 */ + +/* qhasm: fe T2d2 */ + +/* qhasm: fe X3 */ + +/* qhasm: fe Y3 */ + +/* qhasm: fe Z3 */ + +/* qhasm: fe T3 */ + +/* qhasm: fe YpX1 */ + +/* qhasm: fe YmX1 */ + +/* qhasm: fe A */ + +/* qhasm: fe B */ + +/* qhasm: fe C */ + +/* qhasm: fe D */ + +/* qhasm: YpX1 = Y1+X1 */ +/* asm 1: fe_add(>YpX1=fe#1,<Y1=fe#12,<X1=fe#11); */ +/* asm 2: fe_add(>YpX1=r->X,<Y1=p->Y,<X1=p->X); */ +fe_add(r->X,p->Y,p->X); + +/* qhasm: YmX1 = Y1-X1 */ +/* asm 1: fe_sub(>YmX1=fe#2,<Y1=fe#12,<X1=fe#11); */ +/* asm 2: fe_sub(>YmX1=r->Y,<Y1=p->Y,<X1=p->X); */ +fe_sub(r->Y,p->Y,p->X); + +/* qhasm: A = YpX1*YmX2 */ +/* asm 1: fe_mul(>A=fe#3,<YpX1=fe#1,<YmX2=fe#16); */ +/* asm 2: fe_mul(>A=r->Z,<YpX1=r->X,<YmX2=q->YminusX); */ +fe_mul(r->Z,r->X,q->YminusX); + +/* qhasm: B = YmX1*YpX2 */ +/* asm 1: fe_mul(>B=fe#2,<YmX1=fe#2,<YpX2=fe#15); */ +/* asm 2: fe_mul(>B=r->Y,<YmX1=r->Y,<YpX2=q->YplusX); */ +fe_mul(r->Y,r->Y,q->YplusX); + +/* qhasm: C = T2d2*T1 */ +/* asm 1: fe_mul(>C=fe#4,<T2d2=fe#18,<T1=fe#14); */ +/* asm 2: fe_mul(>C=r->T,<T2d2=q->T2d,<T1=p->T); */ +fe_mul(r->T,q->T2d,p->T); + +/* qhasm: ZZ = Z1*Z2 */ +/* asm 1: fe_mul(>ZZ=fe#1,<Z1=fe#13,<Z2=fe#17); */ +/* asm 2: fe_mul(>ZZ=r->X,<Z1=p->Z,<Z2=q->Z); */ +fe_mul(r->X,p->Z,q->Z); + +/* qhasm: D = 2*ZZ */ +/* asm 1: fe_add(>D=fe#5,<ZZ=fe#1,<ZZ=fe#1); */ +/* asm 2: fe_add(>D=t0,<ZZ=r->X,<ZZ=r->X); */ +fe_add(t0,r->X,r->X); + +/* qhasm: X3 = A-B */ +/* asm 1: fe_sub(>X3=fe#1,<A=fe#3,<B=fe#2); */ +/* asm 2: fe_sub(>X3=r->X,<A=r->Z,<B=r->Y); */ +fe_sub(r->X,r->Z,r->Y); + +/* qhasm: Y3 = A+B */ +/* asm 1: fe_add(>Y3=fe#2,<A=fe#3,<B=fe#2); */ +/* asm 2: fe_add(>Y3=r->Y,<A=r->Z,<B=r->Y); */ +fe_add(r->Y,r->Z,r->Y); + +/* qhasm: Z3 = D-C */ +/* asm 1: fe_sub(>Z3=fe#3,<D=fe#5,<C=fe#4); */ +/* asm 2: fe_sub(>Z3=r->Z,<D=t0,<C=r->T); */ +fe_sub(r->Z,t0,r->T); + +/* qhasm: T3 = D+C */ +/* asm 1: fe_add(>T3=fe#4,<D=fe#5,<C=fe#4); */ +/* asm 2: fe_add(>T3=r->T,<D=t0,<C=r->T); */ +fe_add(r->T,t0,r->T); + +/* qhasm: return */ diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_tobytes.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_tobytes.c new file mode 100644 index 00000000..31b3d33e --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_tobytes.c @@ -0,0 +1,14 @@ +#include "ge.h" + +void ge_tobytes(unsigned char *s,const ge_p2 *h) +{ + fe recip; + fe x; + fe y; + + fe_invert(recip,h->Z); + fe_mul(x,h->X,recip); + fe_mul(y,h->Y,recip); + fe_tobytes(s,y); + s[31] ^= fe_isnegative(x) << 7; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/keypair.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/keypair.c new file mode 100644 index 00000000..d1969254 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/keypair.c @@ -0,0 +1,31 @@ +#include "api.h" +#include "randombytes.h" +#include "crypto_hash_sha512.h" +#include "ge.h" + +int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) +{ + ge_p3 A; + int i; + + crypto_hash_sha512(sk,seed,32); + sk[0] &= 248; + sk[31] &= 63; + sk[31] |= 64; + + ge_scalarmult_base(&A,sk); + ge_p3_tobytes(pk,&A); + + for (i = 0;i < 32;++i) sk[i] = seed[i]; + for (i = 0;i < 32;++i) sk[32 + i] = pk[i]; + return 0; +} + +int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) +{ + unsigned char seed[32]; + + randombytes(seed,32); + return crypto_sign_seed_keypair(pk,sk,seed); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/open.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/open.c new file mode 100644 index 00000000..7e30bfc1 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/open.c @@ -0,0 +1,40 @@ +#include "api.h" +#include "crypto_hash_sha512.h" +#include "crypto_verify_32.h" +#include "ge.h" +#include "sc.h" + +int crypto_sign_open( + unsigned char *m,unsigned long long *mlen, + const unsigned char *sm,unsigned long long smlen, + const unsigned char *pk +) +{ + unsigned char h[64]; + unsigned char checkr[32]; + ge_p3 A; + ge_p2 R; + unsigned long long i; + + *mlen = -1; + if (smlen < 64) return -1; + if (sm[63] & 224) return -1; + if (ge_frombytes_negate_vartime(&A,pk) != 0) return -1; + + for (i = 0;i < smlen;++i) m[i] = sm[i]; + for (i = 0;i < 32;++i) m[32 + i] = pk[i]; + crypto_hash_sha512(h,m,smlen); + sc_reduce(h); + + ge_double_scalarmult_vartime(&R,h,&A,sm + 32); + ge_tobytes(checkr,&R); + if (crypto_verify_32(checkr,sm) != 0) { + for (i = 0;i < smlen;++i) m[i] = 0; + return -1; + } + + for (i = 0;i < smlen - 64;++i) m[i] = sm[64 + i]; + for (i = smlen - 64;i < smlen;++i) m[i] = 0; + *mlen = smlen - 64; + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/pow22523.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/pow22523.h new file mode 100644 index 00000000..60ffe0d3 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/pow22523.h @@ -0,0 +1,160 @@ + +/* qhasm: fe z1 */ + +/* qhasm: fe z2 */ + +/* qhasm: fe z8 */ + +/* qhasm: fe z9 */ + +/* qhasm: fe z11 */ + +/* qhasm: fe z22 */ + +/* qhasm: fe z_5_0 */ + +/* qhasm: fe z_10_5 */ + +/* qhasm: fe z_10_0 */ + +/* qhasm: fe z_20_10 */ + +/* qhasm: fe z_20_0 */ + +/* qhasm: fe z_40_20 */ + +/* qhasm: fe z_40_0 */ + +/* qhasm: fe z_50_10 */ + +/* qhasm: fe z_50_0 */ + +/* qhasm: fe z_100_50 */ + +/* qhasm: fe z_100_0 */ + +/* qhasm: fe z_200_100 */ + +/* qhasm: fe z_200_0 */ + +/* qhasm: fe z_250_50 */ + +/* qhasm: fe z_250_0 */ + +/* qhasm: fe z_252_2 */ + +/* qhasm: fe z_252_3 */ + +/* qhasm: enter pow22523 */ + +/* qhasm: z2 = z1^2^1 */ +/* asm 1: fe_sq(>z2=fe#1,<z1=fe#11); for (i = 1;i < 1;++i) fe_sq(>z2=fe#1,>z2=fe#1); */ +/* asm 2: fe_sq(>z2=t0,<z1=z); for (i = 1;i < 1;++i) fe_sq(>z2=t0,>z2=t0); */ +fe_sq(t0,z); for (i = 1;i < 1;++i) fe_sq(t0,t0); + +/* qhasm: z8 = z2^2^2 */ +/* asm 1: fe_sq(>z8=fe#2,<z2=fe#1); for (i = 1;i < 2;++i) fe_sq(>z8=fe#2,>z8=fe#2); */ +/* asm 2: fe_sq(>z8=t1,<z2=t0); for (i = 1;i < 2;++i) fe_sq(>z8=t1,>z8=t1); */ +fe_sq(t1,t0); for (i = 1;i < 2;++i) fe_sq(t1,t1); + +/* qhasm: z9 = z1*z8 */ +/* asm 1: fe_mul(>z9=fe#2,<z1=fe#11,<z8=fe#2); */ +/* asm 2: fe_mul(>z9=t1,<z1=z,<z8=t1); */ +fe_mul(t1,z,t1); + +/* qhasm: z11 = z2*z9 */ +/* asm 1: fe_mul(>z11=fe#1,<z2=fe#1,<z9=fe#2); */ +/* asm 2: fe_mul(>z11=t0,<z2=t0,<z9=t1); */ +fe_mul(t0,t0,t1); + +/* qhasm: z22 = z11^2^1 */ +/* asm 1: fe_sq(>z22=fe#1,<z11=fe#1); for (i = 1;i < 1;++i) fe_sq(>z22=fe#1,>z22=fe#1); */ +/* asm 2: fe_sq(>z22=t0,<z11=t0); for (i = 1;i < 1;++i) fe_sq(>z22=t0,>z22=t0); */ +fe_sq(t0,t0); for (i = 1;i < 1;++i) fe_sq(t0,t0); + +/* qhasm: z_5_0 = z9*z22 */ +/* asm 1: fe_mul(>z_5_0=fe#1,<z9=fe#2,<z22=fe#1); */ +/* asm 2: fe_mul(>z_5_0=t0,<z9=t1,<z22=t0); */ +fe_mul(t0,t1,t0); + +/* qhasm: z_10_5 = z_5_0^2^5 */ +/* asm 1: fe_sq(>z_10_5=fe#2,<z_5_0=fe#1); for (i = 1;i < 5;++i) fe_sq(>z_10_5=fe#2,>z_10_5=fe#2); */ +/* asm 2: fe_sq(>z_10_5=t1,<z_5_0=t0); for (i = 1;i < 5;++i) fe_sq(>z_10_5=t1,>z_10_5=t1); */ +fe_sq(t1,t0); for (i = 1;i < 5;++i) fe_sq(t1,t1); + +/* qhasm: z_10_0 = z_10_5*z_5_0 */ +/* asm 1: fe_mul(>z_10_0=fe#1,<z_10_5=fe#2,<z_5_0=fe#1); */ +/* asm 2: fe_mul(>z_10_0=t0,<z_10_5=t1,<z_5_0=t0); */ +fe_mul(t0,t1,t0); + +/* qhasm: z_20_10 = z_10_0^2^10 */ +/* asm 1: fe_sq(>z_20_10=fe#2,<z_10_0=fe#1); for (i = 1;i < 10;++i) fe_sq(>z_20_10=fe#2,>z_20_10=fe#2); */ +/* asm 2: fe_sq(>z_20_10=t1,<z_10_0=t0); for (i = 1;i < 10;++i) fe_sq(>z_20_10=t1,>z_20_10=t1); */ +fe_sq(t1,t0); for (i = 1;i < 10;++i) fe_sq(t1,t1); + +/* qhasm: z_20_0 = z_20_10*z_10_0 */ +/* asm 1: fe_mul(>z_20_0=fe#2,<z_20_10=fe#2,<z_10_0=fe#1); */ +/* asm 2: fe_mul(>z_20_0=t1,<z_20_10=t1,<z_10_0=t0); */ +fe_mul(t1,t1,t0); + +/* qhasm: z_40_20 = z_20_0^2^20 */ +/* asm 1: fe_sq(>z_40_20=fe#3,<z_20_0=fe#2); for (i = 1;i < 20;++i) fe_sq(>z_40_20=fe#3,>z_40_20=fe#3); */ +/* asm 2: fe_sq(>z_40_20=t2,<z_20_0=t1); for (i = 1;i < 20;++i) fe_sq(>z_40_20=t2,>z_40_20=t2); */ +fe_sq(t2,t1); for (i = 1;i < 20;++i) fe_sq(t2,t2); + +/* qhasm: z_40_0 = z_40_20*z_20_0 */ +/* asm 1: fe_mul(>z_40_0=fe#2,<z_40_20=fe#3,<z_20_0=fe#2); */ +/* asm 2: fe_mul(>z_40_0=t1,<z_40_20=t2,<z_20_0=t1); */ +fe_mul(t1,t2,t1); + +/* qhasm: z_50_10 = z_40_0^2^10 */ +/* asm 1: fe_sq(>z_50_10=fe#2,<z_40_0=fe#2); for (i = 1;i < 10;++i) fe_sq(>z_50_10=fe#2,>z_50_10=fe#2); */ +/* asm 2: fe_sq(>z_50_10=t1,<z_40_0=t1); for (i = 1;i < 10;++i) fe_sq(>z_50_10=t1,>z_50_10=t1); */ +fe_sq(t1,t1); for (i = 1;i < 10;++i) fe_sq(t1,t1); + +/* qhasm: z_50_0 = z_50_10*z_10_0 */ +/* asm 1: fe_mul(>z_50_0=fe#1,<z_50_10=fe#2,<z_10_0=fe#1); */ +/* asm 2: fe_mul(>z_50_0=t0,<z_50_10=t1,<z_10_0=t0); */ +fe_mul(t0,t1,t0); + +/* qhasm: z_100_50 = z_50_0^2^50 */ +/* asm 1: fe_sq(>z_100_50=fe#2,<z_50_0=fe#1); for (i = 1;i < 50;++i) fe_sq(>z_100_50=fe#2,>z_100_50=fe#2); */ +/* asm 2: fe_sq(>z_100_50=t1,<z_50_0=t0); for (i = 1;i < 50;++i) fe_sq(>z_100_50=t1,>z_100_50=t1); */ +fe_sq(t1,t0); for (i = 1;i < 50;++i) fe_sq(t1,t1); + +/* qhasm: z_100_0 = z_100_50*z_50_0 */ +/* asm 1: fe_mul(>z_100_0=fe#2,<z_100_50=fe#2,<z_50_0=fe#1); */ +/* asm 2: fe_mul(>z_100_0=t1,<z_100_50=t1,<z_50_0=t0); */ +fe_mul(t1,t1,t0); + +/* qhasm: z_200_100 = z_100_0^2^100 */ +/* asm 1: fe_sq(>z_200_100=fe#3,<z_100_0=fe#2); for (i = 1;i < 100;++i) fe_sq(>z_200_100=fe#3,>z_200_100=fe#3); */ +/* asm 2: fe_sq(>z_200_100=t2,<z_100_0=t1); for (i = 1;i < 100;++i) fe_sq(>z_200_100=t2,>z_200_100=t2); */ +fe_sq(t2,t1); for (i = 1;i < 100;++i) fe_sq(t2,t2); + +/* qhasm: z_200_0 = z_200_100*z_100_0 */ +/* asm 1: fe_mul(>z_200_0=fe#2,<z_200_100=fe#3,<z_100_0=fe#2); */ +/* asm 2: fe_mul(>z_200_0=t1,<z_200_100=t2,<z_100_0=t1); */ +fe_mul(t1,t2,t1); + +/* qhasm: z_250_50 = z_200_0^2^50 */ +/* asm 1: fe_sq(>z_250_50=fe#2,<z_200_0=fe#2); for (i = 1;i < 50;++i) fe_sq(>z_250_50=fe#2,>z_250_50=fe#2); */ +/* asm 2: fe_sq(>z_250_50=t1,<z_200_0=t1); for (i = 1;i < 50;++i) fe_sq(>z_250_50=t1,>z_250_50=t1); */ +fe_sq(t1,t1); for (i = 1;i < 50;++i) fe_sq(t1,t1); + +/* qhasm: z_250_0 = z_250_50*z_50_0 */ +/* asm 1: fe_mul(>z_250_0=fe#1,<z_250_50=fe#2,<z_50_0=fe#1); */ +/* asm 2: fe_mul(>z_250_0=t0,<z_250_50=t1,<z_50_0=t0); */ +fe_mul(t0,t1,t0); + +/* qhasm: z_252_2 = z_250_0^2^2 */ +/* asm 1: fe_sq(>z_252_2=fe#1,<z_250_0=fe#1); for (i = 1;i < 2;++i) fe_sq(>z_252_2=fe#1,>z_252_2=fe#1); */ +/* asm 2: fe_sq(>z_252_2=t0,<z_250_0=t0); for (i = 1;i < 2;++i) fe_sq(>z_252_2=t0,>z_252_2=t0); */ +fe_sq(t0,t0); for (i = 1;i < 2;++i) fe_sq(t0,t0); + +/* qhasm: z_252_3 = z_252_2*z1 */ +/* asm 1: fe_mul(>z_252_3=fe#12,<z_252_2=fe#1,<z1=fe#11); */ +/* asm 2: fe_mul(>z_252_3=out,<z_252_2=t0,<z1=z); */ +fe_mul(out,t0,z); + +/* qhasm: return */ diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/pow225521.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/pow225521.h new file mode 100644 index 00000000..109df779 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/pow225521.h @@ -0,0 +1,160 @@ + +/* qhasm: fe z1 */ + +/* qhasm: fe z2 */ + +/* qhasm: fe z8 */ + +/* qhasm: fe z9 */ + +/* qhasm: fe z11 */ + +/* qhasm: fe z22 */ + +/* qhasm: fe z_5_0 */ + +/* qhasm: fe z_10_5 */ + +/* qhasm: fe z_10_0 */ + +/* qhasm: fe z_20_10 */ + +/* qhasm: fe z_20_0 */ + +/* qhasm: fe z_40_20 */ + +/* qhasm: fe z_40_0 */ + +/* qhasm: fe z_50_10 */ + +/* qhasm: fe z_50_0 */ + +/* qhasm: fe z_100_50 */ + +/* qhasm: fe z_100_0 */ + +/* qhasm: fe z_200_100 */ + +/* qhasm: fe z_200_0 */ + +/* qhasm: fe z_250_50 */ + +/* qhasm: fe z_250_0 */ + +/* qhasm: fe z_255_5 */ + +/* qhasm: fe z_255_21 */ + +/* qhasm: enter pow225521 */ + +/* qhasm: z2 = z1^2^1 */ +/* asm 1: fe_sq(>z2=fe#1,<z1=fe#11); for (i = 1;i < 1;++i) fe_sq(>z2=fe#1,>z2=fe#1); */ +/* asm 2: fe_sq(>z2=t0,<z1=z); for (i = 1;i < 1;++i) fe_sq(>z2=t0,>z2=t0); */ +fe_sq(t0,z); for (i = 1;i < 1;++i) fe_sq(t0,t0); + +/* qhasm: z8 = z2^2^2 */ +/* asm 1: fe_sq(>z8=fe#2,<z2=fe#1); for (i = 1;i < 2;++i) fe_sq(>z8=fe#2,>z8=fe#2); */ +/* asm 2: fe_sq(>z8=t1,<z2=t0); for (i = 1;i < 2;++i) fe_sq(>z8=t1,>z8=t1); */ +fe_sq(t1,t0); for (i = 1;i < 2;++i) fe_sq(t1,t1); + +/* qhasm: z9 = z1*z8 */ +/* asm 1: fe_mul(>z9=fe#2,<z1=fe#11,<z8=fe#2); */ +/* asm 2: fe_mul(>z9=t1,<z1=z,<z8=t1); */ +fe_mul(t1,z,t1); + +/* qhasm: z11 = z2*z9 */ +/* asm 1: fe_mul(>z11=fe#1,<z2=fe#1,<z9=fe#2); */ +/* asm 2: fe_mul(>z11=t0,<z2=t0,<z9=t1); */ +fe_mul(t0,t0,t1); + +/* qhasm: z22 = z11^2^1 */ +/* asm 1: fe_sq(>z22=fe#3,<z11=fe#1); for (i = 1;i < 1;++i) fe_sq(>z22=fe#3,>z22=fe#3); */ +/* asm 2: fe_sq(>z22=t2,<z11=t0); for (i = 1;i < 1;++i) fe_sq(>z22=t2,>z22=t2); */ +fe_sq(t2,t0); for (i = 1;i < 1;++i) fe_sq(t2,t2); + +/* qhasm: z_5_0 = z9*z22 */ +/* asm 1: fe_mul(>z_5_0=fe#2,<z9=fe#2,<z22=fe#3); */ +/* asm 2: fe_mul(>z_5_0=t1,<z9=t1,<z22=t2); */ +fe_mul(t1,t1,t2); + +/* qhasm: z_10_5 = z_5_0^2^5 */ +/* asm 1: fe_sq(>z_10_5=fe#3,<z_5_0=fe#2); for (i = 1;i < 5;++i) fe_sq(>z_10_5=fe#3,>z_10_5=fe#3); */ +/* asm 2: fe_sq(>z_10_5=t2,<z_5_0=t1); for (i = 1;i < 5;++i) fe_sq(>z_10_5=t2,>z_10_5=t2); */ +fe_sq(t2,t1); for (i = 1;i < 5;++i) fe_sq(t2,t2); + +/* qhasm: z_10_0 = z_10_5*z_5_0 */ +/* asm 1: fe_mul(>z_10_0=fe#2,<z_10_5=fe#3,<z_5_0=fe#2); */ +/* asm 2: fe_mul(>z_10_0=t1,<z_10_5=t2,<z_5_0=t1); */ +fe_mul(t1,t2,t1); + +/* qhasm: z_20_10 = z_10_0^2^10 */ +/* asm 1: fe_sq(>z_20_10=fe#3,<z_10_0=fe#2); for (i = 1;i < 10;++i) fe_sq(>z_20_10=fe#3,>z_20_10=fe#3); */ +/* asm 2: fe_sq(>z_20_10=t2,<z_10_0=t1); for (i = 1;i < 10;++i) fe_sq(>z_20_10=t2,>z_20_10=t2); */ +fe_sq(t2,t1); for (i = 1;i < 10;++i) fe_sq(t2,t2); + +/* qhasm: z_20_0 = z_20_10*z_10_0 */ +/* asm 1: fe_mul(>z_20_0=fe#3,<z_20_10=fe#3,<z_10_0=fe#2); */ +/* asm 2: fe_mul(>z_20_0=t2,<z_20_10=t2,<z_10_0=t1); */ +fe_mul(t2,t2,t1); + +/* qhasm: z_40_20 = z_20_0^2^20 */ +/* asm 1: fe_sq(>z_40_20=fe#4,<z_20_0=fe#3); for (i = 1;i < 20;++i) fe_sq(>z_40_20=fe#4,>z_40_20=fe#4); */ +/* asm 2: fe_sq(>z_40_20=t3,<z_20_0=t2); for (i = 1;i < 20;++i) fe_sq(>z_40_20=t3,>z_40_20=t3); */ +fe_sq(t3,t2); for (i = 1;i < 20;++i) fe_sq(t3,t3); + +/* qhasm: z_40_0 = z_40_20*z_20_0 */ +/* asm 1: fe_mul(>z_40_0=fe#3,<z_40_20=fe#4,<z_20_0=fe#3); */ +/* asm 2: fe_mul(>z_40_0=t2,<z_40_20=t3,<z_20_0=t2); */ +fe_mul(t2,t3,t2); + +/* qhasm: z_50_10 = z_40_0^2^10 */ +/* asm 1: fe_sq(>z_50_10=fe#3,<z_40_0=fe#3); for (i = 1;i < 10;++i) fe_sq(>z_50_10=fe#3,>z_50_10=fe#3); */ +/* asm 2: fe_sq(>z_50_10=t2,<z_40_0=t2); for (i = 1;i < 10;++i) fe_sq(>z_50_10=t2,>z_50_10=t2); */ +fe_sq(t2,t2); for (i = 1;i < 10;++i) fe_sq(t2,t2); + +/* qhasm: z_50_0 = z_50_10*z_10_0 */ +/* asm 1: fe_mul(>z_50_0=fe#2,<z_50_10=fe#3,<z_10_0=fe#2); */ +/* asm 2: fe_mul(>z_50_0=t1,<z_50_10=t2,<z_10_0=t1); */ +fe_mul(t1,t2,t1); + +/* qhasm: z_100_50 = z_50_0^2^50 */ +/* asm 1: fe_sq(>z_100_50=fe#3,<z_50_0=fe#2); for (i = 1;i < 50;++i) fe_sq(>z_100_50=fe#3,>z_100_50=fe#3); */ +/* asm 2: fe_sq(>z_100_50=t2,<z_50_0=t1); for (i = 1;i < 50;++i) fe_sq(>z_100_50=t2,>z_100_50=t2); */ +fe_sq(t2,t1); for (i = 1;i < 50;++i) fe_sq(t2,t2); + +/* qhasm: z_100_0 = z_100_50*z_50_0 */ +/* asm 1: fe_mul(>z_100_0=fe#3,<z_100_50=fe#3,<z_50_0=fe#2); */ +/* asm 2: fe_mul(>z_100_0=t2,<z_100_50=t2,<z_50_0=t1); */ +fe_mul(t2,t2,t1); + +/* qhasm: z_200_100 = z_100_0^2^100 */ +/* asm 1: fe_sq(>z_200_100=fe#4,<z_100_0=fe#3); for (i = 1;i < 100;++i) fe_sq(>z_200_100=fe#4,>z_200_100=fe#4); */ +/* asm 2: fe_sq(>z_200_100=t3,<z_100_0=t2); for (i = 1;i < 100;++i) fe_sq(>z_200_100=t3,>z_200_100=t3); */ +fe_sq(t3,t2); for (i = 1;i < 100;++i) fe_sq(t3,t3); + +/* qhasm: z_200_0 = z_200_100*z_100_0 */ +/* asm 1: fe_mul(>z_200_0=fe#3,<z_200_100=fe#4,<z_100_0=fe#3); */ +/* asm 2: fe_mul(>z_200_0=t2,<z_200_100=t3,<z_100_0=t2); */ +fe_mul(t2,t3,t2); + +/* qhasm: z_250_50 = z_200_0^2^50 */ +/* asm 1: fe_sq(>z_250_50=fe#3,<z_200_0=fe#3); for (i = 1;i < 50;++i) fe_sq(>z_250_50=fe#3,>z_250_50=fe#3); */ +/* asm 2: fe_sq(>z_250_50=t2,<z_200_0=t2); for (i = 1;i < 50;++i) fe_sq(>z_250_50=t2,>z_250_50=t2); */ +fe_sq(t2,t2); for (i = 1;i < 50;++i) fe_sq(t2,t2); + +/* qhasm: z_250_0 = z_250_50*z_50_0 */ +/* asm 1: fe_mul(>z_250_0=fe#2,<z_250_50=fe#3,<z_50_0=fe#2); */ +/* asm 2: fe_mul(>z_250_0=t1,<z_250_50=t2,<z_50_0=t1); */ +fe_mul(t1,t2,t1); + +/* qhasm: z_255_5 = z_250_0^2^5 */ +/* asm 1: fe_sq(>z_255_5=fe#2,<z_250_0=fe#2); for (i = 1;i < 5;++i) fe_sq(>z_255_5=fe#2,>z_255_5=fe#2); */ +/* asm 2: fe_sq(>z_255_5=t1,<z_250_0=t1); for (i = 1;i < 5;++i) fe_sq(>z_255_5=t1,>z_255_5=t1); */ +fe_sq(t1,t1); for (i = 1;i < 5;++i) fe_sq(t1,t1); + +/* qhasm: z_255_21 = z_255_5*z11 */ +/* asm 1: fe_mul(>z_255_21=fe#12,<z_255_5=fe#2,<z11=fe#1); */ +/* asm 2: fe_mul(>z_255_21=out,<z_255_5=t1,<z11=t0); */ +fe_mul(out,t1,t0); + +/* qhasm: return */ diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc.h new file mode 100644 index 00000000..d32ed2e8 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc.h @@ -0,0 +1,15 @@ +#ifndef SC_H +#define SC_H + +/* +The set of scalars is \Z/l +where l = 2^252 + 27742317777372353535851937790883648493. +*/ + +#define sc_reduce crypto_sign_ed25519_ref10_sc_reduce +#define sc_muladd crypto_sign_ed25519_ref10_sc_muladd + +extern void sc_reduce(unsigned char *); +extern void sc_muladd(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *); + +#endif diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc_muladd.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc_muladd.c new file mode 100644 index 00000000..ccf4a682 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc_muladd.c @@ -0,0 +1,368 @@ +#include "sc.h" +#include "crypto_int64.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +static crypto_uint64 load_3(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + return result; +} + +static crypto_uint64 load_4(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + result |= ((crypto_uint64) in[3]) << 24; + return result; +} + +/* +Input: + a[0]+256*a[1]+...+256^31*a[31] = a + b[0]+256*b[1]+...+256^31*b[31] = b + c[0]+256*c[1]+...+256^31*c[31] = c + +Output: + s[0]+256*s[1]+...+256^31*s[31] = (ab+c) mod l + where l = 2^252 + 27742317777372353535851937790883648493. +*/ + +void sc_muladd(unsigned char *s,const unsigned char *a,const unsigned char *b,const unsigned char *c) +{ + crypto_int64 a0 = 2097151 & load_3(a); + crypto_int64 a1 = 2097151 & (load_4(a + 2) >> 5); + crypto_int64 a2 = 2097151 & (load_3(a + 5) >> 2); + crypto_int64 a3 = 2097151 & (load_4(a + 7) >> 7); + crypto_int64 a4 = 2097151 & (load_4(a + 10) >> 4); + crypto_int64 a5 = 2097151 & (load_3(a + 13) >> 1); + crypto_int64 a6 = 2097151 & (load_4(a + 15) >> 6); + crypto_int64 a7 = 2097151 & (load_3(a + 18) >> 3); + crypto_int64 a8 = 2097151 & load_3(a + 21); + crypto_int64 a9 = 2097151 & (load_4(a + 23) >> 5); + crypto_int64 a10 = 2097151 & (load_3(a + 26) >> 2); + crypto_int64 a11 = (load_4(a + 28) >> 7); + crypto_int64 b0 = 2097151 & load_3(b); + crypto_int64 b1 = 2097151 & (load_4(b + 2) >> 5); + crypto_int64 b2 = 2097151 & (load_3(b + 5) >> 2); + crypto_int64 b3 = 2097151 & (load_4(b + 7) >> 7); + crypto_int64 b4 = 2097151 & (load_4(b + 10) >> 4); + crypto_int64 b5 = 2097151 & (load_3(b + 13) >> 1); + crypto_int64 b6 = 2097151 & (load_4(b + 15) >> 6); + crypto_int64 b7 = 2097151 & (load_3(b + 18) >> 3); + crypto_int64 b8 = 2097151 & load_3(b + 21); + crypto_int64 b9 = 2097151 & (load_4(b + 23) >> 5); + crypto_int64 b10 = 2097151 & (load_3(b + 26) >> 2); + crypto_int64 b11 = (load_4(b + 28) >> 7); + crypto_int64 c0 = 2097151 & load_3(c); + crypto_int64 c1 = 2097151 & (load_4(c + 2) >> 5); + crypto_int64 c2 = 2097151 & (load_3(c + 5) >> 2); + crypto_int64 c3 = 2097151 & (load_4(c + 7) >> 7); + crypto_int64 c4 = 2097151 & (load_4(c + 10) >> 4); + crypto_int64 c5 = 2097151 & (load_3(c + 13) >> 1); + crypto_int64 c6 = 2097151 & (load_4(c + 15) >> 6); + crypto_int64 c7 = 2097151 & (load_3(c + 18) >> 3); + crypto_int64 c8 = 2097151 & load_3(c + 21); + crypto_int64 c9 = 2097151 & (load_4(c + 23) >> 5); + crypto_int64 c10 = 2097151 & (load_3(c + 26) >> 2); + crypto_int64 c11 = (load_4(c + 28) >> 7); + crypto_int64 s0; + crypto_int64 s1; + crypto_int64 s2; + crypto_int64 s3; + crypto_int64 s4; + crypto_int64 s5; + crypto_int64 s6; + crypto_int64 s7; + crypto_int64 s8; + crypto_int64 s9; + crypto_int64 s10; + crypto_int64 s11; + crypto_int64 s12; + crypto_int64 s13; + crypto_int64 s14; + crypto_int64 s15; + crypto_int64 s16; + crypto_int64 s17; + crypto_int64 s18; + crypto_int64 s19; + crypto_int64 s20; + crypto_int64 s21; + crypto_int64 s22; + crypto_int64 s23; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + crypto_int64 carry10; + crypto_int64 carry11; + crypto_int64 carry12; + crypto_int64 carry13; + crypto_int64 carry14; + crypto_int64 carry15; + crypto_int64 carry16; + crypto_int64 carry17; + crypto_int64 carry18; + crypto_int64 carry19; + crypto_int64 carry20; + crypto_int64 carry21; + crypto_int64 carry22; + + s0 = c0 + a0*b0; + s1 = c1 + a0*b1 + a1*b0; + s2 = c2 + a0*b2 + a1*b1 + a2*b0; + s3 = c3 + a0*b3 + a1*b2 + a2*b1 + a3*b0; + s4 = c4 + a0*b4 + a1*b3 + a2*b2 + a3*b1 + a4*b0; + s5 = c5 + a0*b5 + a1*b4 + a2*b3 + a3*b2 + a4*b1 + a5*b0; + s6 = c6 + a0*b6 + a1*b5 + a2*b4 + a3*b3 + a4*b2 + a5*b1 + a6*b0; + s7 = c7 + a0*b7 + a1*b6 + a2*b5 + a3*b4 + a4*b3 + a5*b2 + a6*b1 + a7*b0; + s8 = c8 + a0*b8 + a1*b7 + a2*b6 + a3*b5 + a4*b4 + a5*b3 + a6*b2 + a7*b1 + a8*b0; + s9 = c9 + a0*b9 + a1*b8 + a2*b7 + a3*b6 + a4*b5 + a5*b4 + a6*b3 + a7*b2 + a8*b1 + a9*b0; + s10 = c10 + a0*b10 + a1*b9 + a2*b8 + a3*b7 + a4*b6 + a5*b5 + a6*b4 + a7*b3 + a8*b2 + a9*b1 + a10*b0; + s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0; + s12 = a1*b11 + a2*b10 + a3*b9 + a4*b8 + a5*b7 + a6*b6 + a7*b5 + a8*b4 + a9*b3 + a10*b2 + a11*b1; + s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2; + s14 = a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3; + s15 = a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4; + s16 = a5*b11 + a6*b10 + a7*b9 + a8*b8 + a9*b7 + a10*b6 + a11*b5; + s17 = a6*b11 + a7*b10 + a8*b9 + a9*b8 + a10*b7 + a11*b6; + s18 = a7*b11 + a8*b10 + a9*b9 + a10*b8 + a11*b7; + s19 = a8*b11 + a9*b10 + a10*b9 + a11*b8; + s20 = a9*b11 + a10*b10 + a11*b9; + s21 = a10*b11 + a11*b10; + s22 = a11*b11; + s23 = 0; + + carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21; + carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21; + carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21; + carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21; + carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21; + carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21; + carry18 = (s18 + (1<<20)) >> 21; s19 += carry18; s18 -= carry18 << 21; + carry20 = (s20 + (1<<20)) >> 21; s21 += carry20; s20 -= carry20 << 21; + carry22 = (s22 + (1<<20)) >> 21; s23 += carry22; s22 -= carry22 << 21; + + carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21; + carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21; + carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21; + carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21; + carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21; + carry17 = (s17 + (1<<20)) >> 21; s18 += carry17; s17 -= carry17 << 21; + carry19 = (s19 + (1<<20)) >> 21; s20 += carry19; s19 -= carry19 << 21; + carry21 = (s21 + (1<<20)) >> 21; s22 += carry21; s21 -= carry21 << 21; + + s11 += s23 * 666643; + s12 += s23 * 470296; + s13 += s23 * 654183; + s14 -= s23 * 997805; + s15 += s23 * 136657; + s16 -= s23 * 683901; + + + s10 += s22 * 666643; + s11 += s22 * 470296; + s12 += s22 * 654183; + s13 -= s22 * 997805; + s14 += s22 * 136657; + s15 -= s22 * 683901; + + + s9 += s21 * 666643; + s10 += s21 * 470296; + s11 += s21 * 654183; + s12 -= s21 * 997805; + s13 += s21 * 136657; + s14 -= s21 * 683901; + + + s8 += s20 * 666643; + s9 += s20 * 470296; + s10 += s20 * 654183; + s11 -= s20 * 997805; + s12 += s20 * 136657; + s13 -= s20 * 683901; + + + s7 += s19 * 666643; + s8 += s19 * 470296; + s9 += s19 * 654183; + s10 -= s19 * 997805; + s11 += s19 * 136657; + s12 -= s19 * 683901; + + + s6 += s18 * 666643; + s7 += s18 * 470296; + s8 += s18 * 654183; + s9 -= s18 * 997805; + s10 += s18 * 136657; + s11 -= s18 * 683901; + + + carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21; + carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21; + carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21; + + carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21; + carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21; + + s5 += s17 * 666643; + s6 += s17 * 470296; + s7 += s17 * 654183; + s8 -= s17 * 997805; + s9 += s17 * 136657; + s10 -= s17 * 683901; + + + s4 += s16 * 666643; + s5 += s16 * 470296; + s6 += s16 * 654183; + s7 -= s16 * 997805; + s8 += s16 * 136657; + s9 -= s16 * 683901; + + + s3 += s15 * 666643; + s4 += s15 * 470296; + s5 += s15 * 654183; + s6 -= s15 * 997805; + s7 += s15 * 136657; + s8 -= s15 * 683901; + + + s2 += s14 * 666643; + s3 += s14 * 470296; + s4 += s14 * 654183; + s5 -= s14 * 997805; + s6 += s14 * 136657; + s7 -= s14 * 683901; + + + s1 += s13 * 666643; + s2 += s13 * 470296; + s3 += s13 * 654183; + s4 -= s13 * 997805; + s5 += s13 * 136657; + s6 -= s13 * 683901; + + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21; + carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21; + carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21; + carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + + carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21; + carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21; + carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21; + carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21; + carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21; + carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21; + carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21; + carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21; + carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21; + carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21; + carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21; + carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21; + carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21; + carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21; + carry11 = s11 >> 21; s12 += carry11; s11 -= carry11 << 21; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + + + carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21; + carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21; + carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21; + carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21; + carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21; + carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21; + carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21; + carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21; + carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21; + carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21; + carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21; + + s[0] = s0 >> 0; + s[1] = s0 >> 8; + s[2] = (s0 >> 16) | (s1 << 5); + s[3] = s1 >> 3; + s[4] = s1 >> 11; + s[5] = (s1 >> 19) | (s2 << 2); + s[6] = s2 >> 6; + s[7] = (s2 >> 14) | (s3 << 7); + s[8] = s3 >> 1; + s[9] = s3 >> 9; + s[10] = (s3 >> 17) | (s4 << 4); + s[11] = s4 >> 4; + s[12] = s4 >> 12; + s[13] = (s4 >> 20) | (s5 << 1); + s[14] = s5 >> 7; + s[15] = (s5 >> 15) | (s6 << 6); + s[16] = s6 >> 2; + s[17] = s6 >> 10; + s[18] = (s6 >> 18) | (s7 << 3); + s[19] = s7 >> 5; + s[20] = s7 >> 13; + s[21] = s8 >> 0; + s[22] = s8 >> 8; + s[23] = (s8 >> 16) | (s9 << 5); + s[24] = s9 >> 3; + s[25] = s9 >> 11; + s[26] = (s9 >> 19) | (s10 << 2); + s[27] = s10 >> 6; + s[28] = (s10 >> 14) | (s11 << 7); + s[29] = s11 >> 1; + s[30] = s11 >> 9; + s[31] = s11 >> 17; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc_reduce.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc_reduce.c new file mode 100644 index 00000000..e5caefc2 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc_reduce.c @@ -0,0 +1,275 @@ +#include "sc.h" +#include "crypto_int64.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +static crypto_uint64 load_3(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + return result; +} + +static crypto_uint64 load_4(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + result |= ((crypto_uint64) in[3]) << 24; + return result; +} + +/* +Input: + s[0]+256*s[1]+...+256^63*s[63] = s + +Output: + s[0]+256*s[1]+...+256^31*s[31] = s mod l + where l = 2^252 + 27742317777372353535851937790883648493. + Overwrites s in place. +*/ + +void sc_reduce(unsigned char *s) +{ + crypto_int64 s0 = 2097151 & load_3(s); + crypto_int64 s1 = 2097151 & (load_4(s + 2) >> 5); + crypto_int64 s2 = 2097151 & (load_3(s + 5) >> 2); + crypto_int64 s3 = 2097151 & (load_4(s + 7) >> 7); + crypto_int64 s4 = 2097151 & (load_4(s + 10) >> 4); + crypto_int64 s5 = 2097151 & (load_3(s + 13) >> 1); + crypto_int64 s6 = 2097151 & (load_4(s + 15) >> 6); + crypto_int64 s7 = 2097151 & (load_3(s + 18) >> 3); + crypto_int64 s8 = 2097151 & load_3(s + 21); + crypto_int64 s9 = 2097151 & (load_4(s + 23) >> 5); + crypto_int64 s10 = 2097151 & (load_3(s + 26) >> 2); + crypto_int64 s11 = 2097151 & (load_4(s + 28) >> 7); + crypto_int64 s12 = 2097151 & (load_4(s + 31) >> 4); + crypto_int64 s13 = 2097151 & (load_3(s + 34) >> 1); + crypto_int64 s14 = 2097151 & (load_4(s + 36) >> 6); + crypto_int64 s15 = 2097151 & (load_3(s + 39) >> 3); + crypto_int64 s16 = 2097151 & load_3(s + 42); + crypto_int64 s17 = 2097151 & (load_4(s + 44) >> 5); + crypto_int64 s18 = 2097151 & (load_3(s + 47) >> 2); + crypto_int64 s19 = 2097151 & (load_4(s + 49) >> 7); + crypto_int64 s20 = 2097151 & (load_4(s + 52) >> 4); + crypto_int64 s21 = 2097151 & (load_3(s + 55) >> 1); + crypto_int64 s22 = 2097151 & (load_4(s + 57) >> 6); + crypto_int64 s23 = (load_4(s + 60) >> 3); + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + crypto_int64 carry10; + crypto_int64 carry11; + crypto_int64 carry12; + crypto_int64 carry13; + crypto_int64 carry14; + crypto_int64 carry15; + crypto_int64 carry16; + + s11 += s23 * 666643; + s12 += s23 * 470296; + s13 += s23 * 654183; + s14 -= s23 * 997805; + s15 += s23 * 136657; + s16 -= s23 * 683901; + + + s10 += s22 * 666643; + s11 += s22 * 470296; + s12 += s22 * 654183; + s13 -= s22 * 997805; + s14 += s22 * 136657; + s15 -= s22 * 683901; + + + s9 += s21 * 666643; + s10 += s21 * 470296; + s11 += s21 * 654183; + s12 -= s21 * 997805; + s13 += s21 * 136657; + s14 -= s21 * 683901; + + + s8 += s20 * 666643; + s9 += s20 * 470296; + s10 += s20 * 654183; + s11 -= s20 * 997805; + s12 += s20 * 136657; + s13 -= s20 * 683901; + + + s7 += s19 * 666643; + s8 += s19 * 470296; + s9 += s19 * 654183; + s10 -= s19 * 997805; + s11 += s19 * 136657; + s12 -= s19 * 683901; + + + s6 += s18 * 666643; + s7 += s18 * 470296; + s8 += s18 * 654183; + s9 -= s18 * 997805; + s10 += s18 * 136657; + s11 -= s18 * 683901; + + + carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21; + carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21; + carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21; + + carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21; + carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21; + + s5 += s17 * 666643; + s6 += s17 * 470296; + s7 += s17 * 654183; + s8 -= s17 * 997805; + s9 += s17 * 136657; + s10 -= s17 * 683901; + + + s4 += s16 * 666643; + s5 += s16 * 470296; + s6 += s16 * 654183; + s7 -= s16 * 997805; + s8 += s16 * 136657; + s9 -= s16 * 683901; + + + s3 += s15 * 666643; + s4 += s15 * 470296; + s5 += s15 * 654183; + s6 -= s15 * 997805; + s7 += s15 * 136657; + s8 -= s15 * 683901; + + + s2 += s14 * 666643; + s3 += s14 * 470296; + s4 += s14 * 654183; + s5 -= s14 * 997805; + s6 += s14 * 136657; + s7 -= s14 * 683901; + + + s1 += s13 * 666643; + s2 += s13 * 470296; + s3 += s13 * 654183; + s4 -= s13 * 997805; + s5 += s13 * 136657; + s6 -= s13 * 683901; + + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21; + carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21; + carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21; + carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + + carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21; + carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21; + carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21; + carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21; + carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21; + carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21; + carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21; + carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21; + carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21; + carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21; + carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21; + carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21; + carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21; + carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21; + carry11 = s11 >> 21; s12 += carry11; s11 -= carry11 << 21; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + + + carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21; + carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21; + carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21; + carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21; + carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21; + carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21; + carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21; + carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21; + carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21; + carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21; + carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21; + + s[0] = s0 >> 0; + s[1] = s0 >> 8; + s[2] = (s0 >> 16) | (s1 << 5); + s[3] = s1 >> 3; + s[4] = s1 >> 11; + s[5] = (s1 >> 19) | (s2 << 2); + s[6] = s2 >> 6; + s[7] = (s2 >> 14) | (s3 << 7); + s[8] = s3 >> 1; + s[9] = s3 >> 9; + s[10] = (s3 >> 17) | (s4 << 4); + s[11] = s4 >> 4; + s[12] = s4 >> 12; + s[13] = (s4 >> 20) | (s5 << 1); + s[14] = s5 >> 7; + s[15] = (s5 >> 15) | (s6 << 6); + s[16] = s6 >> 2; + s[17] = s6 >> 10; + s[18] = (s6 >> 18) | (s7 << 3); + s[19] = s7 >> 5; + s[20] = s7 >> 13; + s[21] = s8 >> 0; + s[22] = s8 >> 8; + s[23] = (s8 >> 16) | (s9 << 5); + s[24] = s9 >> 3; + s[25] = s9 >> 11; + s[26] = (s9 >> 19) | (s10 << 2); + s[27] = s10 >> 6; + s[28] = (s10 >> 14) | (s11 << 7); + s[29] = s11 >> 1; + s[30] = s11 >> 9; + s[31] = s11 >> 17; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign.c new file mode 100644 index 00000000..49507b02 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign.c @@ -0,0 +1,38 @@ +#include "api.h" +#include "crypto_hash_sha512.h" +#include "ge.h" +#include "sc.h" + +int crypto_sign( + unsigned char *sm,unsigned long long *smlen, + const unsigned char *m,unsigned long long mlen, + const unsigned char *sk +) +{ + unsigned char az[64]; + unsigned char r[64]; + unsigned char hram[64]; + ge_p3 R; + unsigned long long i; + + crypto_hash_sha512(az,sk,32); + az[0] &= 248; + az[31] &= 63; + az[31] |= 64; + + *smlen = mlen + 64; + for (i = 0;i < mlen;++i) sm[64 + i] = m[i]; + for (i = 0;i < 32;++i) sm[32 + i] = az[32 + i]; + crypto_hash_sha512(r,sm + 32,mlen + 32); + for (i = 0;i < 32;++i) sm[32 + i] = sk[32 + i]; + + sc_reduce(r); + ge_scalarmult_base(&R,r); + ge_p3_tobytes(sm,&R); + + crypto_hash_sha512(hram,sm,mlen + 64); + sc_reduce(hram); + sc_muladd(sm + 32,hram,az,r); + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sqrtm1.h b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sqrtm1.h new file mode 100644 index 00000000..d8caa23b --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sqrtm1.h @@ -0,0 +1 @@ +-32595792,-7943725,9377950,3500415,12389472,-272473,-25146209,-2005654,326686,11406482 diff --git a/src/libsodium/src/libsodium/crypto_sign/ed25519/sign_ed25519_api.c b/src/libsodium/src/libsodium/crypto_sign/ed25519/sign_ed25519_api.c new file mode 100644 index 00000000..8d2382c0 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/ed25519/sign_ed25519_api.c @@ -0,0 +1,26 @@ +#include "crypto_sign_ed25519.h" + +size_t +crypto_sign_ed25519_bytes(void) { + return crypto_sign_ed25519_BYTES; +} + +size_t +crypto_sign_ed25519_seedbytes(void) { + return crypto_sign_ed25519_SEEDBYTES; +} + +size_t +crypto_sign_ed25519_publickeybytes(void) { + return crypto_sign_ed25519_PUBLICKEYBYTES; +} + +size_t +crypto_sign_ed25519_secretkeybytes(void) { + return crypto_sign_ed25519_SECRETKEYBYTES; +} + +const char * +crypto_sign_ed25519_primitive(void) { + return "ed25519"; +} diff --git a/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/api.h b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/api.h new file mode 100644 index 00000000..1217a582 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/api.h @@ -0,0 +1,13 @@ + +#include "crypto_sign_edwards25519sha512batch.h" + +#define crypto_sign crypto_sign_edwards25519sha512batch +#define crypto_sign_open crypto_sign_edwards25519sha512batch_open +#define crypto_sign_keypair crypto_sign_edwards25519sha512batch_keypair +#define crypto_sign_BYTES crypto_sign_edwards25519sha512batch_BYTES +#define crypto_sign_PUBLICKEYBYTES crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES +#define crypto_sign_SECRETKEYBYTES crypto_sign_edwards25519sha512batch_SECRETKEYBYTES +#define crypto_sign_PRIMITIVE "edwards25519sha512batch" +#define crypto_sign_IMPLEMENTATION crypto_sign_edwards25519sha512batch_IMPLEMENTATION +#define crypto_sign_VERSION crypto_sign_edwards25519sha512batch_VERSION + diff --git a/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/fe25519.h b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/fe25519.h new file mode 100644 index 00000000..98c613fa --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/fe25519.h @@ -0,0 +1,54 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 crypto_sign_edwards25519sha512batch_fe25519 +#define fe25519_unpack crypto_sign_edwards25519sha512batch_fe25519_unpack +#define fe25519_pack crypto_sign_edwards25519sha512batch_fe25519_pack +#define fe25519_cmov crypto_sign_edwards25519sha512batch_fe25519_cmov +#define fe25519_setone crypto_sign_edwards25519sha512batch_fe25519_setone +#define fe25519_setzero crypto_sign_edwards25519sha512batch_fe25519_setzero +#define fe25519_neg crypto_sign_edwards25519sha512batch_fe25519_neg +#define fe25519_getparity crypto_sign_edwards25519sha512batch_fe25519_getparity +#define fe25519_add crypto_sign_edwards25519sha512batch_fe25519_add +#define fe25519_sub crypto_sign_edwards25519sha512batch_fe25519_sub +#define fe25519_mul crypto_sign_edwards25519sha512batch_fe25519_mul +#define fe25519_square crypto_sign_edwards25519sha512batch_fe25519_square +#define fe25519_pow crypto_sign_edwards25519sha512batch_fe25519_pow +#define fe25519_sqrt_vartime crypto_sign_edwards25519sha512batch_fe25519_sqrt_vartime +#define fe25519_invert crypto_sign_edwards25519sha512batch_fe25519_invert + +#include "crypto_uint32.h" + +typedef struct { + crypto_uint32 v[32]; +} fe25519; + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_cmov(fe25519 *r, const fe25519 *x, unsigned char b); + +void fe25519_setone(fe25519 *r); + +void fe25519_setzero(fe25519 *r); + +void fe25519_neg(fe25519 *r, const fe25519 *x); + +unsigned char fe25519_getparity(const fe25519 *x); + +void fe25519_add(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_sub(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_square(fe25519 *r, const fe25519 *x); + +void fe25519_pow(fe25519 *r, const fe25519 *x, const unsigned char *e); + +int fe25519_sqrt_vartime(fe25519 *r, const fe25519 *x, unsigned char parity); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +#endif diff --git a/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c new file mode 100644 index 00000000..4a490446 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c @@ -0,0 +1,345 @@ +#include "fe25519.h" + +#define WINDOWSIZE 4 /* Should be 1,2, or 4 */ +#define WINDOWMASK ((1<<WINDOWSIZE)-1) + +static void reduce_add_sub(fe25519 *r) +{ + crypto_uint32 t; + int i,rep; + + for(rep=0;rep<4;rep++) + { + t = r->v[31] >> 7; + r->v[31] &= 127; + t *= 19; + r->v[0] += t; + for(i=0;i<31;i++) + { + t = r->v[i] >> 8; + r->v[i+1] += t; + r->v[i] &= 255; + } + } +} + +static void reduce_mul(fe25519 *r) +{ + crypto_uint32 t; + int i,rep; + + for(rep=0;rep<2;rep++) + { + t = r->v[31] >> 7; + r->v[31] &= 127; + t *= 19; + r->v[0] += t; + for(i=0;i<31;i++) + { + t = r->v[i] >> 8; + r->v[i+1] += t; + r->v[i] &= 255; + } + } +} + +/* reduction modulo 2^255-19 */ +static void freeze(fe25519 *r) +{ + int i; + unsigned int m = (r->v[31] == 127); + for(i=30;i>1;i--) + m *= (r->v[i] == 255); + m *= (r->v[0] >= 237); + + r->v[31] -= m*127; + for(i=30;i>0;i--) + r->v[i] -= m*255; + r->v[0] -= m*237; +} + +/*freeze input before calling isone*/ +static int isone(const fe25519 *x) +{ + int i; + int r = (x->v[0] == 1); + for(i=1;i<32;i++) + r *= (x->v[i] == 0); + return r; +} + +/*freeze input before calling iszero*/ +static int iszero(const fe25519 *x) +{ + int i; + int r = (x->v[0] == 0); + for(i=1;i<32;i++) + r *= (x->v[i] == 0); + return r; +} + + +static int issquare(const fe25519 *x) +{ + unsigned char e[32] = {0xf6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f}; /* (p-1)/2 */ + fe25519 t; + + fe25519_pow(&t,x,e); + freeze(&t); + return isone(&t) || iszero(&t); +} + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]) +{ + int i; + for(i=0;i<32;i++) r->v[i] = x[i]; + r->v[31] &= 127; +} + +/* Assumes input x being reduced mod 2^255 */ +void fe25519_pack(unsigned char r[32], const fe25519 *x) +{ + int i; + for(i=0;i<32;i++) + r[i] = x->v[i]; + + /* freeze byte array */ + unsigned int m = (r[31] == 127); /* XXX: some compilers might use branches; fix */ + for(i=30;i>1;i--) + m *= (r[i] == 255); + m *= (r[0] >= 237); + r[31] -= m*127; + for(i=30;i>0;i--) + r[i] -= m*255; + r[0] -= m*237; +} + +void fe25519_cmov(fe25519 *r, const fe25519 *x, unsigned char b) +{ + unsigned char nb = 1-b; + int i; + for(i=0;i<32;i++) r->v[i] = nb * r->v[i] + b * x->v[i]; +} + +unsigned char fe25519_getparity(const fe25519 *x) +{ + fe25519 t; + int i; + for(i=0;i<32;i++) t.v[i] = x->v[i]; + freeze(&t); + return t.v[0] & 1; +} + +void fe25519_setone(fe25519 *r) +{ + int i; + r->v[0] = 1; + for(i=1;i<32;i++) r->v[i]=0; +} + +void fe25519_setzero(fe25519 *r) +{ + int i; + for(i=0;i<32;i++) r->v[i]=0; +} + +void fe25519_neg(fe25519 *r, const fe25519 *x) +{ + fe25519 t; + int i; + for(i=0;i<32;i++) t.v[i]=x->v[i]; + fe25519_setzero(r); + fe25519_sub(r, r, &t); +} + +void fe25519_add(fe25519 *r, const fe25519 *x, const fe25519 *y) +{ + int i; + for(i=0;i<32;i++) r->v[i] = x->v[i] + y->v[i]; + reduce_add_sub(r); +} + +void fe25519_sub(fe25519 *r, const fe25519 *x, const fe25519 *y) +{ + int i; + crypto_uint32 t[32]; + t[0] = x->v[0] + 0x1da; + t[31] = x->v[31] + 0xfe; + for(i=1;i<31;i++) t[i] = x->v[i] + 0x1fe; + for(i=0;i<32;i++) r->v[i] = t[i] - y->v[i]; + reduce_add_sub(r); +} + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y) +{ + int i,j; + crypto_uint32 t[63]; + for(i=0;i<63;i++)t[i] = 0; + + for(i=0;i<32;i++) + for(j=0;j<32;j++) + t[i+j] += x->v[i] * y->v[j]; + + for(i=32;i<63;i++) + r->v[i-32] = t[i-32] + 38*t[i]; + r->v[31] = t[31]; /* result now in r[0]...r[31] */ + + reduce_mul(r); +} + +void fe25519_square(fe25519 *r, const fe25519 *x) +{ + fe25519_mul(r, x, x); +} + +/*XXX: Make constant time! */ +void fe25519_pow(fe25519 *r, const fe25519 *x, const unsigned char *e) +{ + /* + fe25519 g; + fe25519_setone(&g); + int i; + unsigned char j; + for(i=32;i>0;i--) + { + for(j=128;j>0;j>>=1) + { + fe25519_square(&g,&g); + if(e[i-1] & j) + fe25519_mul(&g,&g,x); + } + } + for(i=0;i<32;i++) r->v[i] = g.v[i]; + */ + fe25519 g; + fe25519_setone(&g); + int i,j,k; + fe25519 pre[(1 << WINDOWSIZE)]; + fe25519 t; + unsigned char w; + + // Precomputation + fe25519_setone(pre); + pre[1] = *x; + for(i=2;i<(1<<WINDOWSIZE);i+=2) + { + fe25519_square(pre+i, pre+i/2); + fe25519_mul(pre+i+1, pre+i, pre+1); + } + + // Fixed-window scalar multiplication + for(i=32;i>0;i--) + { + for(j=8-WINDOWSIZE;j>=0;j-=WINDOWSIZE) + { + for(k=0;k<WINDOWSIZE;k++) + fe25519_square(&g, &g); + // Cache-timing resistant loading of precomputed value: + w = (e[i-1]>>j) & WINDOWMASK; + t = pre[0]; + for(k=1;k<(1<<WINDOWSIZE);k++) + fe25519_cmov(&t, &pre[k], k==w); + fe25519_mul(&g, &g, &t); + } + } + *r = g; +} + +/* Return 0 on success, 1 otherwise */ +int fe25519_sqrt_vartime(fe25519 *r, const fe25519 *x, unsigned char parity) +{ + /* See HAC, Alg. 3.37 */ + if (!issquare(x)) return -1; + unsigned char e[32] = {0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f}; /* (p-1)/4 */ + unsigned char e2[32] = {0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f}; /* (p+3)/8 */ + unsigned char e3[32] = {0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f}; /* (p-5)/8 */ + fe25519 p = {{0}}; + fe25519 d; + int i; + fe25519_pow(&d,x,e); + freeze(&d); + if(isone(&d)) + fe25519_pow(r,x,e2); + else + { + for(i=0;i<32;i++) + d.v[i] = 4*x->v[i]; + fe25519_pow(&d,&d,e3); + for(i=0;i<32;i++) + r->v[i] = 2*x->v[i]; + fe25519_mul(r,r,&d); + } + freeze(r); + if((r->v[0] & 1) != (parity & 1)) + { + fe25519_sub(r,&p,r); + } + return 0; +} + +void fe25519_invert(fe25519 *r, const fe25519 *x) +{ + fe25519 z2; + fe25519 z9; + fe25519 z11; + fe25519 z2_5_0; + fe25519 z2_10_0; + fe25519 z2_20_0; + fe25519 z2_50_0; + fe25519 z2_100_0; + fe25519 t0; + fe25519 t1; + int i; + + /* 2 */ fe25519_square(&z2,x); + /* 4 */ fe25519_square(&t1,&z2); + /* 8 */ fe25519_square(&t0,&t1); + /* 9 */ fe25519_mul(&z9,&t0,x); + /* 11 */ fe25519_mul(&z11,&z9,&z2); + /* 22 */ fe25519_square(&t0,&z11); + /* 2^5 - 2^0 = 31 */ fe25519_mul(&z2_5_0,&t0,&z9); + + /* 2^6 - 2^1 */ fe25519_square(&t0,&z2_5_0); + /* 2^7 - 2^2 */ fe25519_square(&t1,&t0); + /* 2^8 - 2^3 */ fe25519_square(&t0,&t1); + /* 2^9 - 2^4 */ fe25519_square(&t1,&t0); + /* 2^10 - 2^5 */ fe25519_square(&t0,&t1); + /* 2^10 - 2^0 */ fe25519_mul(&z2_10_0,&t0,&z2_5_0); + + /* 2^11 - 2^1 */ fe25519_square(&t0,&z2_10_0); + /* 2^12 - 2^2 */ fe25519_square(&t1,&t0); + /* 2^20 - 2^10 */ for (i = 2;i < 10;i += 2) { fe25519_square(&t0,&t1); fe25519_square(&t1,&t0); } + /* 2^20 - 2^0 */ fe25519_mul(&z2_20_0,&t1,&z2_10_0); + + /* 2^21 - 2^1 */ fe25519_square(&t0,&z2_20_0); + /* 2^22 - 2^2 */ fe25519_square(&t1,&t0); + /* 2^40 - 2^20 */ for (i = 2;i < 20;i += 2) { fe25519_square(&t0,&t1); fe25519_square(&t1,&t0); } + /* 2^40 - 2^0 */ fe25519_mul(&t0,&t1,&z2_20_0); + + /* 2^41 - 2^1 */ fe25519_square(&t1,&t0); + /* 2^42 - 2^2 */ fe25519_square(&t0,&t1); + /* 2^50 - 2^10 */ for (i = 2;i < 10;i += 2) { fe25519_square(&t1,&t0); fe25519_square(&t0,&t1); } + /* 2^50 - 2^0 */ fe25519_mul(&z2_50_0,&t0,&z2_10_0); + + /* 2^51 - 2^1 */ fe25519_square(&t0,&z2_50_0); + /* 2^52 - 2^2 */ fe25519_square(&t1,&t0); + /* 2^100 - 2^50 */ for (i = 2;i < 50;i += 2) { fe25519_square(&t0,&t1); fe25519_square(&t1,&t0); } + /* 2^100 - 2^0 */ fe25519_mul(&z2_100_0,&t1,&z2_50_0); + + /* 2^101 - 2^1 */ fe25519_square(&t1,&z2_100_0); + /* 2^102 - 2^2 */ fe25519_square(&t0,&t1); + /* 2^200 - 2^100 */ for (i = 2;i < 100;i += 2) { fe25519_square(&t1,&t0); fe25519_square(&t0,&t1); } + /* 2^200 - 2^0 */ fe25519_mul(&t1,&t0,&z2_100_0); + + /* 2^201 - 2^1 */ fe25519_square(&t0,&t1); + /* 2^202 - 2^2 */ fe25519_square(&t1,&t0); + /* 2^250 - 2^50 */ for (i = 2;i < 50;i += 2) { fe25519_square(&t0,&t1); fe25519_square(&t1,&t0); } + /* 2^250 - 2^0 */ fe25519_mul(&t0,&t1,&z2_50_0); + + /* 2^251 - 2^1 */ fe25519_square(&t1,&t0); + /* 2^252 - 2^2 */ fe25519_square(&t0,&t1); + /* 2^253 - 2^3 */ fe25519_square(&t1,&t0); + /* 2^254 - 2^4 */ fe25519_square(&t0,&t1); + /* 2^255 - 2^5 */ fe25519_square(&t1,&t0); + /* 2^255 - 21 */ fe25519_mul(r,&t1,&z11); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/ge25519.h b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/ge25519.h new file mode 100644 index 00000000..49ad163a --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/ge25519.h @@ -0,0 +1,34 @@ +#ifndef GE25519_H +#define GE25519_H + +#include "fe25519.h" +#include "sc25519.h" + +#define ge25519 crypto_sign_edwards25519sha512batch_ge25519 +#define ge25519_unpack_vartime crypto_sign_edwards25519sha512batch_ge25519_unpack_vartime +#define ge25519_pack crypto_sign_edwards25519sha512batch_ge25519_pack +#define ge25519_add crypto_sign_edwards25519sha512batch_ge25519_add +#define ge25519_double crypto_sign_edwards25519sha512batch_ge25519_double +#define ge25519_scalarmult crypto_sign_edwards25519sha512batch_ge25519_scalarmult +#define ge25519_scalarmult_base crypto_sign_edwards25519sha512batch_ge25519_scalarmult_base + +typedef struct { + fe25519 x; + fe25519 y; + fe25519 z; + fe25519 t; +} ge25519; + +int ge25519_unpack_vartime(ge25519 *r, const unsigned char p[32]); + +void ge25519_pack(unsigned char r[32], const ge25519 *p); + +void ge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q); + +void ge25519_double(ge25519 *r, const ge25519 *p); + +void ge25519_scalarmult(ge25519 *r, const ge25519 *p, const sc25519 *s); + +void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s); + +#endif diff --git a/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c new file mode 100644 index 00000000..7a8ff0ef --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c @@ -0,0 +1,227 @@ +#include "fe25519.h" +#include "sc25519.h" +#include "ge25519.h" + +/* + * Arithmetic on the twisted Edwards curve -x^2 + y^2 = 1 + dx^2y^2 + * with d = -(121665/121666) = 37095705934669439343138083508754565189542113879843219016388785533085940283555 + * Base point: (15112221349535400772501151409588531511454012693041857206046113283949847762202,46316835694926478169428394003475163141307993866256225615783033603165251855960); + */ + +typedef struct +{ + fe25519 x; + fe25519 z; + fe25519 y; + fe25519 t; +} ge25519_p1p1; + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; +} ge25519_p2; + +#define ge25519_p3 ge25519 + +/* Windowsize for fixed-window scalar multiplication */ +#define WINDOWSIZE 2 /* Should be 1,2, or 4 */ +#define WINDOWMASK ((1<<WINDOWSIZE)-1) + +/* packed parameter d in the Edwards curve equation */ +static const unsigned char ecd[32] = {0xA3, 0x78, 0x59, 0x13, 0xCA, 0x4D, 0xEB, 0x75, 0xAB, 0xD8, 0x41, 0x41, 0x4D, 0x0A, 0x70, 0x00, + 0x98, 0xE8, 0x79, 0x77, 0x79, 0x40, 0xC7, 0x8C, 0x73, 0xFE, 0x6F, 0x2B, 0xEE, 0x6C, 0x03, 0x52}; + +/* Packed coordinates of the base point */ +static const unsigned char ge25519_base_x[32] = {0x1A, 0xD5, 0x25, 0x8F, 0x60, 0x2D, 0x56, 0xC9, 0xB2, 0xA7, 0x25, 0x95, 0x60, 0xC7, 0x2C, 0x69, + 0x5C, 0xDC, 0xD6, 0xFD, 0x31, 0xE2, 0xA4, 0xC0, 0xFE, 0x53, 0x6E, 0xCD, 0xD3, 0x36, 0x69, 0x21}; +static const unsigned char ge25519_base_y[32] = {0x58, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}; +static const unsigned char ge25519_base_z[32] = {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +static const unsigned char ge25519_base_t[32] = {0xA3, 0xDD, 0xB7, 0xA5, 0xB3, 0x8A, 0xDE, 0x6D, 0xF5, 0x52, 0x51, 0x77, 0x80, 0x9F, 0xF0, 0x20, + 0x7D, 0xE3, 0xAB, 0x64, 0x8E, 0x4E, 0xEA, 0x66, 0x65, 0x76, 0x8B, 0xD7, 0x0F, 0x5F, 0x87, 0x67}; + +/* Packed coordinates of the neutral element */ +static const unsigned char ge25519_neutral_x[32] = {0}; +static const unsigned char ge25519_neutral_y[32] = {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +static const unsigned char ge25519_neutral_z[32] = {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +static const unsigned char ge25519_neutral_t[32] = {0}; + +static void p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p) +{ + fe25519_mul(&r->x, &p->x, &p->t); + fe25519_mul(&r->y, &p->y, &p->z); + fe25519_mul(&r->z, &p->z, &p->t); +} + +static void p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p) +{ + p1p1_to_p2((ge25519_p2 *)r, p); + fe25519_mul(&r->t, &p->x, &p->y); +} + +/* Constant-time version of: if(b) r = p */ +static void cmov_p3(ge25519_p3 *r, const ge25519_p3 *p, unsigned char b) +{ + fe25519_cmov(&r->x, &p->x, b); + fe25519_cmov(&r->y, &p->y, b); + fe25519_cmov(&r->z, &p->z, b); + fe25519_cmov(&r->t, &p->t, b); +} + +/* See http://www.hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#doubling-dbl-2008-hwcd */ +static void dbl_p1p1(ge25519_p1p1 *r, const ge25519_p2 *p) +{ + fe25519 a,b,c,d; + fe25519_square(&a, &p->x); + fe25519_square(&b, &p->y); + fe25519_square(&c, &p->z); + fe25519_add(&c, &c, &c); + fe25519_neg(&d, &a); + + fe25519_add(&r->x, &p->x, &p->y); + fe25519_square(&r->x, &r->x); + fe25519_sub(&r->x, &r->x, &a); + fe25519_sub(&r->x, &r->x, &b); + fe25519_add(&r->z, &d, &b); + fe25519_sub(&r->t, &r->z, &c); + fe25519_sub(&r->y, &d, &b); +} + +static void add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q) +{ + fe25519 a, b, c, d, t, fd; + fe25519_unpack(&fd, ecd); + + fe25519_sub(&a, &p->y, &p->x); // A = (Y1-X1)*(Y2-X2) + fe25519_sub(&t, &q->y, &q->x); + fe25519_mul(&a, &a, &t); + fe25519_add(&b, &p->x, &p->y); // B = (Y1+X1)*(Y2+X2) + fe25519_add(&t, &q->x, &q->y); + fe25519_mul(&b, &b, &t); + fe25519_mul(&c, &p->t, &q->t); //C = T1*k*T2 + fe25519_mul(&c, &c, &fd); + fe25519_add(&c, &c, &c); //XXX: Can save this addition by precomputing 2*ecd + fe25519_mul(&d, &p->z, &q->z); //D = Z1*2*Z2 + fe25519_add(&d, &d, &d); + fe25519_sub(&r->x, &b, &a); // E = B-A + fe25519_sub(&r->t, &d, &c); // F = D-C + fe25519_add(&r->z, &d, &c); // G = D+C + fe25519_add(&r->y, &b, &a); // H = B+A +} + +/* ******************************************************************** + * EXPORTED FUNCTIONS + ******************************************************************** */ + +/* return 0 on success, -1 otherwise */ +int ge25519_unpack_vartime(ge25519_p3 *r, const unsigned char p[32]) +{ + int ret; + fe25519 t, fd; + fe25519_setone(&r->z); + fe25519_unpack(&fd, ecd); + unsigned char par = p[31] >> 7; + fe25519_unpack(&r->y, p); + fe25519_square(&r->x, &r->y); + fe25519_mul(&t, &r->x, &fd); + fe25519_sub(&r->x, &r->x, &r->z); + fe25519_add(&t, &r->z, &t); + fe25519_invert(&t, &t); + fe25519_mul(&r->x, &r->x, &t); + ret = fe25519_sqrt_vartime(&r->x, &r->x, par); + fe25519_mul(&r->t, &r->x, &r->y); + return ret; +} + +void ge25519_pack(unsigned char r[32], const ge25519_p3 *p) +{ + fe25519 tx, ty, zi; + fe25519_invert(&zi, &p->z); + fe25519_mul(&tx, &p->x, &zi); + fe25519_mul(&ty, &p->y, &zi); + fe25519_pack(r, &ty); + r[31] ^= fe25519_getparity(&tx) << 7; +} + +void ge25519_add(ge25519_p3 *r, const ge25519_p3 *p, const ge25519_p3 *q) +{ + ge25519_p1p1 grp1p1; + add_p1p1(&grp1p1, p, q); + p1p1_to_p3(r, &grp1p1); +} + +void ge25519_double(ge25519_p3 *r, const ge25519_p3 *p) +{ + ge25519_p1p1 grp1p1; + dbl_p1p1(&grp1p1, (const ge25519_p2 *)p); + p1p1_to_p3(r, &grp1p1); +} + +void ge25519_scalarmult(ge25519_p3 *r, const ge25519_p3 *p, const sc25519 *s) +{ + int i,j,k; + ge25519_p3 g; + fe25519_unpack(&g.x, ge25519_neutral_x); + fe25519_unpack(&g.y, ge25519_neutral_y); + fe25519_unpack(&g.z, ge25519_neutral_z); + fe25519_unpack(&g.t, ge25519_neutral_t); + + ge25519_p3 pre[(1 << WINDOWSIZE)]; + ge25519_p3 t; + ge25519_p1p1 tp1p1; + unsigned char w; + unsigned char sb[32]; + sc25519_to32bytes(sb, s); + + // Precomputation + pre[0] = g; + pre[1] = *p; + for(i=2;i<(1<<WINDOWSIZE);i+=2) + { + dbl_p1p1(&tp1p1, (ge25519_p2 *)(pre+i/2)); + p1p1_to_p3(pre+i, &tp1p1); + add_p1p1(&tp1p1, pre+i, pre+1); + p1p1_to_p3(pre+i+1, &tp1p1); + } + + // Fixed-window scalar multiplication + for(i=32;i>0;i--) + { + for(j=8-WINDOWSIZE;j>=0;j-=WINDOWSIZE) + { + for(k=0;k<WINDOWSIZE-1;k++) + { + dbl_p1p1(&tp1p1, (ge25519_p2 *)&g); + p1p1_to_p2((ge25519_p2 *)&g, &tp1p1); + } + dbl_p1p1(&tp1p1, (ge25519_p2 *)&g); + p1p1_to_p3(&g, &tp1p1); + // Cache-timing resistant loading of precomputed value: + w = (sb[i-1]>>j) & WINDOWMASK; + t = pre[0]; + for(k=1;k<(1<<WINDOWSIZE);k++) + cmov_p3(&t, &pre[k], k==w); + + add_p1p1(&tp1p1, &g, &t); + if(j != 0) p1p1_to_p2((ge25519_p2 *)&g, &tp1p1); + else p1p1_to_p3(&g, &tp1p1); /* convert to p3 representation at the end */ + } + } + r->x = g.x; + r->y = g.y; + r->z = g.z; + r->t = g.t; +} + +void ge25519_scalarmult_base(ge25519_p3 *r, const sc25519 *s) +{ + /* XXX: Better algorithm for known-base-point scalar multiplication */ + ge25519_p3 t; + fe25519_unpack(&t.x, ge25519_base_x); + fe25519_unpack(&t.y, ge25519_base_y); + fe25519_unpack(&t.z, ge25519_base_z); + fe25519_unpack(&t.t, ge25519_base_t); + ge25519_scalarmult(r, &t, s); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sc25519.h b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sc25519.h new file mode 100644 index 00000000..f791dea4 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sc25519.h @@ -0,0 +1,51 @@ +#ifndef SC25519_H +#define SC25519_H + +#define sc25519 crypto_sign_edwards25519sha512batch_sc25519 +#define sc25519_from32bytes crypto_sign_edwards25519sha512batch_sc25519_from32bytes +#define sc25519_from64bytes crypto_sign_edwards25519sha512batch_sc25519_from64bytes +#define sc25519_to32bytes crypto_sign_edwards25519sha512batch_sc25519_to32bytes +#define sc25519_pack crypto_sign_edwards25519sha512batch_sc25519_pack +#define sc25519_getparity crypto_sign_edwards25519sha512batch_sc25519_getparity +#define sc25519_setone crypto_sign_edwards25519sha512batch_sc25519_setone +#define sc25519_setzero crypto_sign_edwards25519sha512batch_sc25519_setzero +#define sc25519_neg crypto_sign_edwards25519sha512batch_sc25519_neg +#define sc25519_add crypto_sign_edwards25519sha512batch_sc25519_add +#define sc25519_sub crypto_sign_edwards25519sha512batch_sc25519_sub +#define sc25519_mul crypto_sign_edwards25519sha512batch_sc25519_mul +#define sc25519_square crypto_sign_edwards25519sha512batch_sc25519_square +#define sc25519_invert crypto_sign_edwards25519sha512batch_sc25519_invert + +#include "crypto_uint32.h" + +typedef struct { + crypto_uint32 v[32]; +} sc25519; + +void sc25519_from32bytes(sc25519 *r, const unsigned char x[32]); + +void sc25519_from64bytes(sc25519 *r, const unsigned char x[64]); + +void sc25519_to32bytes(unsigned char r[32], const sc25519 *x); + +void sc25519_pack(unsigned char r[32], const sc25519 *x); + +unsigned char sc25519_getparity(const sc25519 *x); + +void sc25519_setone(sc25519 *r); + +void sc25519_setzero(sc25519 *r); + +void sc25519_neg(sc25519 *r, const sc25519 *x); + +void sc25519_add(sc25519 *r, const sc25519 *x, const sc25519 *y); + +void sc25519_sub(sc25519 *r, const sc25519 *x, const sc25519 *y); + +void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y); + +void sc25519_square(sc25519 *r, const sc25519 *x); + +void sc25519_invert(sc25519 *r, const sc25519 *x); + +#endif diff --git a/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c new file mode 100644 index 00000000..ad232d78 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c @@ -0,0 +1,146 @@ +#include "sc25519.h" + +/*Arithmetic modulo the group order n = 2^252 + 27742317777372353535851937790883648493 = 7237005577332262213973186563042994240857116359379907606001950938285454250989 */ + +static const crypto_uint32 m[32] = {0xED, 0xD3, 0xF5, 0x5C, 0x1A, 0x63, 0x12, 0x58, 0xD6, 0x9C, 0xF7, 0xA2, 0xDE, 0xF9, 0xDE, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}; + +static const crypto_uint32 mu[33] = {0x1B, 0x13, 0x2C, 0x0A, 0xA3, 0xE5, 0x9C, 0xED, 0xA7, 0x29, 0x63, 0x08, 0x5D, 0x21, 0x06, 0x21, + 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F}; + +/* Reduce coefficients of r before calling reduce_add_sub */ +static void reduce_add_sub(sc25519 *r) +{ + int i, b, pb=0, nb; + unsigned char t[32]; + + for(i=0;i<32;i++) + { + b = (r->v[i]<pb+m[i]); + t[i] = r->v[i]-pb-m[i]+b*256; + pb = b; + } + nb = 1-b; + for(i=0;i<32;i++) + r->v[i] = r->v[i]*b + t[i]*nb; +} + +/* Reduce coefficients of x before calling barrett_reduce */ +static void barrett_reduce(sc25519 *r, const crypto_uint32 x[64]) +{ + /* See HAC, Alg. 14.42 */ + int i,j; + crypto_uint32 q2[66] = {0}; + crypto_uint32 *q3 = q2 + 33; + crypto_uint32 r1[33]; + crypto_uint32 r2[33] = {0}; + crypto_uint32 carry; + int b, pb=0; + + for(i=0;i<33;i++) + for(j=0;j<33;j++) + if(i+j >= 31) q2[i+j] += mu[i]*x[j+31]; + carry = q2[31] >> 8; + q2[32] += carry; + carry = q2[32] >> 8; + q2[33] += carry; + + for(i=0;i<33;i++)r1[i] = x[i]; + for(i=0;i<32;i++) + for(j=0;j<33;j++) + if(i+j < 33) r2[i+j] += m[i]*q3[j]; + + for(i=0;i<32;i++) + { + carry = r2[i] >> 8; + r2[i+1] += carry; + r2[i] &= 0xff; + } + + for(i=0;i<32;i++) + { + b = (r1[i]<pb+r2[i]); + r->v[i] = r1[i]-pb-r2[i]+b*256; + pb = b; + } + + /* XXX: Can it really happen that r<0?, See HAC, Alg 14.42, Step 3 + * If so: Handle it here! + */ + + reduce_add_sub(r); + reduce_add_sub(r); +} + +/* +static int iszero(const sc25519 *x) +{ + // Implement + return 0; +} +*/ + +void sc25519_from32bytes(sc25519 *r, const unsigned char x[32]) +{ + int i; + crypto_uint32 t[64] = {0}; + for(i=0;i<32;i++) t[i] = x[i]; + barrett_reduce(r, t); +} + +void sc25519_from64bytes(sc25519 *r, const unsigned char x[64]) +{ + int i; + crypto_uint32 t[64] = {0}; + for(i=0;i<64;i++) t[i] = x[i]; + barrett_reduce(r, t); +} + +/* XXX: What we actually want for crypto_group is probably just something like + * void sc25519_frombytes(sc25519 *r, const unsigned char *x, size_t xlen) + */ + +void sc25519_to32bytes(unsigned char r[32], const sc25519 *x) +{ + int i; + for(i=0;i<32;i++) r[i] = x->v[i]; +} + +void sc25519_add(sc25519 *r, const sc25519 *x, const sc25519 *y) +{ + int i, carry; + for(i=0;i<32;i++) r->v[i] = x->v[i] + y->v[i]; + for(i=0;i<31;i++) + { + carry = r->v[i] >> 8; + r->v[i+1] += carry; + r->v[i] &= 0xff; + } + reduce_add_sub(r); +} + +void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y) +{ + int i,j,carry; + crypto_uint32 t[64]; + for(i=0;i<64;i++)t[i] = 0; + + for(i=0;i<32;i++) + for(j=0;j<32;j++) + t[i+j] += x->v[i] * y->v[j]; + + /* Reduce coefficients */ + for(i=0;i<63;i++) + { + carry = t[i] >> 8; + t[i+1] += carry; + t[i] &= 0xff; + } + + barrett_reduce(r, t); +} + +void sc25519_square(sc25519 *r, const sc25519 *x) +{ + sc25519_mul(r, x, x); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c new file mode 100644 index 00000000..885d7b1a --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c @@ -0,0 +1,102 @@ +#include "api.h" +#include "crypto_hash_sha512.h" +#include "randombytes.h" +#include "crypto_verify_32.h" + +#include "ge25519.h" + +int crypto_sign_keypair( + unsigned char *pk, + unsigned char *sk + ) +{ + sc25519 scsk; + ge25519 gepk; + + randombytes(sk, 32); + crypto_hash_sha512(sk, sk, 32); + sk[0] &= 248; + sk[31] &= 127; + sk[31] |= 64; + + sc25519_from32bytes(&scsk,sk); + + ge25519_scalarmult_base(&gepk, &scsk); + ge25519_pack(pk, &gepk); + return 0; +} + +int crypto_sign( + unsigned char *sm,unsigned long long *smlen, + const unsigned char *m,unsigned long long mlen, + const unsigned char *sk + ) +{ + sc25519 sck, scs, scsk; + ge25519 ger; + unsigned char r[32]; + unsigned char s[32]; + unsigned long long i; + unsigned char hmg[crypto_hash_sha512_BYTES]; + unsigned char hmr[crypto_hash_sha512_BYTES]; + + *smlen = mlen+64; + for(i=0;i<mlen;i++) + sm[32 + i] = m[i]; + for(i=0;i<32;i++) + sm[i] = sk[32+i]; + crypto_hash_sha512(hmg, sm, mlen+32); /* Generate k as h(m,sk[32],...,sk[63]) */ + + sc25519_from64bytes(&sck, hmg); + ge25519_scalarmult_base(&ger, &sck); + ge25519_pack(r, &ger); + + for(i=0;i<32;i++) + sm[i] = r[i]; + + crypto_hash_sha512(hmr, sm, mlen+32); /* Compute h(m,r) */ + sc25519_from64bytes(&scs, hmr); + sc25519_mul(&scs, &scs, &sck); + + sc25519_from32bytes(&scsk, sk); + sc25519_add(&scs, &scs, &scsk); + + sc25519_to32bytes(s,&scs); /* cat s */ + for(i=0;i<32;i++) + sm[mlen+32+i] = s[i]; + + return 0; +} + +int crypto_sign_open( + unsigned char *m,unsigned long long *mlen, + const unsigned char *sm,unsigned long long smlen, + const unsigned char *pk + ) +{ + unsigned long long i; + unsigned char t1[32], t2[32]; + ge25519 get1, get2, gepk; + sc25519 schmr, scs; + unsigned char hmr[crypto_hash_sha512_BYTES]; + + if (ge25519_unpack_vartime(&get1, sm)) return -1; + if (ge25519_unpack_vartime(&gepk, pk)) return -1; + + crypto_hash_sha512(hmr,sm,smlen-32); + + sc25519_from64bytes(&schmr, hmr); + ge25519_scalarmult(&get1, &get1, &schmr); + ge25519_add(&get1, &get1, &gepk); + ge25519_pack(t1, &get1); + + sc25519_from32bytes(&scs, &sm[smlen-32]); + ge25519_scalarmult_base(&get2, &scs); + ge25519_pack(t2, &get2); + + for(i=0;i<smlen-64;i++) + m[i] = sm[i + 32]; + *mlen = smlen-64; + + return crypto_verify_32(t1, t2); +} diff --git a/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c new file mode 100644 index 00000000..142f4ffc --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c @@ -0,0 +1,21 @@ +#include "crypto_sign_edwards25519sha512batch.h" + +size_t +crypto_sign_edwards25519sha512batch_bytes(void) { + return crypto_sign_edwards25519sha512batch_BYTES; +} + +size_t +crypto_sign_edwards25519sha512batch_publickeybytes(void) { + return crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES; +} + +size_t +crypto_sign_edwards25519sha512batch_secretkeybytes(void) { + return crypto_sign_edwards25519sha512batch_SECRETKEYBYTES; +} + +const char * +crypto_sign_edwards25519sha512batch_primitive(void) { + return "edwards25519sha512batch"; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/afternm_aes128ctr.c b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/afternm_aes128ctr.c new file mode 100644 index 00000000..f74937e6 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/afternm_aes128ctr.c @@ -0,0 +1,158 @@ +/* Author: Peter Schwabe, ported from an assembly implementation by Emilia Käsper + * Date: 2009-03-19 + * Public domain */ + +#include "api.h" +#include "int128.h" +#include "common.h" +#include "consts.h" + +int crypto_stream_afternm(unsigned char *outp, unsigned long long len, const unsigned char *noncep, const unsigned char *c) +{ + + int128 xmm0; + int128 xmm1; + int128 xmm2; + int128 xmm3; + int128 xmm4; + int128 xmm5; + int128 xmm6; + int128 xmm7; + + int128 xmm8; + int128 xmm9; + int128 xmm10; + int128 xmm11; + int128 xmm12; + int128 xmm13; + int128 xmm14; + int128 xmm15; + + int128 nonce_stack; + unsigned long long lensav; + unsigned char bl[128]; + unsigned char *blp; + unsigned char b; + + uint32 tmp; + + /* Copy nonce on the stack */ + copy2(&nonce_stack, (const int128 *) (noncep + 0)); + unsigned char *np = (unsigned char *)&nonce_stack; + + enc_block: + + xmm0 = *(int128 *) (np + 0); + copy2(&xmm1, &xmm0); + shufb(&xmm1, SWAP32); + copy2(&xmm2, &xmm1); + copy2(&xmm3, &xmm1); + copy2(&xmm4, &xmm1); + copy2(&xmm5, &xmm1); + copy2(&xmm6, &xmm1); + copy2(&xmm7, &xmm1); + + add_uint32_big(&xmm1, 1); + add_uint32_big(&xmm2, 2); + add_uint32_big(&xmm3, 3); + add_uint32_big(&xmm4, 4); + add_uint32_big(&xmm5, 5); + add_uint32_big(&xmm6, 6); + add_uint32_big(&xmm7, 7); + + shufb(&xmm0, M0); + shufb(&xmm1, M0SWAP); + shufb(&xmm2, M0SWAP); + shufb(&xmm3, M0SWAP); + shufb(&xmm4, M0SWAP); + shufb(&xmm5, M0SWAP); + shufb(&xmm6, M0SWAP); + shufb(&xmm7, M0SWAP); + + bitslice(xmm7, xmm6, xmm5, xmm4, xmm3, xmm2, xmm1, xmm0, xmm8) + + aesround( 1, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c) + aesround( 2, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c) + aesround( 3, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c) + aesround( 4, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c) + aesround( 5, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c) + aesround( 6, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c) + aesround( 7, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c) + aesround( 8, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c) + aesround( 9, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c) + lastround(xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c) + + bitslice(xmm13, xmm10, xmm15, xmm11, xmm14, xmm12, xmm9, xmm8, xmm0) + + if(len < 128) goto partial; + if(len == 128) goto full; + + tmp = load32_bigendian(np + 12); + tmp += 8; + store32_bigendian(np + 12, tmp); + + *(int128 *) (outp + 0) = xmm8; + *(int128 *) (outp + 16) = xmm9; + *(int128 *) (outp + 32) = xmm12; + *(int128 *) (outp + 48) = xmm14; + *(int128 *) (outp + 64) = xmm11; + *(int128 *) (outp + 80) = xmm15; + *(int128 *) (outp + 96) = xmm10; + *(int128 *) (outp + 112) = xmm13; + + len -= 128; + outp += 128; + + goto enc_block; + + partial: + + lensav = len; + len >>= 4; + + tmp = load32_bigendian(np + 12); + tmp += len; + store32_bigendian(np + 12, tmp); + + blp = bl; + *(int128 *)(blp + 0) = xmm8; + *(int128 *)(blp + 16) = xmm9; + *(int128 *)(blp + 32) = xmm12; + *(int128 *)(blp + 48) = xmm14; + *(int128 *)(blp + 64) = xmm11; + *(int128 *)(blp + 80) = xmm15; + *(int128 *)(blp + 96) = xmm10; + *(int128 *)(blp + 112) = xmm13; + + bytes: + + if(lensav == 0) goto end; + + b = blp[0]; /* clang false positive */ + *(unsigned char *)(outp + 0) = b; + + blp += 1; + outp +=1; + lensav -= 1; + + goto bytes; + + full: + + tmp = load32_bigendian(np + 12); + tmp += 8; + store32_bigendian(np + 12, tmp); + + *(int128 *) (outp + 0) = xmm8; + *(int128 *) (outp + 16) = xmm9; + *(int128 *) (outp + 32) = xmm12; + *(int128 *) (outp + 48) = xmm14; + *(int128 *) (outp + 64) = xmm11; + *(int128 *) (outp + 80) = xmm15; + *(int128 *) (outp + 96) = xmm10; + *(int128 *) (outp + 112) = xmm13; + + end: + return 0; + +} diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/api.h b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/api.h new file mode 100644 index 00000000..bc951d13 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/api.h @@ -0,0 +1,14 @@ + +#include "crypto_stream_aes128ctr.h" + +#define crypto_stream crypto_stream_aes128ctr +#define crypto_stream_xor crypto_stream_aes128ctr_xor +#define crypto_stream_beforenm crypto_stream_aes128ctr_beforenm +#define crypto_stream_afternm crypto_stream_aes128ctr_afternm +#define crypto_stream_xor_afternm crypto_stream_aes128ctr_xor_afternm +#define crypto_stream_KEYBYTES crypto_stream_aes128ctr_KEYBYTES +#define crypto_stream_NONCEBYTES crypto_stream_aes128ctr_NONCEBYTES +#define crypto_stream_BEFORENMBYTES crypto_stream_aes128ctr_BEFORENMBYTES +#define crypto_stream_PRIMITIVE "aes128ctr" +#define crypto_stream_IMPLEMENTATION crypto_stream_aes128ctr_IMPLEMENTATION +#define crypto_stream_VERSION crypto_stream_aes128ctr_VERSION diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c new file mode 100644 index 00000000..f8623dd2 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c @@ -0,0 +1,59 @@ +/* Author: Peter Schwabe, ported from an assembly implementation by Emilia Käsper + * Date: 2009-03-19 + * Public domain */ + +#include "api.h" +#include "consts.h" +#include "int128.h" +#include "common.h" + +int crypto_stream_beforenm(unsigned char *c, const unsigned char *k) +{ + + /* + int64 x0; + int64 x1; + int64 x2; + int64 x3; + int64 e; + int64 q0; + int64 q1; + int64 q2; + int64 q3; + */ + + int128 xmm0; + int128 xmm1; + int128 xmm2; + int128 xmm3; + int128 xmm4; + int128 xmm5; + int128 xmm6; + int128 xmm7; + int128 xmm8; + int128 xmm9; + int128 xmm10; + int128 xmm11; + int128 xmm12; + int128 xmm13; + int128 xmm14; + int128 xmm15; + int128 t; + + bitslicekey0(k, c) + + keyexpbs1(xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c) + keyexpbs(xmm0, xmm1, xmm4, xmm6, xmm3, xmm7, xmm2, xmm5, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm1);, 2,c) + keyexpbs(xmm0, xmm1, xmm3, xmm2, xmm6, xmm5, xmm4, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm6);, 3,c) + keyexpbs(xmm0, xmm1, xmm6, xmm4, xmm2, xmm7, xmm3, xmm5, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm3);, 4,c) + + keyexpbs(xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm3);, 5,c) + keyexpbs(xmm0, xmm1, xmm4, xmm6, xmm3, xmm7, xmm2, xmm5, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm5);, 6,c) + keyexpbs(xmm0, xmm1, xmm3, xmm2, xmm6, xmm5, xmm4, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm3);, 7,c) + keyexpbs(xmm0, xmm1, xmm6, xmm4, xmm2, xmm7, xmm3, xmm5, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm7);, 8,c) + + keyexpbs(xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xor_rcon(&xmm0); xor_rcon(&xmm1); xor_rcon(&xmm6); xor_rcon(&xmm3);, 9,c) + keyexpbs10(xmm0, xmm1, xmm4, xmm6, xmm3, xmm7, xmm2, xmm5, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c) + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/common.h b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/common.h new file mode 100644 index 00000000..3923c02d --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/common.h @@ -0,0 +1,788 @@ +/* Author: Peter Schwabe, ported from an assembly implementation by Emilia Käsper + Date: 2009-03-19 + Public domain */ +#ifndef COMMON_H +#define COMMON_H + +#include "types.h" + +#define load32_bigendian crypto_stream_aes128ctr_portable_load32_bigendian +uint32 load32_bigendian(const unsigned char *x); + +#define store32_bigendian crypto_stream_aes128ctr_portable_store32_bigendian +void store32_bigendian(unsigned char *x,uint32 u); + +#define load32_littleendian crypto_stream_aes128ctr_portable_load32_littleendian +uint32 load32_littleendian(const unsigned char *x); + +#define store32_littleendian crypto_stream_aes128ctr_portable_store32_littleendian +void store32_littleendian(unsigned char *x,uint32 u); + +#define load64_littleendian crypto_stream_aes128ctr_portable_load64_littleendian +uint64 load64_littleendian(const unsigned char *x); + +#define store64_littleendian crypto_stream_aes128ctr_portable_store64_littleendian +void store64_littleendian(unsigned char *x,uint64 u); + +/* Macros required only for key expansion */ + +#define keyexpbs1(b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, t4, t5, t6, t7, bskey) \ + rotbyte(&b0);\ + rotbyte(&b1);\ + rotbyte(&b2);\ + rotbyte(&b3);\ + rotbyte(&b4);\ + rotbyte(&b5);\ + rotbyte(&b6);\ + rotbyte(&b7);\ + ;\ + sbox(b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, t4, t5, t6, t7);\ + ;\ + xor_rcon(&b0);\ + shufb(&b0, EXPB0);\ + shufb(&b1, EXPB0);\ + shufb(&b4, EXPB0);\ + shufb(&b6, EXPB0);\ + shufb(&b3, EXPB0);\ + shufb(&b7, EXPB0);\ + shufb(&b2, EXPB0);\ + shufb(&b5, EXPB0);\ + shufb(&b0, EXPB0);\ + ;\ + t0 = *(int128 *)(bskey + 0);\ + t1 = *(int128 *)(bskey + 16);\ + t2 = *(int128 *)(bskey + 32);\ + t3 = *(int128 *)(bskey + 48);\ + t4 = *(int128 *)(bskey + 64);\ + t5 = *(int128 *)(bskey + 80);\ + t6 = *(int128 *)(bskey + 96);\ + t7 = *(int128 *)(bskey + 112);\ + ;\ + xor2(&b0, &t0);\ + xor2(&b1, &t1);\ + xor2(&b4, &t2);\ + xor2(&b6, &t3);\ + xor2(&b3, &t4);\ + xor2(&b7, &t5);\ + xor2(&b2, &t6);\ + xor2(&b5, &t7);\ + ;\ + rshift32_littleendian(&t0, 8);\ + rshift32_littleendian(&t1, 8);\ + rshift32_littleendian(&t2, 8);\ + rshift32_littleendian(&t3, 8);\ + rshift32_littleendian(&t4, 8);\ + rshift32_littleendian(&t5, 8);\ + rshift32_littleendian(&t6, 8);\ + rshift32_littleendian(&t7, 8);\ + ;\ + xor2(&b0, &t0);\ + xor2(&b1, &t1);\ + xor2(&b4, &t2);\ + xor2(&b6, &t3);\ + xor2(&b3, &t4);\ + xor2(&b7, &t5);\ + xor2(&b2, &t6);\ + xor2(&b5, &t7);\ + ;\ + rshift32_littleendian(&t0, 8);\ + rshift32_littleendian(&t1, 8);\ + rshift32_littleendian(&t2, 8);\ + rshift32_littleendian(&t3, 8);\ + rshift32_littleendian(&t4, 8);\ + rshift32_littleendian(&t5, 8);\ + rshift32_littleendian(&t6, 8);\ + rshift32_littleendian(&t7, 8);\ + ;\ + xor2(&b0, &t0);\ + xor2(&b1, &t1);\ + xor2(&b4, &t2);\ + xor2(&b6, &t3);\ + xor2(&b3, &t4);\ + xor2(&b7, &t5);\ + xor2(&b2, &t6);\ + xor2(&b5, &t7);\ + ;\ + rshift32_littleendian(&t0, 8);\ + rshift32_littleendian(&t1, 8);\ + rshift32_littleendian(&t2, 8);\ + rshift32_littleendian(&t3, 8);\ + rshift32_littleendian(&t4, 8);\ + rshift32_littleendian(&t5, 8);\ + rshift32_littleendian(&t6, 8);\ + rshift32_littleendian(&t7, 8);\ + ;\ + xor2(&b0, &t0);\ + xor2(&b1, &t1);\ + xor2(&b4, &t2);\ + xor2(&b6, &t3);\ + xor2(&b3, &t4);\ + xor2(&b7, &t5);\ + xor2(&b2, &t6);\ + xor2(&b5, &t7);\ + ;\ + *(int128 *)(bskey + 128) = b0;\ + *(int128 *)(bskey + 144) = b1;\ + *(int128 *)(bskey + 160) = b4;\ + *(int128 *)(bskey + 176) = b6;\ + *(int128 *)(bskey + 192) = b3;\ + *(int128 *)(bskey + 208) = b7;\ + *(int128 *)(bskey + 224) = b2;\ + *(int128 *)(bskey + 240) = b5;\ + +#define keyexpbs10(b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, t4, t5, t6, t7, bskey) ;\ + toggle(&b0);\ + toggle(&b1);\ + toggle(&b5);\ + toggle(&b6);\ + rotbyte(&b0);\ + rotbyte(&b1);\ + rotbyte(&b2);\ + rotbyte(&b3);\ + rotbyte(&b4);\ + rotbyte(&b5);\ + rotbyte(&b6);\ + rotbyte(&b7);\ + ;\ + sbox(b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, t4, t5, t6, t7);\ + ;\ + xor_rcon(&b1);\ + xor_rcon(&b4);\ + xor_rcon(&b3);\ + xor_rcon(&b7);\ + shufb(&b0, EXPB0);\ + shufb(&b1, EXPB0);\ + shufb(&b4, EXPB0);\ + shufb(&b6, EXPB0);\ + shufb(&b3, EXPB0);\ + shufb(&b7, EXPB0);\ + shufb(&b2, EXPB0);\ + shufb(&b5, EXPB0);\ + ;\ + t0 = *(int128 *)(bskey + 9 * 128 + 0);\ + t1 = *(int128 *)(bskey + 9 * 128 + 16);\ + t2 = *(int128 *)(bskey + 9 * 128 + 32);\ + t3 = *(int128 *)(bskey + 9 * 128 + 48);\ + t4 = *(int128 *)(bskey + 9 * 128 + 64);\ + t5 = *(int128 *)(bskey + 9 * 128 + 80);\ + t6 = *(int128 *)(bskey + 9 * 128 + 96);\ + t7 = *(int128 *)(bskey + 9 * 128 + 112);\ + ;\ + toggle(&t0);\ + toggle(&t1);\ + toggle(&t5);\ + toggle(&t6);\ + ;\ + xor2(&b0, &t0);\ + xor2(&b1, &t1);\ + xor2(&b4, &t2);\ + xor2(&b6, &t3);\ + xor2(&b3, &t4);\ + xor2(&b7, &t5);\ + xor2(&b2, &t6);\ + xor2(&b5, &t7);\ + ;\ + rshift32_littleendian(&t0, 8);\ + rshift32_littleendian(&t1, 8);\ + rshift32_littleendian(&t2, 8);\ + rshift32_littleendian(&t3, 8);\ + rshift32_littleendian(&t4, 8);\ + rshift32_littleendian(&t5, 8);\ + rshift32_littleendian(&t6, 8);\ + rshift32_littleendian(&t7, 8);\ + ;\ + xor2(&b0, &t0);\ + xor2(&b1, &t1);\ + xor2(&b4, &t2);\ + xor2(&b6, &t3);\ + xor2(&b3, &t4);\ + xor2(&b7, &t5);\ + xor2(&b2, &t6);\ + xor2(&b5, &t7);\ + ;\ + rshift32_littleendian(&t0, 8);\ + rshift32_littleendian(&t1, 8);\ + rshift32_littleendian(&t2, 8);\ + rshift32_littleendian(&t3, 8);\ + rshift32_littleendian(&t4, 8);\ + rshift32_littleendian(&t5, 8);\ + rshift32_littleendian(&t6, 8);\ + rshift32_littleendian(&t7, 8);\ + ;\ + xor2(&b0, &t0);\ + xor2(&b1, &t1);\ + xor2(&b4, &t2);\ + xor2(&b6, &t3);\ + xor2(&b3, &t4);\ + xor2(&b7, &t5);\ + xor2(&b2, &t6);\ + xor2(&b5, &t7);\ + ;\ + rshift32_littleendian(&t0, 8);\ + rshift32_littleendian(&t1, 8);\ + rshift32_littleendian(&t2, 8);\ + rshift32_littleendian(&t3, 8);\ + rshift32_littleendian(&t4, 8);\ + rshift32_littleendian(&t5, 8);\ + rshift32_littleendian(&t6, 8);\ + rshift32_littleendian(&t7, 8);\ + ;\ + xor2(&b0, &t0);\ + xor2(&b1, &t1);\ + xor2(&b4, &t2);\ + xor2(&b6, &t3);\ + xor2(&b3, &t4);\ + xor2(&b7, &t5);\ + xor2(&b2, &t6);\ + xor2(&b5, &t7);\ + ;\ + shufb(&b0, M0);\ + shufb(&b1, M0);\ + shufb(&b2, M0);\ + shufb(&b3, M0);\ + shufb(&b4, M0);\ + shufb(&b5, M0);\ + shufb(&b6, M0);\ + shufb(&b7, M0);\ + ;\ + *(int128 *)(bskey + 1280) = b0;\ + *(int128 *)(bskey + 1296) = b1;\ + *(int128 *)(bskey + 1312) = b4;\ + *(int128 *)(bskey + 1328) = b6;\ + *(int128 *)(bskey + 1344) = b3;\ + *(int128 *)(bskey + 1360) = b7;\ + *(int128 *)(bskey + 1376) = b2;\ + *(int128 *)(bskey + 1392) = b5;\ + + +#define keyexpbs(b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, t4, t5, t6, t7, rcon, i, bskey) \ + toggle(&b0);\ + toggle(&b1);\ + toggle(&b5);\ + toggle(&b6);\ + rotbyte(&b0);\ + rotbyte(&b1);\ + rotbyte(&b2);\ + rotbyte(&b3);\ + rotbyte(&b4);\ + rotbyte(&b5);\ + rotbyte(&b6);\ + rotbyte(&b7);\ + ;\ + sbox(b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, t4, t5, t6, t7);\ + ;\ + rcon;\ + shufb(&b0, EXPB0);\ + shufb(&b1, EXPB0);\ + shufb(&b4, EXPB0);\ + shufb(&b6, EXPB0);\ + shufb(&b3, EXPB0);\ + shufb(&b7, EXPB0);\ + shufb(&b2, EXPB0);\ + shufb(&b5, EXPB0);\ + ;\ + t0 = *(int128 *)(bskey + (i-1) * 128 + 0);\ + t1 = *(int128 *)(bskey + (i-1) * 128 + 16);\ + t2 = *(int128 *)(bskey + (i-1) * 128 + 32);\ + t3 = *(int128 *)(bskey + (i-1) * 128 + 48);\ + t4 = *(int128 *)(bskey + (i-1) * 128 + 64);\ + t5 = *(int128 *)(bskey + (i-1) * 128 + 80);\ + t6 = *(int128 *)(bskey + (i-1) * 128 + 96);\ + t7 = *(int128 *)(bskey + (i-1) * 128 + 112);\ + ;\ + toggle(&t0);\ + toggle(&t1);\ + toggle(&t5);\ + toggle(&t6);\ + ;\ + xor2(&b0, &t0);\ + xor2(&b1, &t1);\ + xor2(&b4, &t2);\ + xor2(&b6, &t3);\ + xor2(&b3, &t4);\ + xor2(&b7, &t5);\ + xor2(&b2, &t6);\ + xor2(&b5, &t7);\ + ;\ + rshift32_littleendian(&t0, 8);\ + rshift32_littleendian(&t1, 8);\ + rshift32_littleendian(&t2, 8);\ + rshift32_littleendian(&t3, 8);\ + rshift32_littleendian(&t4, 8);\ + rshift32_littleendian(&t5, 8);\ + rshift32_littleendian(&t6, 8);\ + rshift32_littleendian(&t7, 8);\ + ;\ + xor2(&b0, &t0);\ + xor2(&b1, &t1);\ + xor2(&b4, &t2);\ + xor2(&b6, &t3);\ + xor2(&b3, &t4);\ + xor2(&b7, &t5);\ + xor2(&b2, &t6);\ + xor2(&b5, &t7);\ + ;\ + rshift32_littleendian(&t0, 8);\ + rshift32_littleendian(&t1, 8);\ + rshift32_littleendian(&t2, 8);\ + rshift32_littleendian(&t3, 8);\ + rshift32_littleendian(&t4, 8);\ + rshift32_littleendian(&t5, 8);\ + rshift32_littleendian(&t6, 8);\ + rshift32_littleendian(&t7, 8);\ + ;\ + xor2(&b0, &t0);\ + xor2(&b1, &t1);\ + xor2(&b4, &t2);\ + xor2(&b6, &t3);\ + xor2(&b3, &t4);\ + xor2(&b7, &t5);\ + xor2(&b2, &t6);\ + xor2(&b5, &t7);\ + ;\ + rshift32_littleendian(&t0, 8);\ + rshift32_littleendian(&t1, 8);\ + rshift32_littleendian(&t2, 8);\ + rshift32_littleendian(&t3, 8);\ + rshift32_littleendian(&t4, 8);\ + rshift32_littleendian(&t5, 8);\ + rshift32_littleendian(&t6, 8);\ + rshift32_littleendian(&t7, 8);\ + ;\ + xor2(&b0, &t0);\ + xor2(&b1, &t1);\ + xor2(&b4, &t2);\ + xor2(&b6, &t3);\ + xor2(&b3, &t4);\ + xor2(&b7, &t5);\ + xor2(&b2, &t6);\ + xor2(&b5, &t7);\ + ;\ + *(int128 *)(bskey + i*128 + 0) = b0;\ + *(int128 *)(bskey + i*128 + 16) = b1;\ + *(int128 *)(bskey + i*128 + 32) = b4;\ + *(int128 *)(bskey + i*128 + 48) = b6;\ + *(int128 *)(bskey + i*128 + 64) = b3;\ + *(int128 *)(bskey + i*128 + 80) = b7;\ + *(int128 *)(bskey + i*128 + 96) = b2;\ + *(int128 *)(bskey + i*128 + 112) = b5;\ + +/* Macros used in multiple contexts */ + +#define bitslicekey0(key, bskey) \ + xmm0 = *(const int128 *) (key + 0);\ + shufb(&xmm0, M0);\ + copy2(&xmm1, &xmm0);\ + copy2(&xmm2, &xmm0);\ + copy2(&xmm3, &xmm0);\ + copy2(&xmm4, &xmm0);\ + copy2(&xmm5, &xmm0);\ + copy2(&xmm6, &xmm0);\ + copy2(&xmm7, &xmm0);\ + ;\ + bitslice(xmm7, xmm6, xmm5, xmm4, xmm3, xmm2, xmm1, xmm0, t);\ + ;\ + *(int128 *) (bskey + 0) = xmm0;\ + *(int128 *) (bskey + 16) = xmm1;\ + *(int128 *) (bskey + 32) = xmm2;\ + *(int128 *) (bskey + 48) = xmm3;\ + *(int128 *) (bskey + 64) = xmm4;\ + *(int128 *) (bskey + 80) = xmm5;\ + *(int128 *) (bskey + 96) = xmm6;\ + *(int128 *) (bskey + 112) = xmm7;\ + + +#define bitslicekey10(key, bskey) \ + xmm0 = *(int128 *) (key + 0);\ + copy2(xmm1, xmm0);\ + copy2(xmm2, xmm0);\ + copy2(xmm3, xmm0);\ + copy2(xmm4, xmm0);\ + copy2(xmm5, xmm0);\ + copy2(xmm6, xmm0);\ + copy2(xmm7, xmm0);\ + ;\ + bitslice(xmm7, xmm6, xmm5, xmm4, xmm3, xmm2, xmm1, xmm0, t);\ + ;\ + toggle(&xmm6);\ + toggle(&xmm5);\ + toggle(&xmm1);\ + toggle(&xmm0);\ + ;\ + *(int128 *) (bskey + 0 + 1280) = xmm0;\ + *(int128 *) (bskey + 16 + 1280) = xmm1;\ + *(int128 *) (bskey + 32 + 1280) = xmm2;\ + *(int128 *) (bskey + 48 + 1280) = xmm3;\ + *(int128 *) (bskey + 64 + 1280) = xmm4;\ + *(int128 *) (bskey + 80 + 1280) = xmm5;\ + *(int128 *) (bskey + 96 + 1280) = xmm6;\ + *(int128 *) (bskey + 112 + 1280) = xmm7;\ + + +#define bitslicekey(i,key,bskey) \ + xmm0 = *(int128 *) (key + 0);\ + shufb(&xmm0, M0);\ + copy2(&xmm1, &xmm0);\ + copy2(&xmm2, &xmm0);\ + copy2(&xmm3, &xmm0);\ + copy2(&xmm4, &xmm0);\ + copy2(&xmm5, &xmm0);\ + copy2(&xmm6, &xmm0);\ + copy2(&xmm7, &xmm0);\ + ;\ + bitslice(xmm7, xmm6, xmm5, xmm4, xmm3, xmm2, xmm1, xmm0, t);\ + ;\ + toggle(&xmm6);\ + toggle(&xmm5);\ + toggle(&xmm1);\ + toggle(&xmm0);\ + ;\ + *(int128 *) (bskey + 0 + 128*i) = xmm0;\ + *(int128 *) (bskey + 16 + 128*i) = xmm1;\ + *(int128 *) (bskey + 32 + 128*i) = xmm2;\ + *(int128 *) (bskey + 48 + 128*i) = xmm3;\ + *(int128 *) (bskey + 64 + 128*i) = xmm4;\ + *(int128 *) (bskey + 80 + 128*i) = xmm5;\ + *(int128 *) (bskey + 96 + 128*i) = xmm6;\ + *(int128 *) (bskey + 112 + 128*i) = xmm7;\ + + +#define bitslice(x0, x1, x2, x3, x4, x5, x6, x7, t) \ + swapmove(x0, x1, 1, BS0, t);\ + swapmove(x2, x3, 1, BS0, t);\ + swapmove(x4, x5, 1, BS0, t);\ + swapmove(x6, x7, 1, BS0, t);\ + ;\ + swapmove(x0, x2, 2, BS1, t);\ + swapmove(x1, x3, 2, BS1, t);\ + swapmove(x4, x6, 2, BS1, t);\ + swapmove(x5, x7, 2, BS1, t);\ + ;\ + swapmove(x0, x4, 4, BS2, t);\ + swapmove(x1, x5, 4, BS2, t);\ + swapmove(x2, x6, 4, BS2, t);\ + swapmove(x3, x7, 4, BS2, t);\ + + +#define swapmove(a, b, n, m, t) \ + copy2(&t, &b);\ + rshift64_littleendian(&t, n);\ + xor2(&t, &a);\ + and2(&t, &m);\ + xor2(&a, &t);\ + lshift64_littleendian(&t, n);\ + xor2(&b, &t); + +#define rotbyte(x) \ + shufb(x, ROTB) /* TODO: Make faster */ + + +/* Macros used for encryption (and decryption) */ + +#define shiftrows(x0, x1, x2, x3, x4, x5, x6, x7, i, M, bskey) \ + xor2(&x0, (const int128 *)(bskey + 128*(i-1) + 0));\ + shufb(&x0, M);\ + xor2(&x1, (const int128 *)(bskey + 128*(i-1) + 16));\ + shufb(&x1, M);\ + xor2(&x2, (const int128 *)(bskey + 128*(i-1) + 32));\ + shufb(&x2, M);\ + xor2(&x3, (const int128 *)(bskey + 128*(i-1) + 48));\ + shufb(&x3, M);\ + xor2(&x4, (const int128 *)(bskey + 128*(i-1) + 64));\ + shufb(&x4, M);\ + xor2(&x5, (const int128 *)(bskey + 128*(i-1) + 80));\ + shufb(&x5, M);\ + xor2(&x6, (const int128 *)(bskey + 128*(i-1) + 96));\ + shufb(&x6, M);\ + xor2(&x7, (const int128 *)(bskey + 128*(i-1) + 112));\ + shufb(&x7, M);\ + + +#define mixcolumns(x0, x1, x2, x3, x4, x5, x6, x7, t0, t1, t2, t3, t4, t5, t6, t7) \ + shufd(&t0, &x0, 0x93);\ + shufd(&t1, &x1, 0x93);\ + shufd(&t2, &x2, 0x93);\ + shufd(&t3, &x3, 0x93);\ + shufd(&t4, &x4, 0x93);\ + shufd(&t5, &x5, 0x93);\ + shufd(&t6, &x6, 0x93);\ + shufd(&t7, &x7, 0x93);\ + ;\ + xor2(&x0, &t0);\ + xor2(&x1, &t1);\ + xor2(&x2, &t2);\ + xor2(&x3, &t3);\ + xor2(&x4, &t4);\ + xor2(&x5, &t5);\ + xor2(&x6, &t6);\ + xor2(&x7, &t7);\ + ;\ + xor2(&t0, &x7);\ + xor2(&t1, &x0);\ + xor2(&t2, &x1);\ + xor2(&t1, &x7);\ + xor2(&t3, &x2);\ + xor2(&t4, &x3);\ + xor2(&t5, &x4);\ + xor2(&t3, &x7);\ + xor2(&t6, &x5);\ + xor2(&t7, &x6);\ + xor2(&t4, &x7);\ + ;\ + shufd(&x0, &x0, 0x4e);\ + shufd(&x1, &x1, 0x4e);\ + shufd(&x2, &x2, 0x4e);\ + shufd(&x3, &x3, 0x4e);\ + shufd(&x4, &x4, 0x4e);\ + shufd(&x5, &x5, 0x4e);\ + shufd(&x6, &x6, 0x4e);\ + shufd(&x7, &x7, 0x4e);\ + ;\ + xor2(&t0, &x0);\ + xor2(&t1, &x1);\ + xor2(&t2, &x2);\ + xor2(&t3, &x3);\ + xor2(&t4, &x4);\ + xor2(&t5, &x5);\ + xor2(&t6, &x6);\ + xor2(&t7, &x7);\ + + +#define aesround(i, b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, t4, t5, t6, t7, bskey) \ + shiftrows(b0, b1, b2, b3, b4, b5, b6, b7, i, SR, bskey);\ + sbox(b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, t4, t5, t6, t7);\ + mixcolumns(b0, b1, b4, b6, b3, b7, b2, b5, t0, t1, t2, t3, t4, t5, t6, t7);\ + + +#define lastround(b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, t4, t5, t6, t7, bskey) \ + shiftrows(b0, b1, b2, b3, b4, b5, b6, b7, 10, SRM0, bskey);\ + sbox(b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, t4, t5, t6, t7);\ + xor2(&b0,(const int128 *)(bskey + 128*10));\ + xor2(&b1,(const int128 *)(bskey + 128*10+16));\ + xor2(&b4,(const int128 *)(bskey + 128*10+32));\ + xor2(&b6,(const int128 *)(bskey + 128*10+48));\ + xor2(&b3,(const int128 *)(bskey + 128*10+64));\ + xor2(&b7,(const int128 *)(bskey + 128*10+80));\ + xor2(&b2,(const int128 *)(bskey + 128*10+96));\ + xor2(&b5,(const int128 *)(bskey + 128*10+112));\ + + +#define sbox(b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, s0, s1, s2, s3) \ + InBasisChange(b0, b1, b2, b3, b4, b5, b6, b7); \ + Inv_GF256(b6, b5, b0, b3, b7, b1, b4, b2, t0, t1, t2, t3, s0, s1, s2, s3); \ + OutBasisChange(b7, b1, b4, b2, b6, b5, b0, b3); \ + + +#define InBasisChange(b0, b1, b2, b3, b4, b5, b6, b7) \ + xor2(&b5, &b6);\ + xor2(&b2, &b1);\ + xor2(&b5, &b0);\ + xor2(&b6, &b2);\ + xor2(&b3, &b0);\ + ;\ + xor2(&b6, &b3);\ + xor2(&b3, &b7);\ + xor2(&b3, &b4);\ + xor2(&b7, &b5);\ + xor2(&b3, &b1);\ + ;\ + xor2(&b4, &b5);\ + xor2(&b2, &b7);\ + xor2(&b1, &b5);\ + +#define OutBasisChange(b0, b1, b2, b3, b4, b5, b6, b7) \ + xor2(&b0, &b6);\ + xor2(&b1, &b4);\ + xor2(&b2, &b0);\ + xor2(&b4, &b6);\ + xor2(&b6, &b1);\ + ;\ + xor2(&b1, &b5);\ + xor2(&b5, &b3);\ + xor2(&b2, &b5);\ + xor2(&b3, &b7);\ + xor2(&b7, &b5);\ + ;\ + xor2(&b4, &b7);\ + +#define Mul_GF4(x0, x1, y0, y1, t0) \ + copy2(&t0, &y0);\ + xor2(&t0, &y1);\ + and2(&t0, &x0);\ + xor2(&x0, &x1);\ + and2(&x0, &y1);\ + and2(&x1, &y0);\ + xor2(&x0, &x1);\ + xor2(&x1, &t0);\ + +#define Mul_GF4_N(x0, x1, y0, y1, t0) \ + copy2(&t0, &y0);\ + xor2(&t0, &y1);\ + and2(&t0, &x0);\ + xor2(&x0, &x1);\ + and2(&x0, &y1);\ + and2(&x1, &y0);\ + xor2(&x1, &x0);\ + xor2(&x0, &t0);\ + +#define Mul_GF4_2(x0, x1, x2, x3, y0, y1, t0, t1) \ + copy2(&t0, = y0);\ + xor2(&t0, &y1);\ + copy2(&t1, &t0);\ + and2(&t0, &x0);\ + and2(&t1, &x2);\ + xor2(&x0, &x1);\ + xor2(&x2, &x3);\ + and2(&x0, &y1);\ + and2(&x2, &y1);\ + and2(&x1, &y0);\ + and2(&x3, &y0);\ + xor2(&x0, &x1);\ + xor2(&x2, &x3);\ + xor2(&x1, &t0);\ + xor2(&x3, &t1);\ + +#define Mul_GF16(x0, x1, x2, x3, y0, y1, y2, y3, t0, t1, t2, t3) \ + copy2(&t0, &x0);\ + copy2(&t1, &x1);\ + Mul_GF4(x0, x1, y0, y1, t2);\ + xor2(&t0, &x2);\ + xor2(&t1, &x3);\ + xor2(&y0, &y2);\ + xor2(&y1, &y3);\ + Mul_GF4_N(t0, t1, y0, y1, t2);\ + Mul_GF4(x2, x3, y2, y3, t3);\ + ;\ + xor2(&x0, &t0);\ + xor2(&x2, &t0);\ + xor2(&x1, &t1);\ + xor2(&x3, &t1);\ + +#define Mul_GF16_2(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, t0, t1, t2, t3) \ + copy2(&t0, &x0);\ + copy2(&t1, &x1);\ + Mul_GF4(x0, x1, y0, y1, t2);\ + xor2(&t0, &x2);\ + xor2(&t1, &x3);\ + xor2(&y0, &y2);\ + xor2(&y1, &y3);\ + Mul_GF4_N(t0, t1, y0, y1, t3);\ + Mul_GF4(x2, x3, y2, y3, t2);\ + ;\ + xor2(&x0, &t0);\ + xor2(&x2, &t0);\ + xor2(&x1, &t1);\ + xor2(&x3, &t1);\ + ;\ + copy2(&t0, &x4);\ + copy2(&t1, &x5);\ + xor2(&t0, &x6);\ + xor2(&t1, &x7);\ + Mul_GF4_N(t0, t1, y0, y1, t3);\ + Mul_GF4(x6, x7, y2, y3, t2);\ + xor2(&y0, &y2);\ + xor2(&y1, &y3);\ + Mul_GF4(x4, x5, y0, y1, t3);\ + ;\ + xor2(&x4, &t0);\ + xor2(&x6, &t0);\ + xor2(&x5, &t1);\ + xor2(&x7, &t1);\ + +#define Inv_GF16(x0, x1, x2, x3, t0, t1, t2, t3) \ + copy2(&t0, &x1);\ + copy2(&t1, &x0);\ + and2(&t0, &x3);\ + or2(&t1, &x2);\ + copy2(&t2, &x1);\ + copy2(&t3, &x0);\ + or2(&t2, &x2);\ + or2(&t3, &x3);\ + xor2(&t2, &t3);\ + ;\ + xor2(&t0, &t2);\ + xor2(&t1, &t2);\ + ;\ + Mul_GF4_2(x0, x1, x2, x3, t1, t0, t2, t3);\ + + +#define Inv_GF256(x0, x1, x2, x3, x4, x5, x6, x7, t0, t1, t2, t3, s0, s1, s2, s3) \ + copy2(&t3, &x4);\ + copy2(&t2, &x5);\ + copy2(&t1, &x1);\ + copy2(&s1, &x7);\ + copy2(&s0, &x0);\ + ;\ + xor2(&t3, &x6);\ + xor2(&t2, &x7);\ + xor2(&t1, &x3);\ + xor2(&s1, &x6);\ + xor2(&s0, &x2);\ + ;\ + copy2(&s2, &t3);\ + copy2(&t0, &t2);\ + copy2(&s3, &t3);\ + ;\ + or2(&t2, &t1);\ + or2(&t3, &s0);\ + xor2(&s3, &t0);\ + and2(&s2, &s0);\ + and2(&t0, &t1);\ + xor2(&s0, &t1);\ + and2(&s3, &s0);\ + copy2(&s0, &x3);\ + xor2(&s0, &x2);\ + and2(&s1, &s0);\ + xor2(&t3, &s1);\ + xor2(&t2, &s1);\ + copy2(&s1, &x4);\ + xor2(&s1, &x5);\ + copy2(&s0, &x1);\ + copy2(&t1, &s1);\ + xor2(&s0, &x0);\ + or2(&t1, &s0);\ + and2(&s1, &s0);\ + xor2(&t0, &s1);\ + xor2(&t3, &s3);\ + xor2(&t2, &s2);\ + xor2(&t1, &s3);\ + xor2(&t0, &s2);\ + xor2(&t1, &s2);\ + copy2(&s0, &x7);\ + copy2(&s1, &x6);\ + copy2(&s2, &x5);\ + copy2(&s3, &x4);\ + and2(&s0, &x3);\ + and2(&s1, &x2);\ + and2(&s2, &x1);\ + or2(&s3, &x0);\ + xor2(&t3, &s0);\ + xor2(&t2, &s1);\ + xor2(&t1, &s2);\ + xor2(&t0, &s3);\ + ;\ + copy2(&s0, &t3);\ + xor2(&s0, &t2);\ + and2(&t3, &t1);\ + copy2(&s2, &t0);\ + xor2(&s2, &t3);\ + copy2(&s3, &s0);\ + and2(&s3, &s2);\ + xor2(&s3, &t2);\ + copy2(&s1, &t1);\ + xor2(&s1, &t0);\ + xor2(&t3, &t2);\ + and2(&s1, &t3);\ + xor2(&s1, &t0);\ + xor2(&t1, &s1);\ + copy2(&t2, &s2);\ + xor2(&t2, &s1);\ + and2(&t2, &t0);\ + xor2(&t1, &t2);\ + xor2(&s2, &t2);\ + and2(&s2, &s3);\ + xor2(&s2, &s0);\ + ;\ + Mul_GF16_2(x0, x1, x2, x3, x4, x5, x6, x7, s3, s2, s1, t1, s0, t0, t2, t3);\ + +#endif diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/common_aes128ctr.c b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/common_aes128ctr.c new file mode 100644 index 00000000..14a28cc6 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/common_aes128ctr.c @@ -0,0 +1,64 @@ +#include "common.h" + +uint32 load32_bigendian(const unsigned char *x) +{ + return + (uint32) (x[3]) \ + | (((uint32) (x[2])) << 8) \ + | (((uint32) (x[1])) << 16) \ + | (((uint32) (x[0])) << 24) + ; +} + +void store32_bigendian(unsigned char *x,uint32 u) +{ + x[3] = u; u >>= 8; + x[2] = u; u >>= 8; + x[1] = u; u >>= 8; + x[0] = u; +} + +uint32 load32_littleendian(const unsigned char *x) +{ + return + (uint32) (x[0]) \ + | (((uint32) (x[1])) << 8) \ + | (((uint32) (x[2])) << 16) \ + | (((uint32) (x[3])) << 24) + ; +} + +void store32_littleendian(unsigned char *x,uint32 u) +{ + x[0] = u; u >>= 8; + x[1] = u; u >>= 8; + x[2] = u; u >>= 8; + x[3] = u; +} + + +uint64 load64_littleendian(const unsigned char *x) +{ + return + (uint64) (x[0]) \ + | (((uint64) (x[1])) << 8) \ + | (((uint64) (x[2])) << 16) \ + | (((uint64) (x[3])) << 24) + | (((uint64) (x[4])) << 32) + | (((uint64) (x[5])) << 40) + | (((uint64) (x[6])) << 48) + | (((uint64) (x[7])) << 56) + ; +} + +void store64_littleendian(unsigned char *x,uint64 u) +{ + x[0] = u; u >>= 8; + x[1] = u; u >>= 8; + x[2] = u; u >>= 8; + x[3] = u; u >>= 8; + x[4] = u; u >>= 8; + x[5] = u; u >>= 8; + x[6] = u; u >>= 8; + x[7] = u; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/consts.h b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/consts.h new file mode 100644 index 00000000..4c50360b --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/consts.h @@ -0,0 +1,28 @@ +#ifndef CONSTS_H +#define CONSTS_H + +#include "int128.h" + +#define ROTB crypto_stream_aes128ctr_portable_ROTB +#define M0 crypto_stream_aes128ctr_portable_M0 +#define EXPB0 crypto_stream_aes128ctr_portable_EXPB0 +#define SWAP32 crypto_stream_aes128ctr_portable_SWAP32 +#define M0SWAP crypto_stream_aes128ctr_portable_M0SWAP +#define SR crypto_stream_aes128ctr_portable_SR +#define SRM0 crypto_stream_aes128ctr_portable_SRM0 +#define BS0 crypto_stream_aes128ctr_portable_BS0 +#define BS1 crypto_stream_aes128ctr_portable_BS1 +#define BS2 crypto_stream_aes128ctr_portable_BS2 + +extern const unsigned char ROTB[16]; +extern const unsigned char M0[16]; +extern const unsigned char EXPB0[16]; +extern const unsigned char SWAP32[16]; +extern const unsigned char M0SWAP[16]; +extern const unsigned char SR[16]; +extern const unsigned char SRM0[16]; +extern const int128 BS0; +extern const int128 BS1; +extern const int128 BS2; + +#endif diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/consts_aes128ctr.c b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/consts_aes128ctr.c new file mode 100644 index 00000000..72296c04 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/consts_aes128ctr.c @@ -0,0 +1,14 @@ +#include "consts.h" + +const unsigned char ROTB[16] = {0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08}; +const unsigned char M0[16] = {0x0f, 0x0b, 0x07, 0x03, 0x0e, 0x0a, 0x06, 0x02, 0x0d, 0x09, 0x05, 0x01, 0x0c, 0x08, 0x04, 0x00}; +const unsigned char EXPB0[16] = {0x03, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x0b, 0x0b, 0x0b, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f}; + +const unsigned char SWAP32[16] = {0x03, 0x02, 0x01, 0x00, 0x07, 0x06, 0x05, 0x04, 0x0b, 0x0a, 0x09, 0x08, 0x0f, 0x0e, 0x0d, 0x0c}; +const unsigned char M0SWAP[16] = {0x0c, 0x08, 0x04, 0x00, 0x0d, 0x09, 0x05, 0x01, 0x0e, 0x0a, 0x06, 0x02, 0x0f, 0x0b, 0x07, 0x03}; +const unsigned char SR[16] = {0x01, 0x02, 0x03, 0x00, 0x06, 0x07, 0x04, 0x05, 0x0b, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f}; +const unsigned char SRM0[16] = {0x0f, 0x0a, 0x05, 0x00, 0x0e, 0x09, 0x04, 0x03, 0x0d, 0x08, 0x07, 0x02, 0x0c, 0x0b, 0x06, 0x01}; + +const int128 BS0 = {0x5555555555555555ULL, 0x5555555555555555ULL}; +const int128 BS1 = {0x3333333333333333ULL, 0x3333333333333333ULL}; +const int128 BS2 = {0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL}; diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/int128.h b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/int128.h new file mode 100644 index 00000000..7099e5b1 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/int128.h @@ -0,0 +1,47 @@ +#ifndef INT128_H +#define INT128_H + +#include "common.h" + +typedef struct{ + unsigned long long a; + unsigned long long b; +} int128; + +#define xor2 crypto_stream_aes128ctr_portable_xor2 +void xor2(int128 *r, const int128 *x); + +#define and2 crypto_stream_aes128ctr_portable_and2 +void and2(int128 *r, const int128 *x); + +#define or2 crypto_stream_aes128ctr_portable_or2 +void or2(int128 *r, const int128 *x); + +#define copy2 crypto_stream_aes128ctr_portable_copy2 +void copy2(int128 *r, const int128 *x); + +#define shufb crypto_stream_aes128ctr_portable_shufb +void shufb(int128 *r, const unsigned char *l); + +#define shufd crypto_stream_aes128ctr_portable_shufd +void shufd(int128 *r, const int128 *x, const unsigned int c); + +#define rshift32_littleendian crypto_stream_aes128ctr_portable_rshift32_littleendian +void rshift32_littleendian(int128 *r, const unsigned int n); + +#define rshift64_littleendian crypto_stream_aes128ctr_portable_rshift64_littleendian +void rshift64_littleendian(int128 *r, const unsigned int n); + +#define lshift64_littleendian crypto_stream_aes128ctr_portable_lshift64_littleendian +void lshift64_littleendian(int128 *r, const unsigned int n); + +#define toggle crypto_stream_aes128ctr_portable_toggle +void toggle(int128 *r); + +#define xor_rcon crypto_stream_aes128ctr_portable_xor_rcon +void xor_rcon(int128 *r); + +#define add_uint32_big crypto_stream_aes128ctr_portable_add_uint32_big +void add_uint32_big(int128 *r, uint32 x); + +#endif diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/int128_aes128ctr.c b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/int128_aes128ctr.c new file mode 100644 index 00000000..5433bd60 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/int128_aes128ctr.c @@ -0,0 +1,128 @@ +#include "int128.h" +#include "common.h" + +void xor2(int128 *r, const int128 *x) +{ + r->a ^= x->a; + r->b ^= x->b; +} + +void and2(int128 *r, const int128 *x) +{ + r->a &= x->a; + r->b &= x->b; +} + +void or2(int128 *r, const int128 *x) +{ + r->a |= x->a; + r->b |= x->b; +} + +void copy2(int128 *r, const int128 *x) +{ + r->a = x->a; + r->b = x->b; +} + +void shufb(int128 *r, const unsigned char *l) +{ + int128 t; + copy2(&t,r); + unsigned char *cr = (unsigned char *)r; + unsigned char *ct = (unsigned char *)&t; + cr[0] = ct[l[0]]; + cr[1] = ct[l[1]]; + cr[2] = ct[l[2]]; + cr[3] = ct[l[3]]; + cr[4] = ct[l[4]]; + cr[5] = ct[l[5]]; + cr[6] = ct[l[6]]; + cr[7] = ct[l[7]]; + cr[8] = ct[l[8]]; + cr[9] = ct[l[9]]; + cr[10] = ct[l[10]]; + cr[11] = ct[l[11]]; + cr[12] = ct[l[12]]; + cr[13] = ct[l[13]]; + cr[14] = ct[l[14]]; + cr[15] = ct[l[15]]; +} + +void shufd(int128 *r, const int128 *x, const unsigned int c) +{ + int128 t; + uint32 *tp = (uint32 *)&t; + const uint32 *xp = (const uint32 *)x; + tp[0] = xp[c&3]; + tp[1] = xp[(c>>2)&3]; + tp[2] = xp[(c>>4)&3]; + tp[3] = xp[(c>>6)&3]; + copy2(r,&t); +} + +void rshift32_littleendian(int128 *r, const unsigned int n) +{ + unsigned char *rp = (unsigned char *)r; + uint32 t; + t = load32_littleendian(rp); + t >>= n; + store32_littleendian(rp, t); + t = load32_littleendian(rp+4); + t >>= n; + store32_littleendian(rp+4, t); + t = load32_littleendian(rp+8); + t >>= n; + store32_littleendian(rp+8, t); + t = load32_littleendian(rp+12); + t >>= n; + store32_littleendian(rp+12, t); +} + +void rshift64_littleendian(int128 *r, const unsigned int n) +{ + unsigned char *rp = (unsigned char *)r; + uint64 t; + t = load64_littleendian(rp); + t >>= n; + store64_littleendian(rp, t); + t = load64_littleendian(rp+8); + t >>= n; + store64_littleendian(rp+8, t); +} + +void lshift64_littleendian(int128 *r, const unsigned int n) +{ + unsigned char *rp = (unsigned char *)r; + uint64 t; + t = load64_littleendian(rp); + t <<= n; + store64_littleendian(rp, t); + t = load64_littleendian(rp+8); + t <<= n; + store64_littleendian(rp+8, t); +} + +void toggle(int128 *r) +{ + r->a ^= 0xffffffffffffffffULL; + r->b ^= 0xffffffffffffffffULL; +} + +void xor_rcon(int128 *r) +{ + unsigned char *rp = (unsigned char *)r; + uint32 t; + t = load32_littleendian(rp+12); + t ^= 0xffffffff; + store32_littleendian(rp+12, t); +} + +void add_uint32_big(int128 *r, uint32 x) +{ + unsigned char *rp = (unsigned char *)r; + uint32 t; + t = load32_littleendian(rp+12); + t += x; + store32_littleendian(rp+12, t); +} diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/stream_aes128ctr.c b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/stream_aes128ctr.c new file mode 100644 index 00000000..8f4ec72a --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/stream_aes128ctr.c @@ -0,0 +1,28 @@ +#include "api.h" + +int crypto_stream( + unsigned char *out, + unsigned long long outlen, + const unsigned char *n, + const unsigned char *k + ) +{ + unsigned char d[crypto_stream_BEFORENMBYTES]; + crypto_stream_beforenm(d, k); + crypto_stream_afternm(out, outlen, n, d); + return 0; +} + +int crypto_stream_xor( + unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *n, + const unsigned char *k + ) +{ + unsigned char d[crypto_stream_BEFORENMBYTES]; + crypto_stream_beforenm(d, k); + crypto_stream_xor_afternm(out, in, inlen, n, d); + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/types.h b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/types.h new file mode 100644 index 00000000..6aa502fc --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/types.h @@ -0,0 +1,10 @@ +#ifndef TYPES_H +#define TYPES_H + +#include "crypto_uint32.h" +typedef crypto_uint32 uint32; + +#include "crypto_uint64.h" +typedef crypto_uint64 uint64; + +#endif diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c new file mode 100644 index 00000000..def7011a --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c @@ -0,0 +1,180 @@ +/* Author: Peter Schwabe, ported from an assembly implementation by Emilia Käsper + * Date: 2009-03-19 + * Public domain */ + +#include <stdio.h> +#include "api.h" +#include "int128.h" +#include "common.h" +#include "consts.h" + +int crypto_stream_xor_afternm(unsigned char *outp, const unsigned char *inp, unsigned long long len, const unsigned char *noncep, const unsigned char *c) +{ + + int128 xmm0; + int128 xmm1; + int128 xmm2; + int128 xmm3; + int128 xmm4; + int128 xmm5; + int128 xmm6; + int128 xmm7; + + int128 xmm8; + int128 xmm9; + int128 xmm10; + int128 xmm11; + int128 xmm12; + int128 xmm13; + int128 xmm14; + int128 xmm15; + + int128 nonce_stack; + unsigned long long lensav; + unsigned char bl[128]; + unsigned char *blp; + unsigned char b; + + uint32 tmp; + + /* Copy nonce on the stack */ + copy2(&nonce_stack, (const int128 *) (noncep + 0)); + unsigned char *np = (unsigned char *)&nonce_stack; + + enc_block: + + xmm0 = *(int128 *) (np + 0); + copy2(&xmm1, &xmm0); + shufb(&xmm1, SWAP32); + copy2(&xmm2, &xmm1); + copy2(&xmm3, &xmm1); + copy2(&xmm4, &xmm1); + copy2(&xmm5, &xmm1); + copy2(&xmm6, &xmm1); + copy2(&xmm7, &xmm1); + + add_uint32_big(&xmm1, 1); + add_uint32_big(&xmm2, 2); + add_uint32_big(&xmm3, 3); + add_uint32_big(&xmm4, 4); + add_uint32_big(&xmm5, 5); + add_uint32_big(&xmm6, 6); + add_uint32_big(&xmm7, 7); + + shufb(&xmm0, M0); + shufb(&xmm1, M0SWAP); + shufb(&xmm2, M0SWAP); + shufb(&xmm3, M0SWAP); + shufb(&xmm4, M0SWAP); + shufb(&xmm5, M0SWAP); + shufb(&xmm6, M0SWAP); + shufb(&xmm7, M0SWAP); + + bitslice(xmm7, xmm6, xmm5, xmm4, xmm3, xmm2, xmm1, xmm0, xmm8) + + aesround( 1, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c) + aesround( 2, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c) + aesround( 3, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c) + aesround( 4, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c) + aesround( 5, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c) + aesround( 6, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c) + aesround( 7, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c) + aesround( 8, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c) + aesround( 9, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,c) + lastround(xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,c) + + bitslice(xmm13, xmm10, xmm15, xmm11, xmm14, xmm12, xmm9, xmm8, xmm0) + + if(len < 128) goto partial; + if(len == 128) goto full; + + tmp = load32_bigendian(np + 12); + tmp += 8; + store32_bigendian(np + 12, tmp); + + xor2(&xmm8, (const int128 *)(inp + 0)); + xor2(&xmm9, (const int128 *)(inp + 16)); + xor2(&xmm12, (const int128 *)(inp + 32)); + xor2(&xmm14, (const int128 *)(inp + 48)); + xor2(&xmm11, (const int128 *)(inp + 64)); + xor2(&xmm15, (const int128 *)(inp + 80)); + xor2(&xmm10, (const int128 *)(inp + 96)); + xor2(&xmm13, (const int128 *)(inp + 112)); + + *(int128 *) (outp + 0) = xmm8; + *(int128 *) (outp + 16) = xmm9; + *(int128 *) (outp + 32) = xmm12; + *(int128 *) (outp + 48) = xmm14; + *(int128 *) (outp + 64) = xmm11; + *(int128 *) (outp + 80) = xmm15; + *(int128 *) (outp + 96) = xmm10; + *(int128 *) (outp + 112) = xmm13; + + len -= 128; + inp += 128; + outp += 128; + + goto enc_block; + + partial: + + lensav = len; + len >>= 4; + + tmp = load32_bigendian(np + 12); + tmp += len; + store32_bigendian(np + 12, tmp); + + blp = bl; + *(int128 *)(blp + 0) = xmm8; + *(int128 *)(blp + 16) = xmm9; + *(int128 *)(blp + 32) = xmm12; + *(int128 *)(blp + 48) = xmm14; + *(int128 *)(blp + 64) = xmm11; + *(int128 *)(blp + 80) = xmm15; + *(int128 *)(blp + 96) = xmm10; + *(int128 *)(blp + 112) = xmm13; + + bytes: + + if(lensav == 0) goto end; + + b = blp[0]; /* clang false positive */ + b ^= *(const unsigned char *)(inp + 0); + *(unsigned char *)(outp + 0) = b; + + blp += 1; + inp +=1; + outp +=1; + lensav -= 1; + + goto bytes; + + full: + + tmp = load32_bigendian(np + 12); + tmp += 8; + store32_bigendian(np + 12, tmp); + + xor2(&xmm8, (const int128 *)(inp + 0)); + xor2(&xmm9, (const int128 *)(inp + 16)); + xor2(&xmm12, (const int128 *)(inp + 32)); + xor2(&xmm14, (const int128 *)(inp + 48)); + xor2(&xmm11, (const int128 *)(inp + 64)); + xor2(&xmm15, (const int128 *)(inp + 80)); + xor2(&xmm10, (const int128 *)(inp + 96)); + xor2(&xmm13, (const int128 *)(inp + 112)); + + *(int128 *) (outp + 0) = xmm8; + *(int128 *) (outp + 16) = xmm9; + *(int128 *) (outp + 32) = xmm12; + *(int128 *) (outp + 48) = xmm14; + *(int128 *) (outp + 64) = xmm11; + *(int128 *) (outp + 80) = xmm15; + *(int128 *) (outp + 96) = xmm10; + *(int128 *) (outp + 112) = xmm13; + + end: + return 0; + +} diff --git a/src/libsodium/src/libsodium/crypto_stream/aes128ctr/stream_aes128ctr_api.c b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/stream_aes128ctr_api.c new file mode 100644 index 00000000..350494ef --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes128ctr/stream_aes128ctr_api.c @@ -0,0 +1,21 @@ +#include "crypto_stream_aes128ctr.h" + +size_t +crypto_stream_aes128ctr_keybytes(void) { + return crypto_stream_aes128ctr_KEYBYTES; +} + +size_t +crypto_stream_aes128ctr_noncebytes(void) { + return crypto_stream_aes128ctr_NONCEBYTES; +} + +size_t +crypto_stream_aes128ctr_beforenmbytes(void) { + return crypto_stream_aes128ctr_BEFORENMBYTES; +} + +const char * +crypto_stream_aes128ctr_primitive(void) { + return "aes128ctr"; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes-table.h b/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes-table.h new file mode 100644 index 00000000..827e9330 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes-table.h @@ -0,0 +1,309 @@ +static const unsigned char Rcon[31] = +{ + 0x0, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xc0, + 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, + 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, + 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91 +}; + + +static const unsigned char Sbox[256] = { + 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, + 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, + 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, + 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, + 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, + 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, + 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, + 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, + 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, + 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, + 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, + 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, + 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, + 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, + 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, + 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, + 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, + 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, + 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, + 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, + 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, + 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, + 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, + 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, + 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, + 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, + 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, + 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, + 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, + 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, + 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, + 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16}; + +unsigned int T0[256] = { +0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, +0xdf2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591, +0x50303060, 0x3010102, 0xa96767ce, 0x7d2b2b56, +0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec, +0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa, +0x15fafaef, 0xeb5959b2, 0xc947478e, 0xbf0f0fb, +0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, +0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b, +0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c, +0x5a36366c, 0x413f3f7e, 0x2f7f7f5, 0x4fcccc83, +0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x8f1f1f9, +0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a, +0xc040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, +0x28181830, 0xa1969637, 0xf05050a, 0xb59a9a2f, +0x907070e, 0x36121224, 0x9b80801b, 0x3de2e2df, +0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea, +0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34, +0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b, +0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, +0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413, +0xf55353a6, 0x68d1d1b9, 0x0, 0x2cededc1, +0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6, +0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972, +0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85, +0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, +0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511, +0xcf45458a, 0x10f9f9e9, 0x6020204, 0x817f7ffe, +0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b, +0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05, +0xad92923f, 0xbc9d9d21, 0x48383870, 0x4f5f5f1, +0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, +0x30101020, 0x1affffe5, 0xef3f3fd, 0x6dd2d2bf, +0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3, +0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e, +0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a, +0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6, +0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3, +0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b, +0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428, +0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad, +0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14, +0xdb494992, 0xa06060c, 0x6c242448, 0xe45c5cb8, +0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, +0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2, +0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda, +0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949, +0xb46c6cd8, 0xfa5656ac, 0x7f4f4f3, 0x25eaeacf, +0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810, +0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, +0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697, +0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e, +0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f, +0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc, +0xd8484890, 0x5030306, 0x1f6f6f7, 0x120e0e1c, +0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, +0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27, +0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122, +0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433, +0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9, +0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5, +0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, +0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0, +0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e, +0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c}; + + +unsigned int T1[256] = { +0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d, +0xf2f2ff0d, 0x6b6bd6bd, 0x6f6fdeb1, 0xc5c59154, +0x30306050, 0x1010203, 0x6767cea9, 0x2b2b567d, +0xfefee719, 0xd7d7b562, 0xabab4de6, 0x7676ec9a, +0xcaca8f45, 0x82821f9d, 0xc9c98940, 0x7d7dfa87, +0xfafaef15, 0x5959b2eb, 0x47478ec9, 0xf0f0fb0b, +0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea, +0x9c9c23bf, 0xa4a453f7, 0x7272e496, 0xc0c09b5b, +0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a, +0x36366c5a, 0x3f3f7e41, 0xf7f7f502, 0xcccc834f, +0x3434685c, 0xa5a551f4, 0xe5e5d134, 0xf1f1f908, +0x7171e293, 0xd8d8ab73, 0x31316253, 0x15152a3f, +0x404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e, +0x18183028, 0x969637a1, 0x5050a0f, 0x9a9a2fb5, +0x7070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d, +0xebebcd26, 0x27274e69, 0xb2b27fcd, 0x7575ea9f, +0x909121b, 0x83831d9e, 0x2c2c5874, 0x1a1a342e, +0x1b1b362d, 0x6e6edcb2, 0x5a5ab4ee, 0xa0a05bfb, +0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce, +0x2929527b, 0xe3e3dd3e, 0x2f2f5e71, 0x84841397, +0x5353a6f5, 0xd1d1b968, 0x0, 0xededc12c, +0x20204060, 0xfcfce31f, 0xb1b179c8, 0x5b5bb6ed, +0x6a6ad4be, 0xcbcb8d46, 0xbebe67d9, 0x3939724b, +0x4a4a94de, 0x4c4c98d4, 0x5858b0e8, 0xcfcf854a, +0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16, +0x434386c5, 0x4d4d9ad7, 0x33336655, 0x85851194, +0x45458acf, 0xf9f9e910, 0x2020406, 0x7f7ffe81, +0x5050a0f0, 0x3c3c7844, 0x9f9f25ba, 0xa8a84be3, +0x5151a2f3, 0xa3a35dfe, 0x404080c0, 0x8f8f058a, +0x92923fad, 0x9d9d21bc, 0x38387048, 0xf5f5f104, +0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263, +0x10102030, 0xffffe51a, 0xf3f3fd0e, 0xd2d2bf6d, +0xcdcd814c, 0xc0c1814, 0x13132635, 0xececc32f, +0x5f5fbee1, 0x979735a2, 0x444488cc, 0x17172e39, +0xc4c49357, 0xa7a755f2, 0x7e7efc82, 0x3d3d7a47, +0x6464c8ac, 0x5d5dbae7, 0x1919322b, 0x7373e695, +0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f, +0x22224466, 0x2a2a547e, 0x90903bab, 0x88880b83, +0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c, +0xdedea779, 0x5e5ebce2, 0xb0b161d, 0xdbdbad76, +0xe0e0db3b, 0x32326456, 0x3a3a744e, 0xa0a141e, +0x494992db, 0x6060c0a, 0x2424486c, 0x5c5cb8e4, +0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6, +0x919139a8, 0x959531a4, 0xe4e4d337, 0x7979f28b, +0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7, +0x8d8d018c, 0xd5d5b164, 0x4e4e9cd2, 0xa9a949e0, +0x6c6cd8b4, 0x5656acfa, 0xf4f4f307, 0xeaeacf25, +0x6565caaf, 0x7a7af48e, 0xaeae47e9, 0x8081018, +0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72, +0x1c1c3824, 0xa6a657f1, 0xb4b473c7, 0xc6c69751, +0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21, +0x4b4b96dd, 0xbdbd61dc, 0x8b8b0d86, 0x8a8a0f85, +0x7070e090, 0x3e3e7c42, 0xb5b571c4, 0x6666ccaa, +0x484890d8, 0x3030605, 0xf6f6f701, 0xe0e1c12, +0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0, +0x86861791, 0xc1c19958, 0x1d1d3a27, 0x9e9e27b9, +0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233, +0x6969d2bb, 0xd9d9a970, 0x8e8e0789, 0x949433a7, +0x9b9b2db6, 0x1e1e3c22, 0x87871592, 0xe9e9c920, +0xcece8749, 0x5555aaff, 0x28285078, 0xdfdfa57a, +0x8c8c038f, 0xa1a159f8, 0x89890980, 0xd0d1a17, +0xbfbf65da, 0xe6e6d731, 0x424284c6, 0x6868d0b8, +0x414182c3, 0x999929b0, 0x2d2d5a77, 0xf0f1e11, +0xb0b07bcb, 0x5454a8fc, 0xbbbb6dd6, 0x16162c3a}; + +unsigned int T2[256] = { +0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b, +0xf2ff0df2, 0x6bd6bd6b, 0x6fdeb16f, 0xc59154c5, +0x30605030, 0x1020301, 0x67cea967, 0x2b567d2b, +0xfee719fe, 0xd7b562d7, 0xab4de6ab, 0x76ec9a76, +0xca8f45ca, 0x821f9d82, 0xc98940c9, 0x7dfa877d, +0xfaef15fa, 0x59b2eb59, 0x478ec947, 0xf0fb0bf0, +0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf, +0x9c23bf9c, 0xa453f7a4, 0x72e49672, 0xc09b5bc0, +0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26, +0x366c5a36, 0x3f7e413f, 0xf7f502f7, 0xcc834fcc, +0x34685c34, 0xa551f4a5, 0xe5d134e5, 0xf1f908f1, +0x71e29371, 0xd8ab73d8, 0x31625331, 0x152a3f15, +0x4080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3, +0x18302818, 0x9637a196, 0x50a0f05, 0x9a2fb59a, +0x70e0907, 0x12243612, 0x801b9b80, 0xe2df3de2, +0xebcd26eb, 0x274e6927, 0xb27fcdb2, 0x75ea9f75, +0x9121b09, 0x831d9e83, 0x2c58742c, 0x1a342e1a, +0x1b362d1b, 0x6edcb26e, 0x5ab4ee5a, 0xa05bfba0, +0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3, +0x29527b29, 0xe3dd3ee3, 0x2f5e712f, 0x84139784, +0x53a6f553, 0xd1b968d1, 0x0, 0xedc12ced, +0x20406020, 0xfce31ffc, 0xb179c8b1, 0x5bb6ed5b, +0x6ad4be6a, 0xcb8d46cb, 0xbe67d9be, 0x39724b39, +0x4a94de4a, 0x4c98d44c, 0x58b0e858, 0xcf854acf, +0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb, +0x4386c543, 0x4d9ad74d, 0x33665533, 0x85119485, +0x458acf45, 0xf9e910f9, 0x2040602, 0x7ffe817f, +0x50a0f050, 0x3c78443c, 0x9f25ba9f, 0xa84be3a8, +0x51a2f351, 0xa35dfea3, 0x4080c040, 0x8f058a8f, +0x923fad92, 0x9d21bc9d, 0x38704838, 0xf5f104f5, +0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321, +0x10203010, 0xffe51aff, 0xf3fd0ef3, 0xd2bf6dd2, +0xcd814ccd, 0xc18140c, 0x13263513, 0xecc32fec, +0x5fbee15f, 0x9735a297, 0x4488cc44, 0x172e3917, +0xc49357c4, 0xa755f2a7, 0x7efc827e, 0x3d7a473d, +0x64c8ac64, 0x5dbae75d, 0x19322b19, 0x73e69573, +0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc, +0x22446622, 0x2a547e2a, 0x903bab90, 0x880b8388, +0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14, +0xdea779de, 0x5ebce25e, 0xb161d0b, 0xdbad76db, +0xe0db3be0, 0x32645632, 0x3a744e3a, 0xa141e0a, +0x4992db49, 0x60c0a06, 0x24486c24, 0x5cb8e45c, +0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662, +0x9139a891, 0x9531a495, 0xe4d337e4, 0x79f28b79, +0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d, +0x8d018c8d, 0xd5b164d5, 0x4e9cd24e, 0xa949e0a9, +0x6cd8b46c, 0x56acfa56, 0xf4f307f4, 0xeacf25ea, +0x65caaf65, 0x7af48e7a, 0xae47e9ae, 0x8101808, +0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e, +0x1c38241c, 0xa657f1a6, 0xb473c7b4, 0xc69751c6, +0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f, +0x4b96dd4b, 0xbd61dcbd, 0x8b0d868b, 0x8a0f858a, +0x70e09070, 0x3e7c423e, 0xb571c4b5, 0x66ccaa66, +0x4890d848, 0x3060503, 0xf6f701f6, 0xe1c120e, +0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9, +0x86179186, 0xc19958c1, 0x1d3a271d, 0x9e27b99e, +0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311, +0x69d2bb69, 0xd9a970d9, 0x8e07898e, 0x9433a794, +0x9b2db69b, 0x1e3c221e, 0x87159287, 0xe9c920e9, +0xce8749ce, 0x55aaff55, 0x28507828, 0xdfa57adf, +0x8c038f8c, 0xa159f8a1, 0x89098089, 0xd1a170d, +0xbf65dabf, 0xe6d731e6, 0x4284c642, 0x68d0b868, +0x4182c341, 0x9929b099, 0x2d5a772d, 0xf1e110f, +0xb07bcbb0, 0x54a8fc54, 0xbb6dd6bb, 0x162c3a16}; + +unsigned int T3[256] = { +0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b, +0xff0df2f2, 0xd6bd6b6b, 0xdeb16f6f, 0x9154c5c5, +0x60503030, 0x2030101, 0xcea96767, 0x567d2b2b, +0xe719fefe, 0xb562d7d7, 0x4de6abab, 0xec9a7676, +0x8f45caca, 0x1f9d8282, 0x8940c9c9, 0xfa877d7d, +0xef15fafa, 0xb2eb5959, 0x8ec94747, 0xfb0bf0f0, +0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf, +0x23bf9c9c, 0x53f7a4a4, 0xe4967272, 0x9b5bc0c0, +0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626, +0x6c5a3636, 0x7e413f3f, 0xf502f7f7, 0x834fcccc, +0x685c3434, 0x51f4a5a5, 0xd134e5e5, 0xf908f1f1, +0xe2937171, 0xab73d8d8, 0x62533131, 0x2a3f1515, +0x80c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3, +0x30281818, 0x37a19696, 0xa0f0505, 0x2fb59a9a, +0xe090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2, +0xcd26ebeb, 0x4e692727, 0x7fcdb2b2, 0xea9f7575, +0x121b0909, 0x1d9e8383, 0x58742c2c, 0x342e1a1a, +0x362d1b1b, 0xdcb26e6e, 0xb4ee5a5a, 0x5bfba0a0, +0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3, +0x527b2929, 0xdd3ee3e3, 0x5e712f2f, 0x13978484, +0xa6f55353, 0xb968d1d1, 0x0, 0xc12ceded, +0x40602020, 0xe31ffcfc, 0x79c8b1b1, 0xb6ed5b5b, +0xd4be6a6a, 0x8d46cbcb, 0x67d9bebe, 0x724b3939, +0x94de4a4a, 0x98d44c4c, 0xb0e85858, 0x854acfcf, +0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb, +0x86c54343, 0x9ad74d4d, 0x66553333, 0x11948585, +0x8acf4545, 0xe910f9f9, 0x4060202, 0xfe817f7f, +0xa0f05050, 0x78443c3c, 0x25ba9f9f, 0x4be3a8a8, +0xa2f35151, 0x5dfea3a3, 0x80c04040, 0x58a8f8f, +0x3fad9292, 0x21bc9d9d, 0x70483838, 0xf104f5f5, +0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121, +0x20301010, 0xe51affff, 0xfd0ef3f3, 0xbf6dd2d2, +0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec, +0xbee15f5f, 0x35a29797, 0x88cc4444, 0x2e391717, +0x9357c4c4, 0x55f2a7a7, 0xfc827e7e, 0x7a473d3d, +0xc8ac6464, 0xbae75d5d, 0x322b1919, 0xe6957373, +0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc, +0x44662222, 0x547e2a2a, 0x3bab9090, 0xb838888, +0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414, +0xa779dede, 0xbce25e5e, 0x161d0b0b, 0xad76dbdb, +0xdb3be0e0, 0x64563232, 0x744e3a3a, 0x141e0a0a, +0x92db4949, 0xc0a0606, 0x486c2424, 0xb8e45c5c, +0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262, +0x39a89191, 0x31a49595, 0xd337e4e4, 0xf28b7979, +0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d, +0x18c8d8d, 0xb164d5d5, 0x9cd24e4e, 0x49e0a9a9, +0xd8b46c6c, 0xacfa5656, 0xf307f4f4, 0xcf25eaea, +0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, 0x10180808, +0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e, +0x38241c1c, 0x57f1a6a6, 0x73c7b4b4, 0x9751c6c6, +0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f, +0x96dd4b4b, 0x61dcbdbd, 0xd868b8b, 0xf858a8a, +0xe0907070, 0x7c423e3e, 0x71c4b5b5, 0xccaa6666, +0x90d84848, 0x6050303, 0xf701f6f6, 0x1c120e0e, +0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9, +0x17918686, 0x9958c1c1, 0x3a271d1d, 0x27b99e9e, +0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111, +0xd2bb6969, 0xa970d9d9, 0x7898e8e, 0x33a79494, +0x2db69b9b, 0x3c221e1e, 0x15928787, 0xc920e9e9, +0x8749cece, 0xaaff5555, 0x50782828, 0xa57adfdf, +0x38f8c8c, 0x59f8a1a1, 0x9808989, 0x1a170d0d, +0x65dabfbf, 0xd731e6e6, 0x84c64242, 0xd0b86868, +0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f, +0x7bcbb0b0, 0xa8fc5454, 0x6dd6bbbb, 0x2c3a1616}; + diff --git a/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes256-ctr.c b/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes256-ctr.c new file mode 100644 index 00000000..4259ac35 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes256-ctr.c @@ -0,0 +1,238 @@ +/* aes-ctr.c */ +/* AES in CTR mode. */ + +/* Hongjun Wu, January 2007*/ + + +/* ------------------------------------------------------------------------- */ + +#include "api.h" +#include "aes256.h" + +#include <string.h> + +/* ------------------------------------------------------------------------- */ +/* key setup for AES-256*/ +static void +ECRYPT_keysetup(ECRYPT_ctx* ctx, const u8* key, u32 keysize, u32 ivsize) +{ + unsigned int w[Nk*(Nr+1)], temp; + int i, j; + + (void) keysize; + (void) ivsize; + (void) sizeof(char[sizeof *ctx == crypto_stream_BEFORENMBYTES ? 1 : -1]); + + for( i = 0; i < Nk; i++ ) { + w[i] = key[(i << 2)]; + w[i] |= key[(i << 2)+1] << 8; + w[i] |= key[(i << 2)+2] << 16; + w[i] |= key[(i << 2)+3] << 24; + } + + i = Nk; + + while( i < Nb*(Nr+1) ) { + temp = w[i-1]; + + temp = Sbox[ temp & 0xFF] << 24 ^ + Sbox[(temp >> 8) & 0xFF] ^ + (Sbox[(temp >> 16) & 0xFF] << 8 ) ^ + (Sbox[(temp >> 24) & 0xFF] << 16) ^ + Rcon[i/Nk]; + w[i] = w[i-Nk] ^ temp; + i++; + + temp = w[i-1]; + w[i] = w[i-Nk] ^ temp; + i++; + + temp = w[i-1]; + w[i] = w[i-Nk] ^ temp; + i++; + + temp = w[i-1]; + w[i] = w[i-Nk] ^ temp; + i++; + + temp = w[i-1]; + temp = Sbox[ temp & 0xFF] ^ + Sbox[(temp >> 8) & 0xFF] << 8 ^ + (Sbox[(temp >> 16) & 0xFF] << 16 ) ^ + (Sbox[(temp >> 24) & 0xFF] << 24); + w[i] = w[i-Nk] ^ temp; + i++; + + temp = w[i-1]; + w[i] = w[i-Nk] ^ temp; + i++; + + temp = w[i-1]; + w[i] = w[i-Nk] ^ temp; + i++; + + temp = w[i-1]; + w[i] = w[i-Nk] ^ temp; + i++; + } + + for (i = 0; i <= Nr; i++) { + for (j = 0; j < Nb; j++) { + ctx->round_key[i][j] = w[(i<<2)+j]; + } + } +} + +/* ------------------------------------------------------------------------- */ + +static void +ECRYPT_ivsetup(ECRYPT_ctx* ctx, const u8* iv) +{ + (void) sizeof(char[(sizeof ctx->counter) == crypto_stream_NONCEBYTES ? 1 : -1]); + memcpy(ctx->counter, iv, crypto_stream_NONCEBYTES); +} + +/* ------------------------------------------------------------------------- */ + +/*compute the intermediate values for the first two rounds*/ +static void +partial_precompute_tworounds(ECRYPT_ctx* ctx) +{ + u32 x0,x1,x2,x3,y0,y1,y2,y3; + + x0 = ctx->counter[0] ^ ctx->round_key[0][0]; + x1 = ctx->counter[1] ^ ctx->round_key[0][1]; + x2 = ctx->counter[2] ^ ctx->round_key[0][2]; + x3 = ctx->counter[3] ^ ctx->round_key[0][3]; + x0 &= 0xffffff00; + round(ctx,x0,x1,x2,x3,y0,y1,y2,y3,1); + ctx->first_round_output_x0 = y0 ^ T0[0]; + y0 = 0; + round(ctx,y0,y1,y2,y3,x0,x1,x2,x3,2); + ctx->second_round_output[0] = x0 ^ T0[0]; + ctx->second_round_output[1] = x1 ^ T3[0]; + ctx->second_round_output[2] = x2 ^ T2[0]; + ctx->second_round_output[3] = x3 ^ T1[0]; +} + +/* ------------------------------------------------------------------------- */ + +#ifndef CPU_ALIGNED_ACCESS_REQUIRED +# define UNALIGNED_U32_READ(P, I) (((const u32 *)(const void *) (P))[(I)]) +#else +static inline uint32_t +UNALIGNED_U32_READ(const u8 * const p, const size_t i) +{ + uint32_t t; + (void) sizeof(int[sizeof(*p) == sizeof(char) ? 1 : -1]); + memcpy(&t, p + i * (sizeof t / sizeof *p), sizeof t); + return t; +} +#endif + +/* ------------------------------------------------------------------------- */ + +static void +ECRYPT_process_bytes(int action, ECRYPT_ctx* ctx, const u8* input, u8* output, + u32 msglen) +{ + __attribute__((aligned(32))) u8 keystream[16]; + u32 i; + + (void) action; + memset(keystream, 0, sizeof keystream); + partial_precompute_tworounds(ctx); + + for ( ; msglen >= 16; msglen -= 16, input += 16, output += 16) { + aes256_enc_block(ctx->counter, keystream, ctx); + + ((u32*)output)[0] = UNALIGNED_U32_READ(input, 0) ^ ((u32*)keystream)[0] ^ ctx->round_key[Nr][0]; + ((u32*)output)[1] = UNALIGNED_U32_READ(input, 1) ^ ((u32*)keystream)[1] ^ ctx->round_key[Nr][1]; + ((u32*)output)[2] = UNALIGNED_U32_READ(input, 2) ^ ((u32*)keystream)[2] ^ ctx->round_key[Nr][2]; + ((u32*)output)[3] = UNALIGNED_U32_READ(input, 3) ^ ((u32*)keystream)[3] ^ ctx->round_key[Nr][3]; + + ctx->counter[0]++; + + if ((ctx->counter[0] & 0xff)== 0) { + partial_precompute_tworounds(ctx); + } + } + + if (msglen > 0) { + aes256_enc_block(ctx->counter, keystream, ctx); + ((u32*)keystream)[0] ^= ctx->round_key[Nr][0]; + ((u32*)keystream)[1] ^= ctx->round_key[Nr][1]; + ((u32*)keystream)[2] ^= ctx->round_key[Nr][2]; + ((u32*)keystream)[3] ^= ctx->round_key[Nr][3]; + + for (i = 0; i < msglen; i ++) { + output[i] = input[i] ^ keystream[i]; + } + } +} + +/* ------------------------------------------------------------------------- */ + +#include "ecrypt-sync.h" + +int +crypto_stream_beforenm(unsigned char *c, const unsigned char *k) +{ + ECRYPT_ctx * const ctx = (ECRYPT_ctx *) c; + + ECRYPT_keysetup(ctx, k, crypto_stream_KEYBYTES * 8, + crypto_stream_NONCEBYTES * 8); + return 0; +} + +int +crypto_stream_afternm(unsigned char *outp, unsigned long long len, + const unsigned char *noncep, const unsigned char *c) +{ + ECRYPT_ctx * const ctx = (ECRYPT_ctx *) c; + unsigned long long i; + + ECRYPT_ivsetup(ctx, noncep); + for (i = 0U; i < len; ++i) { + outp[i] = 0U; + } + ECRYPT_encrypt_bytes(ctx, (u8 *) outp, (u8 *) outp, len); + + return 0; +} + +int +crypto_stream_xor_afternm(unsigned char *outp, const unsigned char *inp, + unsigned long long len, const unsigned char *noncep, + const unsigned char *c) +{ + ECRYPT_ctx * const ctx = (ECRYPT_ctx *) c; + + ECRYPT_ivsetup(ctx, noncep); + ECRYPT_encrypt_bytes(ctx, (const u8 *) inp, (u8 *) outp, len); + + return 0; +} + +int +crypto_stream(unsigned char *out, unsigned long long outlen, + const unsigned char *n, const unsigned char *k) +{ + unsigned char d[crypto_stream_BEFORENMBYTES]; + crypto_stream_beforenm(d, k); + crypto_stream_afternm(out, outlen, n, d); + + return 0; +} + +int crypto_stream_xor(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *n, + const unsigned char *k) +{ + unsigned char d[crypto_stream_BEFORENMBYTES]; + + crypto_stream_beforenm(d, k); + crypto_stream_xor_afternm(out, in, inlen, n, d); + + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes256.h b/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes256.h new file mode 100644 index 00000000..9b54f247 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes256.h @@ -0,0 +1,158 @@ +/* aes256.h */ +/* Hongjun Wu, January 2007*/ + + +#include "ecrypt-sync.h" +#include "aes-table.h" + +#include <stdio.h> + +#define first_round(ctx,x0,y0) { \ + u32 z0,t0,tem0; \ + z0 = (x0) ^ ctx->round_key[0][0]; \ + t0 = (u8) z0; \ + tem0 = T0[t0]; \ + (y0) = tem0 ^ ctx->first_round_output_x0; \ +} + +#define second_round(ctx,x0,y0,y1,y2,y3) { \ + u32 t0,t7,t10,t13; \ + u32 tem0,tem7,tem10,tem13; \ + t0 = (u8)(x0); \ + tem0 = T0[t0]; \ + (y0) = tem0 ^ ctx->second_round_output[0]; \ + t7 = (u8)((x0)>>24); \ + tem7 = T3[t7]; \ + (y1) = tem7 ^ ctx->second_round_output[1]; \ + t10 = (u8)((x0)>>16); \ + tem10 = T2[t10]; \ + (y2) = tem10 ^ ctx->second_round_output[2]; \ + t13 = (u8)((x0)>>8); \ + tem13 = T1[t13];\ + (y3) = tem13 ^ ctx->second_round_output[3]; \ +} + +#define round(ctx,x0,x1,x2,x3,y0,y1,y2,y3,r) { \ + u32 t0,t1,t2,t3; \ + u32 t4,t5,t6,t7; \ + u32 t8,t9,t10,t11; \ + u32 t12,t13,t14,t15;\ + u32 tem0,tem1,tem2,tem3; \ + u32 tem4,tem5,tem6,tem7; \ + u32 tem8,tem9,tem10,tem11; \ + u32 tem12,tem13,tem14,tem15;\ + \ + t0 = (u8)(x0); \ + tem0 = T0[t0]; \ + t1 = (u8)((x1)>>8); \ + tem1 = tem0 ^ T1[t1]; \ + t2 = (u8)((x2)>>16); \ + tem2 = tem1 ^ T2[t2]; \ + t3 = (u8)((x3)>>24); \ + tem3 = tem2 ^ T3[t3]; \ + (y0) = tem3 ^ ctx->round_key[r][0]; \ + \ + t4 = (u8)(x1); \ + tem4 = T0[t4]; \ + t5 = (u8)((x2)>>8); \ + tem5 = tem4 ^ T1[t5]; \ + t6 = (u8)((x3)>>16); \ + tem6 = tem5 ^ T2[t6]; \ + t7 = (u8)((x0)>>24); \ + tem7 = tem6 ^ T3[t7]; \ + (y1) = tem7 ^ ctx->round_key[r][1]; \ + \ + t8 = (u8)(x2); \ + tem8 = T0[t8]; \ + t9 = (u8)((x3)>>8); \ + tem9 = tem8 ^ T1[t9]; \ + t10 = (u8)((x0)>>16); \ + tem10 = tem9 ^ T2[t10]; \ + t11 = (u8)((x1)>>24); \ + tem11 = tem10 ^ T3[t11];\ + (y2) = tem11 ^ ctx->round_key[r][2]; \ + \ + t12 = (u8)(x3); \ + tem12 = T0[t12]; \ + t13 = (u8)((x0)>>8); \ + tem13 = tem12 ^ T1[t13];\ + t14 = (u8)((x1)>>16); \ + tem14 = tem13 ^ T2[t14];\ + t15 = (u8)((x2)>>24); \ + tem15 = tem14 ^ T3[t15];\ + (y3) = tem15 ^ ctx->round_key[r][3]; \ +} + +/* 22.14 cycles/byte*/ +#define last_round(ctx,x0,x1,x2,x3,output,r) { \ + u32 t0,t1,t2,t3; \ + u32 t4,t5,t6,t7; \ + u32 t8,t9,t10,t11; \ + u32 t12,t13,t14,t15;\ + \ + t0 = (u8)(x0); \ + output[0] = Sbox[t0]; \ + t7 = (u8)((x0)>>24); \ + output[7] = Sbox[t7]; \ + t10 = (u8)((x0)>>16); \ + output[10] = Sbox[t10]; \ + t13 = (u8)((x0)>>8); \ + output[13] = Sbox[t13]; \ + \ + t1 = (u8)((x1)>>8); \ + output[1] = Sbox[t1]; \ + t4 = (u8)(x1); \ + output[4] = Sbox[t4]; \ + t11 = (u8)((x1)>>24); \ + output[11] = Sbox[t11]; \ + t14 = (u8)((x1)>>16); \ + output[14] = Sbox[t14]; \ + \ + t2 = (u8)((x2)>>16); \ + output[2] = Sbox[t2]; \ + t5 = (u8)((x2)>>8); \ + output[5] = Sbox[t5]; \ + t8 = (u8)(x2); \ + output[8] = Sbox[t8]; \ + t15 = (u8)((x2)>>24); \ + output[15] = Sbox[t15]; \ + \ + t3 = (u8)((x3)>>24); \ + output[3] = Sbox[t3]; \ + t6 = (u8)((x3)>>16); \ + output[6] = Sbox[t6]; \ + t9 = (u8)((x3)>>8); \ + output[9] = Sbox[t9]; \ + t12 = (u8)(x3); \ + output[12] = Sbox[t12]; \ +} + +#define aes256_enc_block(x,output,ctx) {\ + u32 y0;\ + u32 z0,z1,z2,z3;\ + u32 a0,a1,a2,a3;\ + u32 b0,b1,b2,b3;\ + u32 c0,c1,c2,c3;\ + u32 d0,d1,d2,d3;\ + u32 e0,e1,e2,e3;\ + u32 f0,f1,f2,f3;\ + u32 g0,g1,g2,g3;\ + u32 h0,h1,h2,h3;\ + u32 i0,i1,i2,i3;\ + u32 j0,j1,j2,j3;\ + u32 k0,k1,k2,k3;\ + first_round(ctx,x[0],y0);\ + second_round(ctx,y0,z0,z1,z2,z3);\ + round(ctx,z0,z1,z2,z3,a0,a1,a2,a3,3);\ + round(ctx,a0,a1,a2,a3,b0,b1,b2,b3,4);\ + round(ctx,b0,b1,b2,b3,c0,c1,c2,c3,5);\ + round(ctx,c0,c1,c2,c3,d0,d1,d2,d3,6);\ + round(ctx,d0,d1,d2,d3,e0,e1,e2,e3,7);\ + round(ctx,e0,e1,e2,e3,f0,f1,f2,f3,8);\ + round(ctx,f0,f1,f2,f3,g0,g1,g2,g3,9);\ + round(ctx,g0,g1,g2,g3,h0,h1,h2,h3,10);\ + round(ctx,h0,h1,h2,h3,i0,i1,i2,i3,11);\ + round(ctx,i0,i1,i2,i3,j0,j1,j2,j3,12);\ + round(ctx,j0,j1,j2,j3,k0,k1,k2,k3,13);\ + last_round(ctx,k0,k1,k2,k3,(output),14);\ +} diff --git a/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/api.h b/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/api.h new file mode 100644 index 00000000..45243be9 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/api.h @@ -0,0 +1,14 @@ + +#include "crypto_stream_aes256estream.h" + +#define crypto_stream crypto_stream_aes256estream +#define crypto_stream_xor crypto_stream_aes256estream_xor +#define crypto_stream_beforenm crypto_stream_aes256estream_beforenm +#define crypto_stream_afternm crypto_stream_aes256estream_afternm +#define crypto_stream_xor_afternm crypto_stream_aes256estream_xor_afternm +#define crypto_stream_KEYBYTES crypto_stream_aes256estream_KEYBYTES +#define crypto_stream_NONCEBYTES crypto_stream_aes256estream_NONCEBYTES +#define crypto_stream_BEFORENMBYTES crypto_stream_aes256estream_BEFORENMBYTES +#define crypto_stream_PRIMITIVE "aes256estream" +#define crypto_stream_IMPLEMENTATION crypto_stream_aes256estream_IMPLEMENTATION +#define crypto_stream_VERSION crypto_stream_aes256estream_VERSION diff --git a/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/ecrypt-sync.h b/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/ecrypt-sync.h new file mode 100644 index 00000000..6dafedbe --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/ecrypt-sync.h @@ -0,0 +1,27 @@ + +#ifndef __ECRYPT_SYNC__ +#define __ECRYPT_SYNC__ + +#include <stdint.h> + +typedef uint8_t u8; +typedef uint32_t u32; + +#define Nr 14 +#define Nk 8 +#define Nb 4 + +#pragma pack(push, 1) +__attribute__((aligned(64))) typedef struct ECRYPT_ctx +{ + u32 round_key[Nr+1][4]; + u32 counter[4]; + u32 first_round_output_x0; + u32 second_round_output[4]; +} ECRYPT_ctx; +#pragma pack(pop) + +#define ECRYPT_encrypt_bytes(ctx, plaintext, ciphertext, msglen) \ + ECRYPT_process_bytes(0, ctx, plaintext, ciphertext, msglen) + +#endif diff --git a/src/libsodium/src/libsodium/crypto_stream/aes256estream/stream_aes256estream_api.c b/src/libsodium/src/libsodium/crypto_stream/aes256estream/stream_aes256estream_api.c new file mode 100644 index 00000000..a20fdb01 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/aes256estream/stream_aes256estream_api.c @@ -0,0 +1,21 @@ +#include "crypto_stream_aes256estream.h" + +size_t +crypto_stream_aes256estream_keybytes(void) { + return crypto_stream_aes256estream_KEYBYTES; +} + +size_t +crypto_stream_aes256estream_noncebytes(void) { + return crypto_stream_aes256estream_NONCEBYTES; +} + +size_t +crypto_stream_aes256estream_beforenmbytes(void) { + return crypto_stream_aes256estream_BEFORENMBYTES; +} + +const char * +crypto_stream_aes256estream_primitive(void) { + return "aes256estream"; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/crypto_stream.c b/src/libsodium/src/libsodium/crypto_stream/crypto_stream.c new file mode 100644 index 00000000..50a9c1c0 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/crypto_stream.c @@ -0,0 +1,36 @@ + +#include "crypto_stream.h" + +size_t +crypto_stream_keybytes(void) +{ + return crypto_stream_KEYBYTES; +} + +size_t +crypto_stream_noncebytes(void) +{ + return crypto_stream_NONCEBYTES; +} + +const char * +crypto_stream_primitive(void) +{ + return crypto_stream_PRIMITIVE; +} + +int +crypto_stream(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + return crypto_stream_xsalsa20(c, clen, n, k); +} + + +int +crypto_stream_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_stream_xsalsa20_xor(c, m, mlen, n, k); +} diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/api.h b/src/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/api.h new file mode 100644 index 00000000..037fb59d --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/api.h @@ -0,0 +1 @@ +#include "crypto_stream_salsa20.h" diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S b/src/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S new file mode 100644 index 00000000..c96f7109 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S @@ -0,0 +1,950 @@ +#if defined(__amd64) || defined(__amd64__) || defined(__x86_64__) + +.text +.p2align 5 + +.globl _crypto_stream_salsa20 +.globl crypto_stream_salsa20 +_crypto_stream_salsa20: +crypto_stream_salsa20: +mov %rsp,%r11 +and $31,%r11 +add $480,%r11 +sub %r11,%rsp +movq %r11,352(%rsp) +movq %r12,360(%rsp) +movq %r13,368(%rsp) +movq %r14,376(%rsp) +movq %r15,384(%rsp) +movq %rbx,392(%rsp) +movq %rbp,400(%rsp) +mov %rsi,%r9 +mov %rdi,%rdi +mov %rdi,%rsi +mov %rdx,%rdx +mov %rcx,%r10 +cmp $0,%r9 +jbe ._done + +mov $0,%rax +mov %r9,%rcx +rep stosb +sub %r9,%rdi +jmp ._start + +.text +.p2align 5 + +.globl _crypto_stream_salsa20_xor +.globl crypto_stream_salsa20_xor +_crypto_stream_salsa20_xor: +crypto_stream_salsa20_xor: +mov %rsp,%r11 +and $31,%r11 +add $480,%r11 +sub %r11,%rsp +movq %r11,352(%rsp) +movq %r12,360(%rsp) +movq %r13,368(%rsp) +movq %r14,376(%rsp) +movq %r15,384(%rsp) +movq %rbx,392(%rsp) +movq %rbp,400(%rsp) +mov %rdi,%rdi +mov %rsi,%rsi +mov %rdx,%r9 +mov %rcx,%rdx +mov %r8,%r10 +cmp $0,%r9 +jbe ._done + +._start: +movl 20(%r10),%ecx +movl 0(%r10),%r8d +movl 0(%rdx),%eax +movl 16(%r10),%r11d +movl %ecx,0(%rsp) +movl %r8d,4+0(%rsp) +movl %eax,8+0(%rsp) +movl %r11d,12+0(%rsp) +mov $0,%rcx +movl 24(%r10),%r8d +movl 4(%r10),%eax +movl 4(%rdx),%edx +movl %ecx,16(%rsp) +movl %r8d,4+16(%rsp) +movl %eax,8+16(%rsp) +movl %edx,12+16(%rsp) +movl 12(%r10),%edx +mov $0,%rcx +movl 28(%r10),%r8d +movl 8(%r10),%eax +movl %edx,32(%rsp) +movl %ecx,4+32(%rsp) +movl %r8d,8+32(%rsp) +movl %eax,12+32(%rsp) +mov $1634760805,%rdx +mov $857760878,%rcx +mov $2036477234,%r8 +mov $1797285236,%rax +movl %edx,48(%rsp) +movl %ecx,4+48(%rsp) +movl %r8d,8+48(%rsp) +movl %eax,12+48(%rsp) +cmp $256,%r9 +jb ._bytesbetween1and255 + +movdqa 48(%rsp),%xmm0 +pshufd $0x55,%xmm0,%xmm1 +pshufd $0xaa,%xmm0,%xmm2 +pshufd $0xff,%xmm0,%xmm3 +pshufd $0x00,%xmm0,%xmm0 +movdqa %xmm1,64(%rsp) +movdqa %xmm2,80(%rsp) +movdqa %xmm3,96(%rsp) +movdqa %xmm0,112(%rsp) +movdqa 0(%rsp),%xmm0 +pshufd $0xaa,%xmm0,%xmm1 +pshufd $0xff,%xmm0,%xmm2 +pshufd $0x00,%xmm0,%xmm3 +pshufd $0x55,%xmm0,%xmm0 +movdqa %xmm1,128(%rsp) +movdqa %xmm2,144(%rsp) +movdqa %xmm3,160(%rsp) +movdqa %xmm0,176(%rsp) +movdqa 16(%rsp),%xmm0 +pshufd $0xff,%xmm0,%xmm1 +pshufd $0x55,%xmm0,%xmm2 +pshufd $0xaa,%xmm0,%xmm0 +movdqa %xmm1,192(%rsp) +movdqa %xmm2,208(%rsp) +movdqa %xmm0,224(%rsp) +movdqa 32(%rsp),%xmm0 +pshufd $0x00,%xmm0,%xmm1 +pshufd $0xaa,%xmm0,%xmm2 +pshufd $0xff,%xmm0,%xmm0 +movdqa %xmm1,240(%rsp) +movdqa %xmm2,256(%rsp) +movdqa %xmm0,272(%rsp) + +._bytesatleast256: +movl 16(%rsp),%edx +movl 4+32(%rsp),%ecx +movl %edx,288(%rsp) +movl %ecx,304(%rsp) +add $1,%rdx +shl $32,%rcx +add %rcx,%rdx +mov %rdx,%rcx +shr $32,%rcx +movl %edx,4+288(%rsp) +movl %ecx,4+304(%rsp) +add $1,%rdx +shl $32,%rcx +add %rcx,%rdx +mov %rdx,%rcx +shr $32,%rcx +movl %edx,8+288(%rsp) +movl %ecx,8+304(%rsp) +add $1,%rdx +shl $32,%rcx +add %rcx,%rdx +mov %rdx,%rcx +shr $32,%rcx +movl %edx,12+288(%rsp) +movl %ecx,12+304(%rsp) +add $1,%rdx +shl $32,%rcx +add %rcx,%rdx +mov %rdx,%rcx +shr $32,%rcx +movl %edx,16(%rsp) +movl %ecx,4+32(%rsp) +movq %r9,408(%rsp) +mov $20,%rdx +movdqa 64(%rsp),%xmm0 +movdqa 80(%rsp),%xmm1 +movdqa 96(%rsp),%xmm2 +movdqa 256(%rsp),%xmm3 +movdqa 272(%rsp),%xmm4 +movdqa 128(%rsp),%xmm5 +movdqa 144(%rsp),%xmm6 +movdqa 176(%rsp),%xmm7 +movdqa 192(%rsp),%xmm8 +movdqa 208(%rsp),%xmm9 +movdqa 224(%rsp),%xmm10 +movdqa 304(%rsp),%xmm11 +movdqa 112(%rsp),%xmm12 +movdqa 160(%rsp),%xmm13 +movdqa 240(%rsp),%xmm14 +movdqa 288(%rsp),%xmm15 + +._mainloop1: +movdqa %xmm1,320(%rsp) +movdqa %xmm2,336(%rsp) +movdqa %xmm13,%xmm1 +paddd %xmm12,%xmm1 +movdqa %xmm1,%xmm2 +pslld $7,%xmm1 +pxor %xmm1,%xmm14 +psrld $25,%xmm2 +pxor %xmm2,%xmm14 +movdqa %xmm7,%xmm1 +paddd %xmm0,%xmm1 +movdqa %xmm1,%xmm2 +pslld $7,%xmm1 +pxor %xmm1,%xmm11 +psrld $25,%xmm2 +pxor %xmm2,%xmm11 +movdqa %xmm12,%xmm1 +paddd %xmm14,%xmm1 +movdqa %xmm1,%xmm2 +pslld $9,%xmm1 +pxor %xmm1,%xmm15 +psrld $23,%xmm2 +pxor %xmm2,%xmm15 +movdqa %xmm0,%xmm1 +paddd %xmm11,%xmm1 +movdqa %xmm1,%xmm2 +pslld $9,%xmm1 +pxor %xmm1,%xmm9 +psrld $23,%xmm2 +pxor %xmm2,%xmm9 +movdqa %xmm14,%xmm1 +paddd %xmm15,%xmm1 +movdqa %xmm1,%xmm2 +pslld $13,%xmm1 +pxor %xmm1,%xmm13 +psrld $19,%xmm2 +pxor %xmm2,%xmm13 +movdqa %xmm11,%xmm1 +paddd %xmm9,%xmm1 +movdqa %xmm1,%xmm2 +pslld $13,%xmm1 +pxor %xmm1,%xmm7 +psrld $19,%xmm2 +pxor %xmm2,%xmm7 +movdqa %xmm15,%xmm1 +paddd %xmm13,%xmm1 +movdqa %xmm1,%xmm2 +pslld $18,%xmm1 +pxor %xmm1,%xmm12 +psrld $14,%xmm2 +pxor %xmm2,%xmm12 +movdqa 320(%rsp),%xmm1 +movdqa %xmm12,320(%rsp) +movdqa %xmm9,%xmm2 +paddd %xmm7,%xmm2 +movdqa %xmm2,%xmm12 +pslld $18,%xmm2 +pxor %xmm2,%xmm0 +psrld $14,%xmm12 +pxor %xmm12,%xmm0 +movdqa %xmm5,%xmm2 +paddd %xmm1,%xmm2 +movdqa %xmm2,%xmm12 +pslld $7,%xmm2 +pxor %xmm2,%xmm3 +psrld $25,%xmm12 +pxor %xmm12,%xmm3 +movdqa 336(%rsp),%xmm2 +movdqa %xmm0,336(%rsp) +movdqa %xmm6,%xmm0 +paddd %xmm2,%xmm0 +movdqa %xmm0,%xmm12 +pslld $7,%xmm0 +pxor %xmm0,%xmm4 +psrld $25,%xmm12 +pxor %xmm12,%xmm4 +movdqa %xmm1,%xmm0 +paddd %xmm3,%xmm0 +movdqa %xmm0,%xmm12 +pslld $9,%xmm0 +pxor %xmm0,%xmm10 +psrld $23,%xmm12 +pxor %xmm12,%xmm10 +movdqa %xmm2,%xmm0 +paddd %xmm4,%xmm0 +movdqa %xmm0,%xmm12 +pslld $9,%xmm0 +pxor %xmm0,%xmm8 +psrld $23,%xmm12 +pxor %xmm12,%xmm8 +movdqa %xmm3,%xmm0 +paddd %xmm10,%xmm0 +movdqa %xmm0,%xmm12 +pslld $13,%xmm0 +pxor %xmm0,%xmm5 +psrld $19,%xmm12 +pxor %xmm12,%xmm5 +movdqa %xmm4,%xmm0 +paddd %xmm8,%xmm0 +movdqa %xmm0,%xmm12 +pslld $13,%xmm0 +pxor %xmm0,%xmm6 +psrld $19,%xmm12 +pxor %xmm12,%xmm6 +movdqa %xmm10,%xmm0 +paddd %xmm5,%xmm0 +movdqa %xmm0,%xmm12 +pslld $18,%xmm0 +pxor %xmm0,%xmm1 +psrld $14,%xmm12 +pxor %xmm12,%xmm1 +movdqa 320(%rsp),%xmm0 +movdqa %xmm1,320(%rsp) +movdqa %xmm4,%xmm1 +paddd %xmm0,%xmm1 +movdqa %xmm1,%xmm12 +pslld $7,%xmm1 +pxor %xmm1,%xmm7 +psrld $25,%xmm12 +pxor %xmm12,%xmm7 +movdqa %xmm8,%xmm1 +paddd %xmm6,%xmm1 +movdqa %xmm1,%xmm12 +pslld $18,%xmm1 +pxor %xmm1,%xmm2 +psrld $14,%xmm12 +pxor %xmm12,%xmm2 +movdqa 336(%rsp),%xmm12 +movdqa %xmm2,336(%rsp) +movdqa %xmm14,%xmm1 +paddd %xmm12,%xmm1 +movdqa %xmm1,%xmm2 +pslld $7,%xmm1 +pxor %xmm1,%xmm5 +psrld $25,%xmm2 +pxor %xmm2,%xmm5 +movdqa %xmm0,%xmm1 +paddd %xmm7,%xmm1 +movdqa %xmm1,%xmm2 +pslld $9,%xmm1 +pxor %xmm1,%xmm10 +psrld $23,%xmm2 +pxor %xmm2,%xmm10 +movdqa %xmm12,%xmm1 +paddd %xmm5,%xmm1 +movdqa %xmm1,%xmm2 +pslld $9,%xmm1 +pxor %xmm1,%xmm8 +psrld $23,%xmm2 +pxor %xmm2,%xmm8 +movdqa %xmm7,%xmm1 +paddd %xmm10,%xmm1 +movdqa %xmm1,%xmm2 +pslld $13,%xmm1 +pxor %xmm1,%xmm4 +psrld $19,%xmm2 +pxor %xmm2,%xmm4 +movdqa %xmm5,%xmm1 +paddd %xmm8,%xmm1 +movdqa %xmm1,%xmm2 +pslld $13,%xmm1 +pxor %xmm1,%xmm14 +psrld $19,%xmm2 +pxor %xmm2,%xmm14 +movdqa %xmm10,%xmm1 +paddd %xmm4,%xmm1 +movdqa %xmm1,%xmm2 +pslld $18,%xmm1 +pxor %xmm1,%xmm0 +psrld $14,%xmm2 +pxor %xmm2,%xmm0 +movdqa 320(%rsp),%xmm1 +movdqa %xmm0,320(%rsp) +movdqa %xmm8,%xmm0 +paddd %xmm14,%xmm0 +movdqa %xmm0,%xmm2 +pslld $18,%xmm0 +pxor %xmm0,%xmm12 +psrld $14,%xmm2 +pxor %xmm2,%xmm12 +movdqa %xmm11,%xmm0 +paddd %xmm1,%xmm0 +movdqa %xmm0,%xmm2 +pslld $7,%xmm0 +pxor %xmm0,%xmm6 +psrld $25,%xmm2 +pxor %xmm2,%xmm6 +movdqa 336(%rsp),%xmm2 +movdqa %xmm12,336(%rsp) +movdqa %xmm3,%xmm0 +paddd %xmm2,%xmm0 +movdqa %xmm0,%xmm12 +pslld $7,%xmm0 +pxor %xmm0,%xmm13 +psrld $25,%xmm12 +pxor %xmm12,%xmm13 +movdqa %xmm1,%xmm0 +paddd %xmm6,%xmm0 +movdqa %xmm0,%xmm12 +pslld $9,%xmm0 +pxor %xmm0,%xmm15 +psrld $23,%xmm12 +pxor %xmm12,%xmm15 +movdqa %xmm2,%xmm0 +paddd %xmm13,%xmm0 +movdqa %xmm0,%xmm12 +pslld $9,%xmm0 +pxor %xmm0,%xmm9 +psrld $23,%xmm12 +pxor %xmm12,%xmm9 +movdqa %xmm6,%xmm0 +paddd %xmm15,%xmm0 +movdqa %xmm0,%xmm12 +pslld $13,%xmm0 +pxor %xmm0,%xmm11 +psrld $19,%xmm12 +pxor %xmm12,%xmm11 +movdqa %xmm13,%xmm0 +paddd %xmm9,%xmm0 +movdqa %xmm0,%xmm12 +pslld $13,%xmm0 +pxor %xmm0,%xmm3 +psrld $19,%xmm12 +pxor %xmm12,%xmm3 +movdqa %xmm15,%xmm0 +paddd %xmm11,%xmm0 +movdqa %xmm0,%xmm12 +pslld $18,%xmm0 +pxor %xmm0,%xmm1 +psrld $14,%xmm12 +pxor %xmm12,%xmm1 +movdqa %xmm9,%xmm0 +paddd %xmm3,%xmm0 +movdqa %xmm0,%xmm12 +pslld $18,%xmm0 +pxor %xmm0,%xmm2 +psrld $14,%xmm12 +pxor %xmm12,%xmm2 +movdqa 320(%rsp),%xmm12 +movdqa 336(%rsp),%xmm0 +sub $2,%rdx +ja ._mainloop1 + +paddd 112(%rsp),%xmm12 +paddd 176(%rsp),%xmm7 +paddd 224(%rsp),%xmm10 +paddd 272(%rsp),%xmm4 +movd %xmm12,%rdx +movd %xmm7,%rcx +movd %xmm10,%r8 +movd %xmm4,%r9 +pshufd $0x39,%xmm12,%xmm12 +pshufd $0x39,%xmm7,%xmm7 +pshufd $0x39,%xmm10,%xmm10 +pshufd $0x39,%xmm4,%xmm4 +xorl 0(%rsi),%edx +xorl 4(%rsi),%ecx +xorl 8(%rsi),%r8d +xorl 12(%rsi),%r9d +movl %edx,0(%rdi) +movl %ecx,4(%rdi) +movl %r8d,8(%rdi) +movl %r9d,12(%rdi) +movd %xmm12,%rdx +movd %xmm7,%rcx +movd %xmm10,%r8 +movd %xmm4,%r9 +pshufd $0x39,%xmm12,%xmm12 +pshufd $0x39,%xmm7,%xmm7 +pshufd $0x39,%xmm10,%xmm10 +pshufd $0x39,%xmm4,%xmm4 +xorl 64(%rsi),%edx +xorl 68(%rsi),%ecx +xorl 72(%rsi),%r8d +xorl 76(%rsi),%r9d +movl %edx,64(%rdi) +movl %ecx,68(%rdi) +movl %r8d,72(%rdi) +movl %r9d,76(%rdi) +movd %xmm12,%rdx +movd %xmm7,%rcx +movd %xmm10,%r8 +movd %xmm4,%r9 +pshufd $0x39,%xmm12,%xmm12 +pshufd $0x39,%xmm7,%xmm7 +pshufd $0x39,%xmm10,%xmm10 +pshufd $0x39,%xmm4,%xmm4 +xorl 128(%rsi),%edx +xorl 132(%rsi),%ecx +xorl 136(%rsi),%r8d +xorl 140(%rsi),%r9d +movl %edx,128(%rdi) +movl %ecx,132(%rdi) +movl %r8d,136(%rdi) +movl %r9d,140(%rdi) +movd %xmm12,%rdx +movd %xmm7,%rcx +movd %xmm10,%r8 +movd %xmm4,%r9 +xorl 192(%rsi),%edx +xorl 196(%rsi),%ecx +xorl 200(%rsi),%r8d +xorl 204(%rsi),%r9d +movl %edx,192(%rdi) +movl %ecx,196(%rdi) +movl %r8d,200(%rdi) +movl %r9d,204(%rdi) +paddd 240(%rsp),%xmm14 +paddd 64(%rsp),%xmm0 +paddd 128(%rsp),%xmm5 +paddd 192(%rsp),%xmm8 +movd %xmm14,%rdx +movd %xmm0,%rcx +movd %xmm5,%r8 +movd %xmm8,%r9 +pshufd $0x39,%xmm14,%xmm14 +pshufd $0x39,%xmm0,%xmm0 +pshufd $0x39,%xmm5,%xmm5 +pshufd $0x39,%xmm8,%xmm8 +xorl 16(%rsi),%edx +xorl 20(%rsi),%ecx +xorl 24(%rsi),%r8d +xorl 28(%rsi),%r9d +movl %edx,16(%rdi) +movl %ecx,20(%rdi) +movl %r8d,24(%rdi) +movl %r9d,28(%rdi) +movd %xmm14,%rdx +movd %xmm0,%rcx +movd %xmm5,%r8 +movd %xmm8,%r9 +pshufd $0x39,%xmm14,%xmm14 +pshufd $0x39,%xmm0,%xmm0 +pshufd $0x39,%xmm5,%xmm5 +pshufd $0x39,%xmm8,%xmm8 +xorl 80(%rsi),%edx +xorl 84(%rsi),%ecx +xorl 88(%rsi),%r8d +xorl 92(%rsi),%r9d +movl %edx,80(%rdi) +movl %ecx,84(%rdi) +movl %r8d,88(%rdi) +movl %r9d,92(%rdi) +movd %xmm14,%rdx +movd %xmm0,%rcx +movd %xmm5,%r8 +movd %xmm8,%r9 +pshufd $0x39,%xmm14,%xmm14 +pshufd $0x39,%xmm0,%xmm0 +pshufd $0x39,%xmm5,%xmm5 +pshufd $0x39,%xmm8,%xmm8 +xorl 144(%rsi),%edx +xorl 148(%rsi),%ecx +xorl 152(%rsi),%r8d +xorl 156(%rsi),%r9d +movl %edx,144(%rdi) +movl %ecx,148(%rdi) +movl %r8d,152(%rdi) +movl %r9d,156(%rdi) +movd %xmm14,%rdx +movd %xmm0,%rcx +movd %xmm5,%r8 +movd %xmm8,%r9 +xorl 208(%rsi),%edx +xorl 212(%rsi),%ecx +xorl 216(%rsi),%r8d +xorl 220(%rsi),%r9d +movl %edx,208(%rdi) +movl %ecx,212(%rdi) +movl %r8d,216(%rdi) +movl %r9d,220(%rdi) +paddd 288(%rsp),%xmm15 +paddd 304(%rsp),%xmm11 +paddd 80(%rsp),%xmm1 +paddd 144(%rsp),%xmm6 +movd %xmm15,%rdx +movd %xmm11,%rcx +movd %xmm1,%r8 +movd %xmm6,%r9 +pshufd $0x39,%xmm15,%xmm15 +pshufd $0x39,%xmm11,%xmm11 +pshufd $0x39,%xmm1,%xmm1 +pshufd $0x39,%xmm6,%xmm6 +xorl 32(%rsi),%edx +xorl 36(%rsi),%ecx +xorl 40(%rsi),%r8d +xorl 44(%rsi),%r9d +movl %edx,32(%rdi) +movl %ecx,36(%rdi) +movl %r8d,40(%rdi) +movl %r9d,44(%rdi) +movd %xmm15,%rdx +movd %xmm11,%rcx +movd %xmm1,%r8 +movd %xmm6,%r9 +pshufd $0x39,%xmm15,%xmm15 +pshufd $0x39,%xmm11,%xmm11 +pshufd $0x39,%xmm1,%xmm1 +pshufd $0x39,%xmm6,%xmm6 +xorl 96(%rsi),%edx +xorl 100(%rsi),%ecx +xorl 104(%rsi),%r8d +xorl 108(%rsi),%r9d +movl %edx,96(%rdi) +movl %ecx,100(%rdi) +movl %r8d,104(%rdi) +movl %r9d,108(%rdi) +movd %xmm15,%rdx +movd %xmm11,%rcx +movd %xmm1,%r8 +movd %xmm6,%r9 +pshufd $0x39,%xmm15,%xmm15 +pshufd $0x39,%xmm11,%xmm11 +pshufd $0x39,%xmm1,%xmm1 +pshufd $0x39,%xmm6,%xmm6 +xorl 160(%rsi),%edx +xorl 164(%rsi),%ecx +xorl 168(%rsi),%r8d +xorl 172(%rsi),%r9d +movl %edx,160(%rdi) +movl %ecx,164(%rdi) +movl %r8d,168(%rdi) +movl %r9d,172(%rdi) +movd %xmm15,%rdx +movd %xmm11,%rcx +movd %xmm1,%r8 +movd %xmm6,%r9 +xorl 224(%rsi),%edx +xorl 228(%rsi),%ecx +xorl 232(%rsi),%r8d +xorl 236(%rsi),%r9d +movl %edx,224(%rdi) +movl %ecx,228(%rdi) +movl %r8d,232(%rdi) +movl %r9d,236(%rdi) +paddd 160(%rsp),%xmm13 +paddd 208(%rsp),%xmm9 +paddd 256(%rsp),%xmm3 +paddd 96(%rsp),%xmm2 +movd %xmm13,%rdx +movd %xmm9,%rcx +movd %xmm3,%r8 +movd %xmm2,%r9 +pshufd $0x39,%xmm13,%xmm13 +pshufd $0x39,%xmm9,%xmm9 +pshufd $0x39,%xmm3,%xmm3 +pshufd $0x39,%xmm2,%xmm2 +xorl 48(%rsi),%edx +xorl 52(%rsi),%ecx +xorl 56(%rsi),%r8d +xorl 60(%rsi),%r9d +movl %edx,48(%rdi) +movl %ecx,52(%rdi) +movl %r8d,56(%rdi) +movl %r9d,60(%rdi) +movd %xmm13,%rdx +movd %xmm9,%rcx +movd %xmm3,%r8 +movd %xmm2,%r9 +pshufd $0x39,%xmm13,%xmm13 +pshufd $0x39,%xmm9,%xmm9 +pshufd $0x39,%xmm3,%xmm3 +pshufd $0x39,%xmm2,%xmm2 +xorl 112(%rsi),%edx +xorl 116(%rsi),%ecx +xorl 120(%rsi),%r8d +xorl 124(%rsi),%r9d +movl %edx,112(%rdi) +movl %ecx,116(%rdi) +movl %r8d,120(%rdi) +movl %r9d,124(%rdi) +movd %xmm13,%rdx +movd %xmm9,%rcx +movd %xmm3,%r8 +movd %xmm2,%r9 +pshufd $0x39,%xmm13,%xmm13 +pshufd $0x39,%xmm9,%xmm9 +pshufd $0x39,%xmm3,%xmm3 +pshufd $0x39,%xmm2,%xmm2 +xorl 176(%rsi),%edx +xorl 180(%rsi),%ecx +xorl 184(%rsi),%r8d +xorl 188(%rsi),%r9d +movl %edx,176(%rdi) +movl %ecx,180(%rdi) +movl %r8d,184(%rdi) +movl %r9d,188(%rdi) +movd %xmm13,%rdx +movd %xmm9,%rcx +movd %xmm3,%r8 +movd %xmm2,%r9 +xorl 240(%rsi),%edx +xorl 244(%rsi),%ecx +xorl 248(%rsi),%r8d +xorl 252(%rsi),%r9d +movl %edx,240(%rdi) +movl %ecx,244(%rdi) +movl %r8d,248(%rdi) +movl %r9d,252(%rdi) +movq 408(%rsp),%r9 +sub $256,%r9 +add $256,%rsi +add $256,%rdi +cmp $256,%r9 +jae ._bytesatleast256 + +cmp $0,%r9 +jbe ._done + +._bytesbetween1and255: +cmp $64,%r9 +jae ._nocopy + +mov %rdi,%rdx +leaq 416(%rsp),%rdi +mov %r9,%rcx +rep movsb +leaq 416(%rsp),%rdi +leaq 416(%rsp),%rsi + +._nocopy: +movq %r9,408(%rsp) +movdqa 48(%rsp),%xmm0 +movdqa 0(%rsp),%xmm1 +movdqa 16(%rsp),%xmm2 +movdqa 32(%rsp),%xmm3 +movdqa %xmm1,%xmm4 +mov $20,%rcx + +._mainloop2: +paddd %xmm0,%xmm4 +movdqa %xmm0,%xmm5 +movdqa %xmm4,%xmm6 +pslld $7,%xmm4 +psrld $25,%xmm6 +pxor %xmm4,%xmm3 +pxor %xmm6,%xmm3 +paddd %xmm3,%xmm5 +movdqa %xmm3,%xmm4 +movdqa %xmm5,%xmm6 +pslld $9,%xmm5 +psrld $23,%xmm6 +pxor %xmm5,%xmm2 +pshufd $0x93,%xmm3,%xmm3 +pxor %xmm6,%xmm2 +paddd %xmm2,%xmm4 +movdqa %xmm2,%xmm5 +movdqa %xmm4,%xmm6 +pslld $13,%xmm4 +psrld $19,%xmm6 +pxor %xmm4,%xmm1 +pshufd $0x4e,%xmm2,%xmm2 +pxor %xmm6,%xmm1 +paddd %xmm1,%xmm5 +movdqa %xmm3,%xmm4 +movdqa %xmm5,%xmm6 +pslld $18,%xmm5 +psrld $14,%xmm6 +pxor %xmm5,%xmm0 +pshufd $0x39,%xmm1,%xmm1 +pxor %xmm6,%xmm0 +paddd %xmm0,%xmm4 +movdqa %xmm0,%xmm5 +movdqa %xmm4,%xmm6 +pslld $7,%xmm4 +psrld $25,%xmm6 +pxor %xmm4,%xmm1 +pxor %xmm6,%xmm1 +paddd %xmm1,%xmm5 +movdqa %xmm1,%xmm4 +movdqa %xmm5,%xmm6 +pslld $9,%xmm5 +psrld $23,%xmm6 +pxor %xmm5,%xmm2 +pshufd $0x93,%xmm1,%xmm1 +pxor %xmm6,%xmm2 +paddd %xmm2,%xmm4 +movdqa %xmm2,%xmm5 +movdqa %xmm4,%xmm6 +pslld $13,%xmm4 +psrld $19,%xmm6 +pxor %xmm4,%xmm3 +pshufd $0x4e,%xmm2,%xmm2 +pxor %xmm6,%xmm3 +paddd %xmm3,%xmm5 +movdqa %xmm1,%xmm4 +movdqa %xmm5,%xmm6 +pslld $18,%xmm5 +psrld $14,%xmm6 +pxor %xmm5,%xmm0 +pshufd $0x39,%xmm3,%xmm3 +pxor %xmm6,%xmm0 +paddd %xmm0,%xmm4 +movdqa %xmm0,%xmm5 +movdqa %xmm4,%xmm6 +pslld $7,%xmm4 +psrld $25,%xmm6 +pxor %xmm4,%xmm3 +pxor %xmm6,%xmm3 +paddd %xmm3,%xmm5 +movdqa %xmm3,%xmm4 +movdqa %xmm5,%xmm6 +pslld $9,%xmm5 +psrld $23,%xmm6 +pxor %xmm5,%xmm2 +pshufd $0x93,%xmm3,%xmm3 +pxor %xmm6,%xmm2 +paddd %xmm2,%xmm4 +movdqa %xmm2,%xmm5 +movdqa %xmm4,%xmm6 +pslld $13,%xmm4 +psrld $19,%xmm6 +pxor %xmm4,%xmm1 +pshufd $0x4e,%xmm2,%xmm2 +pxor %xmm6,%xmm1 +paddd %xmm1,%xmm5 +movdqa %xmm3,%xmm4 +movdqa %xmm5,%xmm6 +pslld $18,%xmm5 +psrld $14,%xmm6 +pxor %xmm5,%xmm0 +pshufd $0x39,%xmm1,%xmm1 +pxor %xmm6,%xmm0 +paddd %xmm0,%xmm4 +movdqa %xmm0,%xmm5 +movdqa %xmm4,%xmm6 +pslld $7,%xmm4 +psrld $25,%xmm6 +pxor %xmm4,%xmm1 +pxor %xmm6,%xmm1 +paddd %xmm1,%xmm5 +movdqa %xmm1,%xmm4 +movdqa %xmm5,%xmm6 +pslld $9,%xmm5 +psrld $23,%xmm6 +pxor %xmm5,%xmm2 +pshufd $0x93,%xmm1,%xmm1 +pxor %xmm6,%xmm2 +paddd %xmm2,%xmm4 +movdqa %xmm2,%xmm5 +movdqa %xmm4,%xmm6 +pslld $13,%xmm4 +psrld $19,%xmm6 +pxor %xmm4,%xmm3 +pshufd $0x4e,%xmm2,%xmm2 +pxor %xmm6,%xmm3 +sub $4,%rcx +paddd %xmm3,%xmm5 +movdqa %xmm1,%xmm4 +movdqa %xmm5,%xmm6 +pslld $18,%xmm5 +pxor %xmm7,%xmm7 +psrld $14,%xmm6 +pxor %xmm5,%xmm0 +pshufd $0x39,%xmm3,%xmm3 +pxor %xmm6,%xmm0 +ja ._mainloop2 + +paddd 48(%rsp),%xmm0 +paddd 0(%rsp),%xmm1 +paddd 16(%rsp),%xmm2 +paddd 32(%rsp),%xmm3 +movd %xmm0,%rcx +movd %xmm1,%r8 +movd %xmm2,%r9 +movd %xmm3,%rax +pshufd $0x39,%xmm0,%xmm0 +pshufd $0x39,%xmm1,%xmm1 +pshufd $0x39,%xmm2,%xmm2 +pshufd $0x39,%xmm3,%xmm3 +xorl 0(%rsi),%ecx +xorl 48(%rsi),%r8d +xorl 32(%rsi),%r9d +xorl 16(%rsi),%eax +movl %ecx,0(%rdi) +movl %r8d,48(%rdi) +movl %r9d,32(%rdi) +movl %eax,16(%rdi) +movd %xmm0,%rcx +movd %xmm1,%r8 +movd %xmm2,%r9 +movd %xmm3,%rax +pshufd $0x39,%xmm0,%xmm0 +pshufd $0x39,%xmm1,%xmm1 +pshufd $0x39,%xmm2,%xmm2 +pshufd $0x39,%xmm3,%xmm3 +xorl 20(%rsi),%ecx +xorl 4(%rsi),%r8d +xorl 52(%rsi),%r9d +xorl 36(%rsi),%eax +movl %ecx,20(%rdi) +movl %r8d,4(%rdi) +movl %r9d,52(%rdi) +movl %eax,36(%rdi) +movd %xmm0,%rcx +movd %xmm1,%r8 +movd %xmm2,%r9 +movd %xmm3,%rax +pshufd $0x39,%xmm0,%xmm0 +pshufd $0x39,%xmm1,%xmm1 +pshufd $0x39,%xmm2,%xmm2 +pshufd $0x39,%xmm3,%xmm3 +xorl 40(%rsi),%ecx +xorl 24(%rsi),%r8d +xorl 8(%rsi),%r9d +xorl 56(%rsi),%eax +movl %ecx,40(%rdi) +movl %r8d,24(%rdi) +movl %r9d,8(%rdi) +movl %eax,56(%rdi) +movd %xmm0,%rcx +movd %xmm1,%r8 +movd %xmm2,%r9 +movd %xmm3,%rax +xorl 60(%rsi),%ecx +xorl 44(%rsi),%r8d +xorl 28(%rsi),%r9d +xorl 12(%rsi),%eax +movl %ecx,60(%rdi) +movl %r8d,44(%rdi) +movl %r9d,28(%rdi) +movl %eax,12(%rdi) +movq 408(%rsp),%r9 +movl 16(%rsp),%ecx +movl 4+32(%rsp),%r8d +add $1,%rcx +shl $32,%r8 +add %r8,%rcx +mov %rcx,%r8 +shr $32,%r8 +movl %ecx,16(%rsp) +movl %r8d,4+32(%rsp) +cmp $64,%r9 + +ja ._bytesatleast65 + +jae ._bytesatleast64 + +mov %rdi,%rsi +mov %rdx,%rdi +mov %r9,%rcx +rep movsb + +._bytesatleast64: +._done: +movq 352(%rsp),%r11 +movq 360(%rsp),%r12 +movq 368(%rsp),%r13 +movq 376(%rsp),%r14 +movq 384(%rsp),%r15 +movq 392(%rsp),%rbx +movq 400(%rsp),%rbp +add %r11,%rsp +xor %rax,%rax +xor %rdx,%rdx +ret + +._bytesatleast65: +sub $64,%r9 +add $64,%rdi +add $64,%rsi +jmp ._bytesbetween1and255 + +#endif + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa20/ref/api.h b/src/libsodium/src/libsodium/crypto_stream/salsa20/ref/api.h new file mode 100644 index 00000000..4e9a8fc1 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa20/ref/api.h @@ -0,0 +1,8 @@ + +#include "crypto_stream_salsa20.h" + +#define crypto_stream_salsa20_implementation_name \ + crypto_stream_salsa20_ref_implementation_name + +#define crypto_stream crypto_stream_salsa20_ref +#define crypto_stream_xor crypto_stream_salsa20_ref_xor diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa20/ref/stream_salsa20_ref.c b/src/libsodium/src/libsodium/crypto_stream/salsa20/ref/stream_salsa20_ref.c new file mode 100644 index 00000000..66015e32 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa20/ref/stream_salsa20_ref.c @@ -0,0 +1,55 @@ +/* +version 20080913 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" +#include "crypto_core_salsa20.h" + +#ifndef HAVE_AMD64_ASM + +typedef unsigned int uint32; + +static const unsigned char sigma[16] = { + 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k' +}; + +int crypto_stream( + unsigned char *c,unsigned long long clen, + const unsigned char *n, + const unsigned char *k +) +{ + unsigned char in[16]; + unsigned char block[64]; + unsigned long long i; + unsigned int u; + + if (!clen) return 0; + + for (i = 0;i < 8;++i) in[i] = n[i]; + for (i = 8;i < 16;++i) in[i] = 0; + + while (clen >= 64) { + crypto_core_salsa20(c,in,k,sigma); + + u = 1; + for (i = 8;i < 16;++i) { + u += (unsigned int) in[i]; + in[i] = u; + u >>= 8; + } + + clen -= 64; + c += 64; + } + + if (clen) { + crypto_core_salsa20(block,in,k,sigma); + for (i = 0;i < clen;++i) c[i] = block[i]; + } + return 0; +} + +#endif diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa20/ref/xor_salsa20_ref.c b/src/libsodium/src/libsodium/crypto_stream/salsa20/ref/xor_salsa20_ref.c new file mode 100644 index 00000000..7d728b27 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa20/ref/xor_salsa20_ref.c @@ -0,0 +1,58 @@ +/* +version 20080913 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" +#include "crypto_core_salsa20.h" + +#ifndef HAVE_AMD64_ASM + +typedef unsigned int uint32; + +static const unsigned char sigma[16] = { + 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k' +}; + +int crypto_stream_xor( + unsigned char *c, + const unsigned char *m,unsigned long long mlen, + const unsigned char *n, + const unsigned char *k +) +{ + unsigned char in[16]; + unsigned char block[64]; + unsigned long long i; + unsigned int u; + + if (!mlen) return 0; + + for (i = 0;i < 8;++i) in[i] = n[i]; + for (i = 8;i < 16;++i) in[i] = 0; + + while (mlen >= 64) { + crypto_core_salsa20(block,in,k,sigma); + for (i = 0;i < 64;++i) c[i] = m[i] ^ block[i]; + + u = 1; + for (i = 8;i < 16;++i) { + u += (unsigned int) in[i]; + in[i] = u; + u >>= 8; + } + + mlen -= 64; + c += 64; + m += 64; + } + + if (mlen) { + crypto_core_salsa20(block,in,k,sigma); + for (i = 0;i < mlen;++i) c[i] = m[i] ^ block[i]; + } + return 0; +} + +#endif diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa2012/ref/api.h b/src/libsodium/src/libsodium/crypto_stream/salsa2012/ref/api.h new file mode 100644 index 00000000..216d529c --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa2012/ref/api.h @@ -0,0 +1,11 @@ + +#include "crypto_stream_salsa2012.h" + +#define crypto_stream crypto_stream_salsa2012 +#define crypto_stream_xor crypto_stream_salsa2012_xor +#define crypto_stream_KEYBYTES crypto_stream_salsa2012_KEYBYTES +#define crypto_stream_NONCEBYTES crypto_stream_salsa2012_NONCEBYTES +#define crypto_stream_PRIMITIVE "salsa2012" +#define crypto_stream_IMPLEMENTATION crypto_stream_salsa2012_IMPLEMENTATION +#define crypto_stream_VERSION crypto_stream_salsa2012_VERSION + diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012.c b/src/libsodium/src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012.c new file mode 100644 index 00000000..793adaa5 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012.c @@ -0,0 +1,51 @@ +/* +version 20080913 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" +#include "crypto_core_salsa2012.h" + +typedef unsigned int uint32; + +static const unsigned char sigma[16] = { + 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k' +}; + +int crypto_stream( + unsigned char *c,unsigned long long clen, + const unsigned char *n, + const unsigned char *k +) +{ + unsigned char in[16]; + unsigned char block[64]; + unsigned long long i; + unsigned int u; + + if (!clen) return 0; + + for (i = 0;i < 8;++i) in[i] = n[i]; + for (i = 8;i < 16;++i) in[i] = 0; + + while (clen >= 64) { + crypto_core_salsa2012(c,in,k,sigma); + + u = 1; + for (i = 8;i < 16;++i) { + u += (unsigned int) in[i]; + in[i] = u; + u >>= 8; + } + + clen -= 64; + c += 64; + } + + if (clen) { + crypto_core_salsa2012(block,in,k,sigma); + for (i = 0;i < clen;++i) c[i] = block[i]; + } + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa2012/ref/xor_salsa2012.c b/src/libsodium/src/libsodium/crypto_stream/salsa2012/ref/xor_salsa2012.c new file mode 100644 index 00000000..5970ca46 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa2012/ref/xor_salsa2012.c @@ -0,0 +1,54 @@ +/* +version 20080913 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" +#include "crypto_core_salsa2012.h" + +typedef unsigned int uint32; + +static const unsigned char sigma[16] = { + 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k' +}; + +int crypto_stream_xor( + unsigned char *c, + const unsigned char *m,unsigned long long mlen, + const unsigned char *n, + const unsigned char *k +) +{ + unsigned char in[16]; + unsigned char block[64]; + unsigned long long i; + unsigned int u; + + if (!mlen) return 0; + + for (i = 0;i < 8;++i) in[i] = n[i]; + for (i = 8;i < 16;++i) in[i] = 0; + + while (mlen >= 64) { + crypto_core_salsa2012(block,in,k,sigma); + for (i = 0;i < 64;++i) c[i] = m[i] ^ block[i]; + + u = 1; + for (i = 8;i < 16;++i) { + u += (unsigned int) in[i]; + in[i] = u; + u >>= 8; + } + + mlen -= 64; + c += 64; + m += 64; + } + + if (mlen) { + crypto_core_salsa2012(block,in,k,sigma); + for (i = 0;i < mlen;++i) c[i] = m[i] ^ block[i]; + } + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa2012/stream_salsa2012_api.c b/src/libsodium/src/libsodium/crypto_stream/salsa2012/stream_salsa2012_api.c new file mode 100644 index 00000000..f43d009c --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa2012/stream_salsa2012_api.c @@ -0,0 +1,16 @@ +#include "crypto_stream_salsa2012.h" + +size_t +crypto_stream_salsa2012_keybytes(void) { + return crypto_stream_salsa2012_KEYBYTES; +} + +size_t +crypto_stream_salsa2012_noncebytes(void) { + return crypto_stream_salsa2012_NONCEBYTES; +} + +const char * +crypto_stream_salsa2012_primitive(void) { + return "salsa2012"; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa208/ref/api.h b/src/libsodium/src/libsodium/crypto_stream/salsa208/ref/api.h new file mode 100644 index 00000000..be11510e --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa208/ref/api.h @@ -0,0 +1,10 @@ + +#include "crypto_stream_salsa208.h" + +#define crypto_stream crypto_stream_salsa208 +#define crypto_stream_xor crypto_stream_salsa208_xor +#define crypto_stream_KEYBYTES crypto_stream_salsa208_KEYBYTES +#define crypto_stream_NONCEBYTES crypto_stream_salsa208_NONCEBYTES +#define crypto_stream_PRIMITIVE "salsa208" +#define crypto_stream_IMPLEMENTATION crypto_stream_salsa208_IMPLEMENTATION +#define crypto_stream_VERSION crypto_stream_salsa208_VERSION diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa208/ref/stream_salsa208.c b/src/libsodium/src/libsodium/crypto_stream/salsa208/ref/stream_salsa208.c new file mode 100644 index 00000000..08890021 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa208/ref/stream_salsa208.c @@ -0,0 +1,51 @@ +/* +version 20080913 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" +#include "crypto_core_salsa208.h" + +typedef unsigned int uint32; + +static const unsigned char sigma[16] = { + 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k' +}; + +int crypto_stream( + unsigned char *c,unsigned long long clen, + const unsigned char *n, + const unsigned char *k +) +{ + unsigned char in[16]; + unsigned char block[64]; + unsigned long long i; + unsigned int u; + + if (!clen) return 0; + + for (i = 0;i < 8;++i) in[i] = n[i]; + for (i = 8;i < 16;++i) in[i] = 0; + + while (clen >= 64) { + crypto_core_salsa208(c,in,k,sigma); + + u = 1; + for (i = 8;i < 16;++i) { + u += (unsigned int) in[i]; + in[i] = u; + u >>= 8; + } + + clen -= 64; + c += 64; + } + + if (clen) { + crypto_core_salsa208(block,in,k,sigma); + for (i = 0;i < clen;++i) c[i] = block[i]; + } + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa208/ref/xor_salsa208.c b/src/libsodium/src/libsodium/crypto_stream/salsa208/ref/xor_salsa208.c new file mode 100644 index 00000000..9f6dac55 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa208/ref/xor_salsa208.c @@ -0,0 +1,54 @@ +/* +version 20080913 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" +#include "crypto_core_salsa208.h" + +typedef unsigned int uint32; + +static const unsigned char sigma[16] = { + 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k' +}; + +int crypto_stream_xor( + unsigned char *c, + const unsigned char *m,unsigned long long mlen, + const unsigned char *n, + const unsigned char *k +) +{ + unsigned char in[16]; + unsigned char block[64]; + unsigned long long i; + unsigned int u; + + if (!mlen) return 0; + + for (i = 0;i < 8;++i) in[i] = n[i]; + for (i = 8;i < 16;++i) in[i] = 0; + + while (mlen >= 64) { + crypto_core_salsa208(block,in,k,sigma); + for (i = 0;i < 64;++i) c[i] = m[i] ^ block[i]; + + u = 1; + for (i = 8;i < 16;++i) { + u += (unsigned int) in[i]; + in[i] = u; + u >>= 8; + } + + mlen -= 64; + c += 64; + m += 64; + } + + if (mlen) { + crypto_core_salsa208(block,in,k,sigma); + for (i = 0;i < mlen;++i) c[i] = m[i] ^ block[i]; + } + return 0; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/salsa208/stream_salsa208_api.c b/src/libsodium/src/libsodium/crypto_stream/salsa208/stream_salsa208_api.c new file mode 100644 index 00000000..7b160b35 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/salsa208/stream_salsa208_api.c @@ -0,0 +1,16 @@ +#include "crypto_stream_salsa208.h" + +size_t +crypto_stream_salsa208_keybytes(void) { + return crypto_stream_salsa208_KEYBYTES; +} + +size_t +crypto_stream_salsa208_noncebytes(void) { + return crypto_stream_salsa208_NONCEBYTES; +} + +const char * +crypto_stream_salsa208_primitive(void) { + return "salsa208"; +} diff --git a/src/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/api.h b/src/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/api.h new file mode 100644 index 00000000..49b84bca --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/api.h @@ -0,0 +1,11 @@ + +#include "crypto_stream_xsalsa20.h" + +#define crypto_stream crypto_stream_xsalsa20 +#define crypto_stream_xor crypto_stream_xsalsa20_xor +#define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES +#define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES +#define crypto_stream_PRIMITIVE "xsalsa20" +#define crypto_stream_IMPLEMENTATION crypto_stream_xsalsa20_IMPLEMENTATION +#define crypto_stream_VERSION crypto_stream_xsalsa20_VERSION + diff --git a/src/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/stream_xsalsa20.c b/src/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/stream_xsalsa20.c new file mode 100644 index 00000000..50f87887 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/stream_xsalsa20.c @@ -0,0 +1,24 @@ +/* +version 20080914 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" +#include "crypto_core_hsalsa20.h" +#include "crypto_stream_salsa20.h" + +static const unsigned char sigma[16] = { + 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k' +}; + +int crypto_stream( + unsigned char *c,unsigned long long clen, + const unsigned char *n, + const unsigned char *k +) +{ + unsigned char subkey[32]; + crypto_core_hsalsa20(subkey,n,k,sigma); + return crypto_stream_salsa20(c,clen,n + 16,subkey); +} diff --git a/src/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/xor_xsalsa20.c b/src/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/xor_xsalsa20.c new file mode 100644 index 00000000..14cce18a --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/xor_xsalsa20.c @@ -0,0 +1,25 @@ +/* +version 20080913 +D. J. Bernstein +Public domain. +*/ + +#include "api.h" +#include "crypto_core_hsalsa20.h" +#include "crypto_stream_salsa20.h" + +static const unsigned char sigma[16] = { + 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k' +}; + +int crypto_stream_xor( + unsigned char *c, + const unsigned char *m,unsigned long long mlen, + const unsigned char *n, + const unsigned char *k +) +{ + unsigned char subkey[32]; + crypto_core_hsalsa20(subkey,n,k,sigma); + return crypto_stream_salsa20_xor(c,m,mlen,n + 16,subkey); +} diff --git a/src/libsodium/src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20_api.c b/src/libsodium/src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20_api.c new file mode 100644 index 00000000..def5f499 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20_api.c @@ -0,0 +1,16 @@ +#include "crypto_stream_xsalsa20.h" + +size_t +crypto_stream_xsalsa20_keybytes(void) { + return crypto_stream_xsalsa20_KEYBYTES; +} + +size_t +crypto_stream_xsalsa20_noncebytes(void) { + return crypto_stream_xsalsa20_NONCEBYTES; +} + +const char * +crypto_stream_xsalsa20_primitive(void) { + return "xsalsa20"; +} diff --git a/src/libsodium/src/libsodium/crypto_verify/16/ref/api.h b/src/libsodium/src/libsodium/crypto_verify/16/ref/api.h new file mode 100644 index 00000000..8dcaf872 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_verify/16/ref/api.h @@ -0,0 +1,2 @@ + +#include "crypto_verify_16.h" diff --git a/src/libsodium/src/libsodium/crypto_verify/16/ref/verify_16.c b/src/libsodium/src/libsodium/crypto_verify/16/ref/verify_16.c new file mode 100644 index 00000000..f7e33f1c --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_verify/16/ref/verify_16.c @@ -0,0 +1,24 @@ +#include "api.h" + +int crypto_verify_16(const unsigned char *x,const unsigned char *y) +{ + unsigned int differentbits = 0; +#define F(i) differentbits |= x[i] ^ y[i]; + F(0) + F(1) + F(2) + F(3) + F(4) + F(5) + F(6) + F(7) + F(8) + F(9) + F(10) + F(11) + F(12) + F(13) + F(14) + F(15) + return (1 & ((differentbits - 1) >> 8)) - 1; +} diff --git a/src/libsodium/src/libsodium/crypto_verify/16/verify_16_api.c b/src/libsodium/src/libsodium/crypto_verify/16/verify_16_api.c new file mode 100644 index 00000000..757f9b63 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_verify/16/verify_16_api.c @@ -0,0 +1,6 @@ +#include "crypto_verify_16.h" + +size_t +crypto_verify_16_bytes(void) { + return crypto_verify_16_BYTES; +} diff --git a/src/libsodium/src/libsodium/crypto_verify/32/ref/api.h b/src/libsodium/src/libsodium/crypto_verify/32/ref/api.h new file mode 100644 index 00000000..e2e3a1c7 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_verify/32/ref/api.h @@ -0,0 +1,2 @@ + +#include "crypto_verify_32.h" diff --git a/src/libsodium/src/libsodium/crypto_verify/32/ref/verify_32.c b/src/libsodium/src/libsodium/crypto_verify/32/ref/verify_32.c new file mode 100644 index 00000000..31c36971 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_verify/32/ref/verify_32.c @@ -0,0 +1,40 @@ +#include "api.h" + +int crypto_verify_32(const unsigned char *x,const unsigned char *y) +{ + unsigned int differentbits = 0; +#define F(i) differentbits |= x[i] ^ y[i]; + F(0) + F(1) + F(2) + F(3) + F(4) + F(5) + F(6) + F(7) + F(8) + F(9) + F(10) + F(11) + F(12) + F(13) + F(14) + F(15) + F(16) + F(17) + F(18) + F(19) + F(20) + F(21) + F(22) + F(23) + F(24) + F(25) + F(26) + F(27) + F(28) + F(29) + F(30) + F(31) + return (1 & ((differentbits - 1) >> 8)) - 1; +} diff --git a/src/libsodium/src/libsodium/crypto_verify/32/verify_32_api.c b/src/libsodium/src/libsodium/crypto_verify/32/verify_32_api.c new file mode 100644 index 00000000..6241c4d3 --- /dev/null +++ b/src/libsodium/src/libsodium/crypto_verify/32/verify_32_api.c @@ -0,0 +1,6 @@ +#include "crypto_verify_32.h" + +size_t +crypto_verify_32_bytes(void) { + return crypto_verify_32_BYTES; +} diff --git a/src/libsodium/src/libsodium/include/Makefile.am b/src/libsodium/src/libsodium/include/Makefile.am new file mode 100644 index 00000000..50e787a6 --- /dev/null +++ b/src/libsodium/src/libsodium/include/Makefile.am @@ -0,0 +1,61 @@ + +SODIUM_EXPORT = \ + sodium.h \ + sodium/core.h \ + sodium/crypto_auth.h \ + sodium/crypto_auth_hmacsha256.h \ + sodium/crypto_auth_hmacsha512256.h \ + sodium/crypto_box.h \ + sodium/crypto_box_curve25519xsalsa20poly1305.h \ + sodium/crypto_core_hsalsa20.h \ + sodium/crypto_core_salsa20.h \ + sodium/crypto_core_salsa2012.h \ + sodium/crypto_core_salsa208.h \ + sodium/crypto_generichash.h \ + sodium/crypto_generichash_blake2b.h \ + sodium/crypto_hash.h \ + sodium/crypto_hash_sha256.h \ + sodium/crypto_hash_sha512.h \ + sodium/crypto_hashblocks_sha256.h \ + sodium/crypto_hashblocks_sha512.h \ + sodium/crypto_onetimeauth.h \ + sodium/crypto_onetimeauth_poly1305.h \ + sodium/crypto_onetimeauth_poly1305_53.h \ + sodium/crypto_onetimeauth_poly1305_donna.h \ + sodium/crypto_scalarmult.h \ + sodium/crypto_scalarmult_curve25519.h \ + sodium/crypto_secretbox.h \ + sodium/crypto_secretbox_xsalsa20poly1305.h \ + sodium/crypto_shorthash.h \ + sodium/crypto_shorthash_siphash24.h \ + sodium/crypto_sign.h \ + sodium/crypto_sign_ed25519.h \ + sodium/crypto_sign_edwards25519sha512batch.h \ + sodium/crypto_stream.h \ + sodium/crypto_stream_aes128ctr.h \ + sodium/crypto_stream_aes256estream.h \ + sodium/crypto_stream_salsa20.h \ + sodium/crypto_stream_salsa2012.h \ + sodium/crypto_stream_salsa208.h \ + sodium/crypto_stream_xsalsa20.h \ + sodium/crypto_int32.h \ + sodium/crypto_int64.h \ + sodium/crypto_uint16.h \ + sodium/crypto_uint32.h \ + sodium/crypto_uint64.h \ + sodium/crypto_uint8.h \ + sodium/crypto_verify_16.h \ + sodium/crypto_verify_32.h \ + sodium/export.h \ + sodium/randombytes.h \ + sodium/randombytes_salsa20_random.h \ + sodium/randombytes_sysrandom.h \ + sodium/utils.h \ + sodium/version.h + +EXTRA_SRC = $(SODIUM_EXPORT) \ + sodium/crypto_scalarmult_curve25519.h.in \ + sodium/crypto_stream_salsa20.h.in \ + sodium/version.h.in + +nobase_include_HEADERS = $(SODIUM_EXPORT) diff --git a/src/libsodium/src/libsodium/include/Makefile.in b/src/libsodium/src/libsodium/include/Makefile.in new file mode 100644 index 00000000..a74029be --- /dev/null +++ b/src/libsodium/src/libsodium/include/Makefile.in @@ -0,0 +1,627 @@ +# Makefile.in generated by automake 1.14 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/libsodium/include +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(nobase_include_HEADERS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ + $(top_srcdir)/m4/ax_check_link_flag.m4 \ + $(top_srcdir)/m4/ld-output-def.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(includedir)" +HEADERS = $(nobase_include_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CWFLAGS = @CWFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_AMD64_ASM_V = @HAVE_AMD64_ASM_V@ +HAVE_CPUID_V = @HAVE_CPUID_V@ +HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@ +HAVE_TI_MODE_V = @HAVE_TI_MODE_V@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISODATE = @ISODATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_EXTRA_FLAGS = @LIBTOOL_EXTRA_FLAGS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SAFECODE_HOME = @SAFECODE_HOME@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SODIUM_LIBRARY_VERSION = @SODIUM_LIBRARY_VERSION@ +SODIUM_LIBRARY_VERSION_MAJOR = @SODIUM_LIBRARY_VERSION_MAJOR@ +SODIUM_LIBRARY_VERSION_MINOR = @SODIUM_LIBRARY_VERSION_MINOR@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SODIUM_EXPORT = \ + sodium.h \ + sodium/core.h \ + sodium/crypto_auth.h \ + sodium/crypto_auth_hmacsha256.h \ + sodium/crypto_auth_hmacsha512256.h \ + sodium/crypto_box.h \ + sodium/crypto_box_curve25519xsalsa20poly1305.h \ + sodium/crypto_core_hsalsa20.h \ + sodium/crypto_core_salsa20.h \ + sodium/crypto_core_salsa2012.h \ + sodium/crypto_core_salsa208.h \ + sodium/crypto_generichash.h \ + sodium/crypto_generichash_blake2b.h \ + sodium/crypto_hash.h \ + sodium/crypto_hash_sha256.h \ + sodium/crypto_hash_sha512.h \ + sodium/crypto_hashblocks_sha256.h \ + sodium/crypto_hashblocks_sha512.h \ + sodium/crypto_onetimeauth.h \ + sodium/crypto_onetimeauth_poly1305.h \ + sodium/crypto_onetimeauth_poly1305_53.h \ + sodium/crypto_onetimeauth_poly1305_donna.h \ + sodium/crypto_scalarmult.h \ + sodium/crypto_scalarmult_curve25519.h \ + sodium/crypto_secretbox.h \ + sodium/crypto_secretbox_xsalsa20poly1305.h \ + sodium/crypto_shorthash.h \ + sodium/crypto_shorthash_siphash24.h \ + sodium/crypto_sign.h \ + sodium/crypto_sign_ed25519.h \ + sodium/crypto_sign_edwards25519sha512batch.h \ + sodium/crypto_stream.h \ + sodium/crypto_stream_aes128ctr.h \ + sodium/crypto_stream_aes256estream.h \ + sodium/crypto_stream_salsa20.h \ + sodium/crypto_stream_salsa2012.h \ + sodium/crypto_stream_salsa208.h \ + sodium/crypto_stream_xsalsa20.h \ + sodium/crypto_int32.h \ + sodium/crypto_int64.h \ + sodium/crypto_uint16.h \ + sodium/crypto_uint32.h \ + sodium/crypto_uint64.h \ + sodium/crypto_uint8.h \ + sodium/crypto_verify_16.h \ + sodium/crypto_verify_32.h \ + sodium/export.h \ + sodium/randombytes.h \ + sodium/randombytes_salsa20_random.h \ + sodium/randombytes_sysrandom.h \ + sodium/utils.h \ + sodium/version.h + +EXTRA_SRC = $(SODIUM_EXPORT) \ + sodium/crypto_scalarmult_curve25519.h.in \ + sodium/crypto_stream_salsa20.h.in \ + sodium/version.h.in + +nobase_include_HEADERS = $(SODIUM_EXPORT) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libsodium/include/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/libsodium/include/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-nobase_includeHEADERS: $(nobase_include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \ + echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \ + $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-nobase_includeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-nobase_includeHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man \ + install-nobase_includeHEADERS install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-nobase_includeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/libsodium/src/libsodium/include/sodium.h b/src/libsodium/src/libsodium/include/sodium.h new file mode 100644 index 00000000..ac37b16a --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium.h @@ -0,0 +1,48 @@ + +#ifndef __SODIUM_H__ +#define __SODIUM_H__ + +#include <sodium/core.h> +#include <sodium/crypto_auth.h> +#include <sodium/crypto_auth_hmacsha256.h> +#include <sodium/crypto_auth_hmacsha512256.h> +#include <sodium/crypto_box.h> +#include <sodium/crypto_box_curve25519xsalsa20poly1305.h> +#include <sodium/crypto_core_hsalsa20.h> +#include <sodium/crypto_core_salsa20.h> +#include <sodium/crypto_core_salsa2012.h> +#include <sodium/crypto_core_salsa208.h> +#include <sodium/crypto_generichash.h> +#include <sodium/crypto_generichash_blake2b.h> +#include <sodium/crypto_hash.h> +#include <sodium/crypto_hash_sha256.h> +#include <sodium/crypto_hash_sha512.h> +#include <sodium/crypto_hashblocks_sha256.h> +#include <sodium/crypto_hashblocks_sha512.h> +#include <sodium/crypto_onetimeauth.h> +#include <sodium/crypto_onetimeauth_poly1305.h> +#include <sodium/crypto_scalarmult.h> +#include <sodium/crypto_scalarmult_curve25519.h> +#include <sodium/crypto_secretbox.h> +#include <sodium/crypto_secretbox_xsalsa20poly1305.h> +#include <sodium/crypto_shorthash.h> +#include <sodium/crypto_shorthash_siphash24.h> +#include <sodium/crypto_sign.h> +#include <sodium/crypto_sign_ed25519.h> +#include <sodium/crypto_sign_edwards25519sha512batch.h> +#include <sodium/crypto_stream.h> +#include <sodium/crypto_stream_aes128ctr.h> +#include <sodium/crypto_stream_aes256estream.h> +#include <sodium/crypto_stream_salsa20.h> +#include <sodium/crypto_stream_salsa2012.h> +#include <sodium/crypto_stream_salsa208.h> +#include <sodium/crypto_stream_xsalsa20.h> +#include <sodium/crypto_verify_16.h> +#include <sodium/crypto_verify_32.h> +#include <sodium/randombytes.h> +#include <sodium/randombytes_salsa20_random.h> +#include <sodium/randombytes_sysrandom.h> +#include <sodium/utils.h> +#include <sodium/version.h> + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/core.h b/src/libsodium/src/libsodium/include/sodium/core.h new file mode 100644 index 00000000..6be22104 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/core.h @@ -0,0 +1,18 @@ + +#ifndef __SODIUM_CORE_H__ +#define __SODIUM_CORE_H__ + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int sodium_init(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_auth.h b/src/libsodium/src/libsodium/include/sodium/crypto_auth.h new file mode 100644 index 00000000..b28533d0 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_auth.h @@ -0,0 +1,36 @@ +#ifndef crypto_auth_H +#define crypto_auth_H + +#include <stddef.h> + +#include "crypto_auth_hmacsha512256.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_auth_BYTES crypto_auth_hmacsha512256_BYTES +SODIUM_EXPORT +size_t crypto_auth_bytes(void); + +#define crypto_auth_KEYBYTES crypto_auth_hmacsha512256_KEYBYTES +SODIUM_EXPORT +size_t crypto_auth_keybytes(void); + +#define crypto_auth_PRIMITIVE "hmacsha512256" +SODIUM_EXPORT +const char *crypto_auth_primitive(void); + +SODIUM_EXPORT +int crypto_auth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k); + +SODIUM_EXPORT +int crypto_auth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h b/src/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h new file mode 100644 index 00000000..a0b01004 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h @@ -0,0 +1,36 @@ +#ifndef crypto_auth_hmacsha256_H +#define crypto_auth_hmacsha256_H + +#include <stddef.h> +#include "export.h" + +#define crypto_auth_hmacsha256_BYTES 32U +#define crypto_auth_hmacsha256_KEYBYTES 32U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_bytes(void); + +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_keybytes(void); + +SODIUM_EXPORT +const char * crypto_auth_hmacsha256_primitive(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_verify(const unsigned char *,const unsigned char *,unsigned long long,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_auth_hmacsha256_ref crypto_auth_hmacsha256 +#define crypto_auth_hmacsha256_ref_verify crypto_auth_hmacsha256_verify + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h b/src/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h new file mode 100644 index 00000000..d46653c6 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h @@ -0,0 +1,36 @@ +#ifndef crypto_auth_hmacsha512256_H +#define crypto_auth_hmacsha512256_H + +#include <stddef.h> +#include "export.h" + +#define crypto_auth_hmacsha512256_BYTES 32U +#define crypto_auth_hmacsha512256_KEYBYTES 32U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_bytes(void); + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_keybytes(void); + +SODIUM_EXPORT +const char * crypto_auth_hmacsha512256_primitive(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_verify(const unsigned char *,const unsigned char *,unsigned long long,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_auth_hmacsha512256_ref crypto_auth_hmacsha512256 +#define crypto_auth_hmacsha512256_ref_verify crypto_auth_hmacsha512256_verify + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_box.h b/src/libsodium/src/libsodium/include/sodium/crypto_box.h new file mode 100644 index 00000000..a2ff0a1e --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_box.h @@ -0,0 +1,83 @@ +#ifndef crypto_box_H +#define crypto_box_H + +/* + * THREAD SAFETY: crypto_box_keypair() is thread-safe, + * provided that you called sodium_init() once before using any + * other libsodium function. + * Other functions are always thread-safe. + */ + +#include <stddef.h> + +#include "crypto_box_curve25519xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_box_publickeybytes(void); + +#define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_box_secretkeybytes(void); + +#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES +SODIUM_EXPORT +size_t crypto_box_beforenmbytes(void); + +#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_box_noncebytes(void); + +#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_box_zerobytes(void); + +#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_box_boxzerobytes(void); + +#define crypto_box_MACBYTES crypto_box_curve25519xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_box_macbytes(void); + +#define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_box_primitive(void); + +SODIUM_EXPORT +int crypto_box_keypair(unsigned char *pk, unsigned char *sk); + +SODIUM_EXPORT +int crypto_box_beforenm(unsigned char *k, const unsigned char *pk, + const unsigned char *sk); + +SODIUM_EXPORT +int crypto_box_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k); + +SODIUM_EXPORT +int crypto_box_open_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k); + +SODIUM_EXPORT +int crypto_box(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk); + +SODIUM_EXPORT +int crypto_box_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h b/src/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h new file mode 100644 index 00000000..d7b48c0c --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h @@ -0,0 +1,72 @@ +#ifndef crypto_box_curve25519xsalsa20poly1305_H +#define crypto_box_curve25519xsalsa20poly1305_H + +#include <stddef.h> +#include "export.h" + +#define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES 32U +#define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES 32U +#define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES 32U +#define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES 24U +#define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES 32U +#define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES 16U +#define crypto_box_curve25519xsalsa20poly1305_MACBYTES (crypto_box_curve25519xsalsa20poly1305_ZEROBYTES - crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES) + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_publickeybytes(void); + +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void); + +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void); + +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_noncebytes(void); + +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_zerobytes(void); + +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void); + +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_macbytes(void); + +SODIUM_EXPORT +const char * crypto_box_curve25519xsalsa20poly1305_primitive(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *,unsigned char *); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_box_curve25519xsalsa20poly1305_ref crypto_box_curve25519xsalsa20poly1305 +#define crypto_box_curve25519xsalsa20poly1305_ref_open crypto_box_curve25519xsalsa20poly1305_open +#define crypto_box_curve25519xsalsa20poly1305_ref_keypair crypto_box_curve25519xsalsa20poly1305_keypair +#define crypto_box_curve25519xsalsa20poly1305_ref_beforenm crypto_box_curve25519xsalsa20poly1305_beforenm +#define crypto_box_curve25519xsalsa20poly1305_ref_afternm crypto_box_curve25519xsalsa20poly1305_afternm +#define crypto_box_curve25519xsalsa20poly1305_ref_open_afternm crypto_box_curve25519xsalsa20poly1305_open_afternm + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_core_hsalsa20.h b/src/libsodium/src/libsodium/include/sodium/crypto_core_hsalsa20.h new file mode 100644 index 00000000..52d4f08e --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_core_hsalsa20.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_hsalsa20_H +#define crypto_core_hsalsa20_H + +#include <stddef.h> +#include "export.h" + +#define crypto_core_hsalsa20_OUTPUTBYTES 32U +#define crypto_core_hsalsa20_INPUTBYTES 16U +#define crypto_core_hsalsa20_KEYBYTES 32U +#define crypto_core_hsalsa20_CONSTBYTES 16U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_core_hsalsa20_outputbytes(void); + +SODIUM_EXPORT +size_t crypto_core_hsalsa20_inputbytes(void); + +SODIUM_EXPORT +size_t crypto_core_hsalsa20_keybytes(void); + +SODIUM_EXPORT +size_t crypto_core_hsalsa20_constbytes(void); + +SODIUM_EXPORT +const char * crypto_core_hsalsa20_primitive(void); + +SODIUM_EXPORT +int crypto_core_hsalsa20(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_core_hsalsa20_ref2 crypto_core_hsalsa20 + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_core_salsa20.h b/src/libsodium/src/libsodium/include/sodium/crypto_core_salsa20.h new file mode 100644 index 00000000..f2592bca --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_core_salsa20.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_salsa20_H +#define crypto_core_salsa20_H + +#include <stddef.h> +#include "export.h" + +#define crypto_core_salsa20_OUTPUTBYTES 64U +#define crypto_core_salsa20_INPUTBYTES 16U +#define crypto_core_salsa20_KEYBYTES 32U +#define crypto_core_salsa20_CONSTBYTES 16U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_core_salsa20_outputbytes(void); + +SODIUM_EXPORT +size_t crypto_core_salsa20_inputbytes(void); + +SODIUM_EXPORT +size_t crypto_core_salsa20_keybytes(void); + +SODIUM_EXPORT +size_t crypto_core_salsa20_constbytes(void); + +SODIUM_EXPORT +const char * crypto_core_salsa20_primitive(void); + +SODIUM_EXPORT +int crypto_core_salsa20(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_core_salsa20_ref crypto_core_salsa20 + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_core_salsa2012.h b/src/libsodium/src/libsodium/include/sodium/crypto_core_salsa2012.h new file mode 100644 index 00000000..b5decc73 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_core_salsa2012.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_salsa2012_H +#define crypto_core_salsa2012_H + +#include <stddef.h> +#include "export.h" + +#define crypto_core_salsa2012_OUTPUTBYTES 64U +#define crypto_core_salsa2012_INPUTBYTES 16U +#define crypto_core_salsa2012_KEYBYTES 32U +#define crypto_core_salsa2012_CONSTBYTES 16U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_core_salsa2012_outputbytes(void); + +SODIUM_EXPORT +size_t crypto_core_salsa2012_inputbytes(void); + +SODIUM_EXPORT +size_t crypto_core_salsa2012_keybytes(void); + +SODIUM_EXPORT +size_t crypto_core_salsa2012_constbytes(void); + +SODIUM_EXPORT +const char * crypto_core_salsa2012_primitive(void); + +SODIUM_EXPORT +int crypto_core_salsa2012(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_core_salsa2012_ref crypto_core_salsa2012 + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_core_salsa208.h b/src/libsodium/src/libsodium/include/sodium/crypto_core_salsa208.h new file mode 100644 index 00000000..4cc2fa51 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_core_salsa208.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_salsa208_H +#define crypto_core_salsa208_H + +#include <stddef.h> +#include "export.h" + +#define crypto_core_salsa208_OUTPUTBYTES 64U +#define crypto_core_salsa208_INPUTBYTES 16U +#define crypto_core_salsa208_KEYBYTES 32U +#define crypto_core_salsa208_CONSTBYTES 16U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_core_salsa208_outputbytes(void); + +SODIUM_EXPORT +size_t crypto_core_salsa208_inputbytes(void); + +SODIUM_EXPORT +size_t crypto_core_salsa208_keybytes(void); + +SODIUM_EXPORT +size_t crypto_core_salsa208_constbytes(void); + +SODIUM_EXPORT +const char * crypto_core_salsa208_primitive(void); + +SODIUM_EXPORT +int crypto_core_salsa208(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_core_salsa208_ref crypto_core_salsa208 + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_generichash.h b/src/libsodium/src/libsodium/include/sodium/crypto_generichash.h new file mode 100644 index 00000000..52a16a8c --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_generichash.h @@ -0,0 +1,70 @@ +#ifndef crypto_generichash_H +#define crypto_generichash_H + +#include <stddef.h> + +#include "crypto_generichash_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_generichash_BYTES crypto_generichash_blake2b_BYTES +SODIUM_EXPORT +size_t crypto_generichash_bytes(void); + +#define crypto_generichash_BYTES_MIN crypto_generichash_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_bytes_min(void); + +#define crypto_generichash_BYTES_MAX crypto_generichash_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_bytes_max(void); + +#define crypto_generichash_KEYBYTES crypto_generichash_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_generichash_keybytes(void); + +#define crypto_generichash_KEYBYTES_MIN crypto_generichash_blake2b_KEYBYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_keybytes_min(void); + +#define crypto_generichash_KEYBYTES_MAX crypto_generichash_blake2b_KEYBYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_keybytes_max(void); + +#define crypto_generichash_BLOCKBYTES crypto_generichash_blake2b_BLOCKBYTES +SODIUM_EXPORT +size_t crypto_generichash_blockbytes(void); + +#define crypto_generichash_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_generichash_primitive(void); + +typedef crypto_generichash_blake2b_state crypto_generichash_state; + +SODIUM_EXPORT +int crypto_generichash(unsigned char *out, size_t outlen, + const unsigned char *in, unsigned long long inlen, + const unsigned char *key, size_t keylen); + +SODIUM_EXPORT +int crypto_generichash_init(crypto_generichash_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen); + +SODIUM_EXPORT +int crypto_generichash_update(crypto_generichash_state *state, + const unsigned char *in, + unsigned long long inlen); + +SODIUM_EXPORT +int crypto_generichash_final(crypto_generichash_state *state, + unsigned char *out, const size_t outlen); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h b/src/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h new file mode 100644 index 00000000..108541d1 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h @@ -0,0 +1,87 @@ +#ifndef crypto_generichash_blake2b_H +#define crypto_generichash_blake2b_H + +#include <stddef.h> +#include <stdint.h> +#include <stdlib.h> + +#include "export.h" + +#define crypto_generichash_blake2b_BYTES 32U +#define crypto_generichash_blake2b_BYTES_MIN 16U +#define crypto_generichash_blake2b_BYTES_MAX 64U +#define crypto_generichash_blake2b_KEYBYTES 32U +#define crypto_generichash_blake2b_KEYBYTES_MIN 16U +#define crypto_generichash_blake2b_KEYBYTES_MAX 64U +#define crypto_generichash_blake2b_BLOCKBYTES 128U + +#if defined(_MSC_VER) +# define CRYPTO_ALIGN(x) __declspec(align(x)) +#else +# define CRYPTO_ALIGN(x) __attribute__((aligned(x))) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push, 1) +CRYPTO_ALIGN(64) typedef struct crypto_generichash_blake2b_state { + uint64_t h[8]; + uint64_t t[2]; + uint64_t f[2]; + uint8_t buf[2 * crypto_generichash_blake2b_BLOCKBYTES]; + size_t buflen; + uint8_t last_node; +} crypto_generichash_blake2b_state; +#pragma pack(pop) + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_min(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_max(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_min(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_max(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_blockbytes(void); + +SODIUM_EXPORT +const char * crypto_generichash_blake2b_blockbytes_primitive(void); + +SODIUM_EXPORT +int crypto_generichash_blake2b(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, size_t keylen); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen); + +SODIUM_EXPORT +int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, + const unsigned char *in, + unsigned long long inlen); + +SODIUM_EXPORT +int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, + unsigned char *out, + const size_t outlen); + +#ifdef __cplusplus +} +#endif + +#define crypto_generichash_blake2b_ref crypto_generichash_blake2b +#define crypto_generichash_blake2b_ref_init crypto_generichash_blake2b_init +#define crypto_generichash_blake2b_ref_update crypto_generichash_blake2b_update +#define crypto_generichash_blake2b_ref_final crypto_generichash_blake2b_final + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_hash.h b/src/libsodium/src/libsodium/include/sodium/crypto_hash.h new file mode 100644 index 00000000..738180f4 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_hash.h @@ -0,0 +1,23 @@ +#ifndef crypto_hash_H +#define crypto_hash_H + +#include "crypto_hash_sha512.h" +#include "export.h" + +#define crypto_hash_BYTES crypto_hash_sha512_BYTES +#define crypto_hash_BLOCKBYTES crypto_hash_sha512_BLOCKBYTES +#define crypto_hash_PRIMITIVE "sha512" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_hash(unsigned char *out, const unsigned char *in, + unsigned long long inlen); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h b/src/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h new file mode 100644 index 00000000..ef93f9a4 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h @@ -0,0 +1,29 @@ +#ifndef crypto_hash_sha256_H +#define crypto_hash_sha256_H + +#include <stddef.h> +#include "export.h" + +#define crypto_hash_sha256_BYTES 32U +#define crypto_hash_sha256_BLOCKBYTES 64U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_hash_sha256_bytes(void); + +SODIUM_EXPORT +const char * crypto_hash_sha256_primitive(void); + +SODIUM_EXPORT +int crypto_hash_sha256(unsigned char *,const unsigned char *,unsigned long long); + +#ifdef __cplusplus +} +#endif + +#define crypto_hash_sha256_ref crypto_hash_sha256 + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h b/src/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h new file mode 100644 index 00000000..42cb0a72 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h @@ -0,0 +1,29 @@ +#ifndef crypto_hash_sha512_H +#define crypto_hash_sha512_H + +#include <stddef.h> +#include "export.h" + +#define crypto_hash_sha512_BYTES 64U +#define crypto_hash_sha512_BLOCKBYTES 128U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_hash_sha512_bytes(void); + +SODIUM_EXPORT +const char * crypto_hash_sha512_primitive(void); + +SODIUM_EXPORT +int crypto_hash_sha512(unsigned char *,const unsigned char *,unsigned long long); + +#ifdef __cplusplus +} +#endif + +#define crypto_hash_sha512_ref crypto_hash_sha512 + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_hashblocks_sha256.h b/src/libsodium/src/libsodium/include/sodium/crypto_hashblocks_sha256.h new file mode 100644 index 00000000..734a577f --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_hashblocks_sha256.h @@ -0,0 +1,32 @@ +#ifndef crypto_hashblocks_sha256_H +#define crypto_hashblocks_sha256_H + +#include <stddef.h> +#include "export.h" + +#define crypto_hashblocks_sha256_STATEBYTES 32U +#define crypto_hashblocks_sha256_BLOCKBYTES 64U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_hashblocks_sha256_statebytes(void); + +SODIUM_EXPORT +size_t crypto_hashblocks_sha256_blockbytes(void); + +SODIUM_EXPORT +const char * crypto_hashblocks_sha256_primitive(void); + +SODIUM_EXPORT +int crypto_hashblocks_sha256(unsigned char *,const unsigned char *,unsigned long long); + +#ifdef __cplusplus +} +#endif + +#define crypto_hashblocks_sha256_ref crypto_hashblocks_sha256 + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_hashblocks_sha512.h b/src/libsodium/src/libsodium/include/sodium/crypto_hashblocks_sha512.h new file mode 100644 index 00000000..50ce5fc6 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_hashblocks_sha512.h @@ -0,0 +1,32 @@ +#ifndef crypto_hashblocks_sha512_H +#define crypto_hashblocks_sha512_H + +#include <stddef.h> +#include "export.h" + +#define crypto_hashblocks_sha512_STATEBYTES 64U +#define crypto_hashblocks_sha512_BLOCKBYTES 128U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_hashblocks_sha512_statebytes(void); + +SODIUM_EXPORT +size_t crypto_hashblocks_sha512_blockbytes(void); + +SODIUM_EXPORT +const char * crypto_hashblocks_sha512_primitive(void); + +SODIUM_EXPORT +int crypto_hashblocks_sha512(unsigned char *,const unsigned char *,unsigned long long); + +#ifdef __cplusplus +} +#endif + +#define crypto_hashblocks_sha512_ref crypto_hashblocks_sha512 + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_int32.h b/src/libsodium/src/libsodium/include/sodium/crypto_int32.h new file mode 100644 index 00000000..a22019d8 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_int32.h @@ -0,0 +1,8 @@ +#ifndef crypto_int32_H +#define crypto_int32_H + +#include <stdint.h> + +typedef int32_t crypto_int32; + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_int64.h b/src/libsodium/src/libsodium/include/sodium/crypto_int64.h new file mode 100644 index 00000000..f68a2836 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_int64.h @@ -0,0 +1,8 @@ +#ifndef crypto_int64_H +#define crypto_int64_H + +#include <stdint.h> + +typedef int64_t crypto_int64; + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth.h b/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth.h new file mode 100644 index 00000000..f43d8319 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth.h @@ -0,0 +1,37 @@ +#ifndef crypto_onetimeauth_H +#define crypto_onetimeauth_H + +#include <stddef.h> + +#include "crypto_onetimeauth_poly1305.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_onetimeauth_BYTES crypto_onetimeauth_poly1305_BYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_bytes(void); + +#define crypto_onetimeauth_KEYBYTES crypto_onetimeauth_poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_keybytes(void); + +#define crypto_onetimeauth_PRIMITIVE "poly1305" +SODIUM_EXPORT +const char *crypto_onetimeauth_primitive(void); + +SODIUM_EXPORT +int crypto_onetimeauth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k); + +SODIUM_EXPORT +int crypto_onetimeauth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h b/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h new file mode 100644 index 00000000..e772340a --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h @@ -0,0 +1,65 @@ +#ifndef crypto_onetimeauth_poly1305_H +#define crypto_onetimeauth_poly1305_H + +#include <stddef.h> +#include "export.h" + +#define crypto_onetimeauth_poly1305_BYTES 16U +#define crypto_onetimeauth_poly1305_KEYBYTES 32U +#ifdef __cplusplus +extern "C" { +#endif + +#include <sys/types.h> + +#include <stdint.h> +#include <stdio.h> + +typedef struct crypto_onetimeauth_poly1305_implementation { + const char *(*implementation_name)(void); + int (*onetimeauth)(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k); + int (*onetimeauth_verify)(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k); +} crypto_onetimeauth_poly1305_implementation; + +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_bytes(void); + +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_keybytes(void); + +SODIUM_EXPORT +const char * crypto_onetimeauth_poly1305_primitive(void); + +SODIUM_EXPORT +const char *crypto_onetimeauth_poly1305_implementation_name(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_set_implementation(crypto_onetimeauth_poly1305_implementation *impl); + +SODIUM_EXPORT +crypto_onetimeauth_poly1305_implementation * + crypto_onetimeauth_pick_best_implementation(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305_53.h b/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305_53.h new file mode 100644 index 00000000..cdf93223 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305_53.h @@ -0,0 +1,34 @@ +#ifndef crypto_onetimeauth_poly1305_53_H +#define crypto_onetimeauth_poly1305_53_H + +#include "crypto_onetimeauth_poly1305.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct crypto_onetimeauth_poly1305_implementation + crypto_onetimeauth_poly1305_53_implementation; + +SODIUM_EXPORT +const char *crypto_onetimeauth_poly1305_53_implementation_name(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_53(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_53_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305_donna.h b/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305_donna.h new file mode 100644 index 00000000..a48d7d1f --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305_donna.h @@ -0,0 +1,34 @@ +#ifndef crypto_onetimeauth_poly1305_donna_H +#define crypto_onetimeauth_poly1305_donna_H + +#include "crypto_onetimeauth_poly1305.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct crypto_onetimeauth_poly1305_implementation + crypto_onetimeauth_poly1305_donna_implementation; + +SODIUM_EXPORT +const char *crypto_onetimeauth_poly1305_donna_implementation_name(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_donna(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_donna_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult.h b/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult.h new file mode 100644 index 00000000..3d59b3a2 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult.h @@ -0,0 +1,36 @@ +#ifndef crypto_scalarmult_H +#define crypto_scalarmult_H + +#include <stddef.h> + +#include "crypto_scalarmult_curve25519.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_BYTES crypto_scalarmult_curve25519_BYTES +SODIUM_EXPORT +size_t crypto_scalarmult_bytes(void); + +#define crypto_scalarmult_SCALARBYTES crypto_scalarmult_curve25519_SCALARBYTES +SODIUM_EXPORT +size_t crypto_scalarmult_scalarbytes(void); + +#define crypto_scalarmult_PRIMITIVE "curve25519" +SODIUM_EXPORT +const char *crypto_scalarmult_primitive(void); + +SODIUM_EXPORT +int crypto_scalarmult_base(unsigned char *q, const unsigned char *n); + +SODIUM_EXPORT +int crypto_scalarmult(unsigned char *q, const unsigned char *n, + const unsigned char *p); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h b/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h new file mode 100644 index 00000000..5d35d44c --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h @@ -0,0 +1,37 @@ +#ifndef crypto_scalarmult_curve25519_H +#define crypto_scalarmult_curve25519_H + +#if 1 +# ifndef SODIUM_HAVE_TI_MODE +# define SODIUM_HAVE_TI_MODE +# endif +#endif + +#include "export.h" + +#define crypto_scalarmult_curve25519_BYTES 32 +#define crypto_scalarmult_curve25519_SCALARBYTES 32 + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_scalarmult_curve25519(unsigned char *,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_scalarmult_curve25519_base(unsigned char *,const unsigned char *); + +#ifdef SODIUM_HAVE_TI_MODE +# define crypto_scalarmult_curve25519_donna_c64 crypto_scalarmult_curve25519 +# define crypto_scalarmult_curve25519_donna_c64_base crypto_scalarmult_curve25519_base +#else +# define crypto_scalarmult_curve25519_ref crypto_scalarmult_curve25519 +# define crypto_scalarmult_curve25519_ref_base crypto_scalarmult_curve25519_base +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h.in b/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h.in new file mode 100644 index 00000000..e87657ff --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h.in @@ -0,0 +1,37 @@ +#ifndef crypto_scalarmult_curve25519_H +#define crypto_scalarmult_curve25519_H + +#if @HAVE_TI_MODE_V@ +# ifndef SODIUM_HAVE_TI_MODE +# define SODIUM_HAVE_TI_MODE +# endif +#endif + +#include "export.h" + +#define crypto_scalarmult_curve25519_BYTES 32 +#define crypto_scalarmult_curve25519_SCALARBYTES 32 + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_scalarmult_curve25519(unsigned char *,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_scalarmult_curve25519_base(unsigned char *,const unsigned char *); + +#ifdef SODIUM_HAVE_TI_MODE +# define crypto_scalarmult_curve25519_donna_c64 crypto_scalarmult_curve25519 +# define crypto_scalarmult_curve25519_donna_c64_base crypto_scalarmult_curve25519_base +#else +# define crypto_scalarmult_curve25519_ref crypto_scalarmult_curve25519 +# define crypto_scalarmult_curve25519_ref_base crypto_scalarmult_curve25519_base +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_secretbox.h b/src/libsodium/src/libsodium/include/sodium/crypto_secretbox.h new file mode 100644 index 00000000..eb14bc52 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_secretbox.h @@ -0,0 +1,47 @@ +#ifndef crypto_secretbox_H +#define crypto_secretbox_H + +#include <stddef.h> + +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretbox_keybytes(void); + +#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_secretbox_noncebytes(void); + +#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_zerobytes(void); + +#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_boxzerobytes(void); + +#define crypto_secretbox_PRIMITIVE "xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_secretbox_primitive(void); + +SODIUM_EXPORT +int crypto_secretbox(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k); + +SODIUM_EXPORT +int crypto_secretbox_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h b/src/libsodium/src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h new file mode 100644 index 00000000..22f0d667 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h @@ -0,0 +1,44 @@ +#ifndef crypto_secretbox_xsalsa20poly1305_H +#define crypto_secretbox_xsalsa20poly1305_H + +#include <stddef.h> +#include "export.h" + +#define crypto_secretbox_xsalsa20poly1305_KEYBYTES 32U +#define crypto_secretbox_xsalsa20poly1305_NONCEBYTES 24U +#define crypto_secretbox_xsalsa20poly1305_ZEROBYTES 32U +#define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_keybytes(void); + +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_noncebytes(void); + +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void); + +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void); + +SODIUM_EXPORT +const char * crypto_secretbox_xsalsa20poly1305_primitive(void); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305_open(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_secretbox_xsalsa20poly1305_ref crypto_secretbox_xsalsa20poly1305 +#define crypto_secretbox_xsalsa20poly1305_ref_open crypto_secretbox_xsalsa20poly1305_open + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_shorthash.h b/src/libsodium/src/libsodium/include/sodium/crypto_shorthash.h new file mode 100644 index 00000000..5173727a --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_shorthash.h @@ -0,0 +1,33 @@ +#ifndef crypto_shorthash_H +#define crypto_shorthash_H + +#include <stddef.h> + +#include "crypto_shorthash_siphash24.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES +SODIUM_EXPORT +size_t crypto_shorthash_bytes(void); + +#define crypto_shorthash_KEYBYTES crypto_shorthash_siphash24_KEYBYTES +SODIUM_EXPORT +size_t crypto_shorthash_keybytes(void); + +#define crypto_shorthash_PRIMITIVE "siphash24" +SODIUM_EXPORT +const char *crypto_shorthash_primitive(void); + +SODIUM_EXPORT +int crypto_shorthash(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_shorthash_siphash24.h b/src/libsodium/src/libsodium/include/sodium/crypto_shorthash_siphash24.h new file mode 100644 index 00000000..2885d974 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_shorthash_siphash24.h @@ -0,0 +1,29 @@ +#ifndef crypto_shorthash_siphash24_H +#define crypto_shorthash_siphash24_H + +#include <stddef.h> +#include "export.h" + +#define crypto_shorthash_siphash24_BYTES 8U +#define crypto_shorthash_siphash24_KEYBYTES 16U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_bytes(void); + +SODIUM_EXPORT +const char * crypto_shorthash_siphash24_primitive(void); + +SODIUM_EXPORT +int crypto_shorthash_siphash24(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_shorthash_siphash24_ref crypto_shorthash_siphash24 + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_sign.h b/src/libsodium/src/libsodium/include/sodium/crypto_sign.h new file mode 100644 index 00000000..9efb2ebc --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_sign.h @@ -0,0 +1,61 @@ +#ifndef crypto_sign_H +#define crypto_sign_H + +/* + * THREAD SAFETY: crypto_sign_keypair() is thread-safe, + * provided that you called sodium_init() once before using any + * other libsodium function. + * Other functions, including crypto_sign_seed_keypair() are always thread-safe. + */ + +#include <stddef.h> + +#include "crypto_sign_ed25519.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_sign_BYTES crypto_sign_ed25519_BYTES +SODIUM_EXPORT +size_t crypto_sign_bytes(void); + +#define crypto_sign_SEEDBYTES crypto_sign_ed25519_SEEDBYTES +SODIUM_EXPORT +size_t crypto_sign_seedbytes(void); + +#define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_publickeybytes(void); + +#define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_secretkeybytes(void); + +#define crypto_sign_PRIMITIVE "ed25519" +SODIUM_EXPORT +const char *crypto_sign_primitive(void); + +SODIUM_EXPORT +int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed); + +SODIUM_EXPORT +int crypto_sign_keypair(unsigned char *pk, unsigned char *sk); + +SODIUM_EXPORT +int crypto_sign(unsigned char *sm, unsigned long long *smlen, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk); + +SODIUM_EXPORT +int crypto_sign_open(unsigned char *m, unsigned long long *mlen, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_sign_ed25519.h b/src/libsodium/src/libsodium/include/sodium/crypto_sign_ed25519.h new file mode 100644 index 00000000..aaf7082c --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_sign_ed25519.h @@ -0,0 +1,52 @@ +#ifndef crypto_sign_ed25519_H +#define crypto_sign_ed25519_H + +#include <stddef.h> +#include "export.h" + +#define crypto_sign_ed25519_SECRETKEYBYTES 64U +#define crypto_sign_ed25519_PUBLICKEYBYTES 32U +#define crypto_sign_ed25519_SEEDBYTES 32U +#define crypto_sign_ed25519_BYTES 64U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_sign_ed25519_bytes(void); + +SODIUM_EXPORT +size_t crypto_sign_ed25519_seedbytes(void); + +SODIUM_EXPORT +size_t crypto_sign_ed25519_publickeybytes(void); + +SODIUM_EXPORT +size_t crypto_sign_ed25519_secretkeybytes(void); + +SODIUM_EXPORT +const char * crypto_sign_ed25519_primitive(void); + +SODIUM_EXPORT +int crypto_sign_ed25519(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *); + +SODIUM_EXPORT +int crypto_sign_ed25519_open(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *); + +SODIUM_EXPORT +int crypto_sign_ed25519_keypair(unsigned char *,unsigned char *); + +SODIUM_EXPORT +int crypto_sign_ed25519_seed_keypair(unsigned char *,unsigned char *,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_sign_ed25519_ref10 crypto_sign_ed25519 +#define crypto_sign_ed25519_ref10_open crypto_sign_ed25519_open +#define crypto_sign_ed25519_ref10_keypair crypto_sign_ed25519_keypair +#define crypto_sign_ed25519_ref10_seed_keypair crypto_sign_ed25519_seed_keypair + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h b/src/libsodium/src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h new file mode 100644 index 00000000..eb8f7061 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h @@ -0,0 +1,44 @@ +#ifndef crypto_sign_edwards25519sha512batch_H +#define crypto_sign_edwards25519sha512batch_H + +#include <stddef.h> +#include "export.h" + +#define crypto_sign_edwards25519sha512batch_SECRETKEYBYTES 64U +#define crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES 32U +#define crypto_sign_edwards25519sha512batch_BYTES 64U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_sign_edwards25519sha512batch_bytes(void); + +SODIUM_EXPORT +size_t crypto_sign_edwards25519sha512batch_publickeybytes(void); + +SODIUM_EXPORT +size_t crypto_sign_edwards25519sha512batch_secretkeybytes(void); + +SODIUM_EXPORT +const char * crypto_sign_edwards25519sha512batch_primitive(void); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_open(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_keypair(unsigned char *,unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_sign_edwards25519sha512batch_ref crypto_sign_edwards25519sha512batch +#define crypto_sign_edwards25519sha512batch_ref_open crypto_sign_edwards25519sha512batch_open +#define crypto_sign_edwards25519sha512batch_ref_keypair crypto_sign_edwards25519sha512batch_keypair + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_stream.h b/src/libsodium/src/libsodium/include/sodium/crypto_stream.h new file mode 100644 index 00000000..e16aef35 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_stream.h @@ -0,0 +1,46 @@ +#ifndef crypto_stream_H +#define crypto_stream_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include <stddef.h> + +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES +SODIUM_EXPORT +size_t crypto_stream_keybytes(void); + +#define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES +SODIUM_EXPORT +size_t crypto_stream_noncebytes(void); + +#define crypto_stream_PRIMITIVE "xsalsa20" +SODIUM_EXPORT +const char *crypto_stream_primitive(void); + +SODIUM_EXPORT +int crypto_stream(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k); + +SODIUM_EXPORT +int crypto_stream_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_stream_aes128ctr.h b/src/libsodium/src/libsodium/include/sodium/crypto_stream_aes128ctr.h new file mode 100644 index 00000000..df9ee34a --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_stream_aes128ctr.h @@ -0,0 +1,60 @@ +#ifndef crypto_stream_aes128ctr_H +#define crypto_stream_aes128ctr_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include <stddef.h> +#include "export.h" + +#define crypto_stream_aes128ctr_KEYBYTES 16U +#define crypto_stream_aes128ctr_NONCEBYTES 16U +#define crypto_stream_aes128ctr_BEFORENMBYTES 1408U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_stream_aes128ctr_keybytes(void); + +SODIUM_EXPORT +size_t crypto_stream_aes128ctr_noncebytes(void); + +SODIUM_EXPORT +size_t crypto_stream_aes128ctr_beforenmbytes(void); + +SODIUM_EXPORT +const char * crypto_stream_aes128ctr_primitive(void); + +SODIUM_EXPORT +int crypto_stream_aes128ctr(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_aes128ctr_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_aes128ctr_beforenm(unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_aes128ctr_afternm(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_aes128ctr_xor_afternm(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_stream_aes128ctr_portable crypto_stream_aes128ctr +#define crypto_stream_aes128ctr_portable_xor crypto_stream_aes128ctr_xor +#define crypto_stream_aes128ctr_portable_beforenm crypto_stream_aes128ctr_beforenm +#define crypto_stream_aes128ctr_portable_afternm crypto_stream_aes128ctr_afternm +#define crypto_stream_aes128ctr_portable_xor_afternm crypto_stream_aes128ctr_xor_afternm + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_stream_aes256estream.h b/src/libsodium/src/libsodium/include/sodium/crypto_stream_aes256estream.h new file mode 100644 index 00000000..7240b22f --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_stream_aes256estream.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_aes256estream_H +#define crypto_stream_aes256estream_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Furthermore, this implementation was not part of NaCl. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include <stddef.h> +#include "export.h" + +#define crypto_stream_aes256estream_KEYBYTES 32U +#define crypto_stream_aes256estream_NONCEBYTES 16U +#define crypto_stream_aes256estream_BEFORENMBYTES 276U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_stream_aes256estream_keybytes(void); + +SODIUM_EXPORT +size_t crypto_stream_aes256estream_noncebytes(void); + +SODIUM_EXPORT +size_t crypto_stream_aes256estream_beforenmbytes(void); + +SODIUM_EXPORT +const char * crypto_stream_aes256estream_primitive(void); + +SODIUM_EXPORT +int crypto_stream_aes256estream(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_aes256estream_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_aes256estream_beforenm(unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_aes256estream_afternm(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_aes256estream_xor_afternm(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_stream_aes256estream_hongjun crypto_stream_aes256estream +#define crypto_stream_aes256estream_hongjun_xor crypto_stream_aes256estream_xor +#define crypto_stream_aes256estream_hongjun_beforenm crypto_stream_aes256estream_beforenm +#define crypto_stream_aes256estream_hongjun_afternm crypto_stream_aes256estream_afternm +#define crypto_stream_aes256estream_hongjun_xor_afternm crypto_stream_aes256estream_xor_afternm + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h b/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h new file mode 100644 index 00000000..f3e1091a --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h @@ -0,0 +1,45 @@ +#ifndef crypto_stream_salsa20_H +#define crypto_stream_salsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#if 1 +# ifndef SODIUM_HAVE_AMD64_ASM +# define SODIUM_HAVE_AMD64_ASM +# endif +#endif + +#include "export.h" + +#define crypto_stream_salsa20_KEYBYTES 32U +#define crypto_stream_salsa20_NONCEBYTES 8U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_stream_salsa20(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +#ifdef SODIUM_HAVE_AMD64_ASM +# define crypto_stream_salsa20_amd64_xmm6 crypto_stream_salsa20 +# define crypto_stream_salsa20_amd64_xmm6_xor crypto_stream_salsa20_xor +#else +# define crypto_stream_salsa20_ref crypto_stream_salsa20 +# define crypto_stream_salsa20_ref_xor crypto_stream_salsa20_xor +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h.in b/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h.in new file mode 100644 index 00000000..9f8e9df2 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h.in @@ -0,0 +1,45 @@ +#ifndef crypto_stream_salsa20_H +#define crypto_stream_salsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#if @HAVE_AMD64_ASM_V@ +# ifndef SODIUM_HAVE_AMD64_ASM +# define SODIUM_HAVE_AMD64_ASM +# endif +#endif + +#include "export.h" + +#define crypto_stream_salsa20_KEYBYTES 32U +#define crypto_stream_salsa20_NONCEBYTES 8U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_stream_salsa20(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +#ifdef SODIUM_HAVE_AMD64_ASM +# define crypto_stream_salsa20_amd64_xmm6 crypto_stream_salsa20 +# define crypto_stream_salsa20_amd64_xmm6_xor crypto_stream_salsa20_xor +#else +# define crypto_stream_salsa20_ref crypto_stream_salsa20 +# define crypto_stream_salsa20_ref_xor crypto_stream_salsa20_xor +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa2012.h b/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa2012.h new file mode 100644 index 00000000..742a7a1a --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa2012.h @@ -0,0 +1,44 @@ +#ifndef crypto_stream_salsa2012_H +#define crypto_stream_salsa2012_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include <stddef.h> +#include "export.h" + +#define crypto_stream_salsa2012_KEYBYTES 32U +#define crypto_stream_salsa2012_NONCEBYTES 8U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_stream_salsa2012_keybytes(void); + +SODIUM_EXPORT +size_t crypto_stream_salsa2012_noncebytes(void); + +SODIUM_EXPORT +const char * crypto_stream_salsa2012_primitive(void); + +SODIUM_EXPORT +int crypto_stream_salsa2012(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_salsa2012_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_stream_salsa2012_ref crypto_stream_salsa2012 +#define crypto_stream_salsa2012_ref_xor crypto_stream_salsa2012_xor + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa208.h b/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa208.h new file mode 100644 index 00000000..cd6742ce --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_stream_salsa208.h @@ -0,0 +1,44 @@ +#ifndef crypto_stream_salsa208_H +#define crypto_stream_salsa208_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include <stddef.h> +#include "export.h" + +#define crypto_stream_salsa208_KEYBYTES 32U +#define crypto_stream_salsa208_NONCEBYTES 8U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_stream_salsa208_keybytes(void); + +SODIUM_EXPORT +size_t crypto_stream_salsa208_noncebytes(void); + +SODIUM_EXPORT +const char * crypto_stream_salsa208_primitive(void); + +SODIUM_EXPORT +int crypto_stream_salsa208(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_salsa208_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_stream_salsa208_ref crypto_stream_salsa208 +#define crypto_stream_salsa208_ref_xor crypto_stream_salsa208_xor + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_stream_xsalsa20.h b/src/libsodium/src/libsodium/include/sodium/crypto_stream_xsalsa20.h new file mode 100644 index 00000000..c5ad363d --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_stream_xsalsa20.h @@ -0,0 +1,44 @@ +#ifndef crypto_stream_xsalsa20_H +#define crypto_stream_xsalsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include <stddef.h> +#include "export.h" + +#define crypto_stream_xsalsa20_KEYBYTES 32U +#define crypto_stream_xsalsa20_NONCEBYTES 24U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_keybytes(void); + +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_noncebytes(void); + +SODIUM_EXPORT +const char * crypto_stream_xsalsa20_primitive(void); + +SODIUM_EXPORT +int crypto_stream_xsalsa20(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#define crypto_stream_xsalsa20_ref crypto_stream_xsalsa20 +#define crypto_stream_xsalsa20_ref_xor crypto_stream_xsalsa20_xor + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_uint16.h b/src/libsodium/src/libsodium/include/sodium/crypto_uint16.h new file mode 100644 index 00000000..6be4e347 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_uint16.h @@ -0,0 +1,8 @@ +#ifndef crypto_uint16_H +#define crypto_uint16_H + +#include <stdint.h> + +typedef uint16_t crypto_uint16; + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_uint32.h b/src/libsodium/src/libsodium/include/sodium/crypto_uint32.h new file mode 100644 index 00000000..ba66cecc --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_uint32.h @@ -0,0 +1,8 @@ +#ifndef crypto_uint32_H +#define crypto_uint32_H + +#include <stdint.h> + +typedef uint32_t crypto_uint32; + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_uint64.h b/src/libsodium/src/libsodium/include/sodium/crypto_uint64.h new file mode 100644 index 00000000..98b3f6d3 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_uint64.h @@ -0,0 +1,8 @@ +#ifndef crypto_uint64_H +#define crypto_uint64_H + +#include <stdint.h> + +typedef uint64_t crypto_uint64; + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_uint8.h b/src/libsodium/src/libsodium/include/sodium/crypto_uint8.h new file mode 100644 index 00000000..789613ba --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_uint8.h @@ -0,0 +1,8 @@ +#ifndef crypto_uint8_H +#define crypto_uint8_H + +#include <stdint.h> + +typedef uint8_t crypto_uint8; + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_verify_16.h b/src/libsodium/src/libsodium/include/sodium/crypto_verify_16.h new file mode 100644 index 00000000..972a02f3 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_verify_16.h @@ -0,0 +1,25 @@ +#ifndef crypto_verify_16_H +#define crypto_verify_16_H + +#include <stddef.h> +#include "export.h" + +#define crypto_verify_16_BYTES 16U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_verify_16_bytes(void); + +SODIUM_EXPORT +int crypto_verify_16(const unsigned char *x, const unsigned char *y); + +#define crypto_verify_16_ref crypto_verify_16 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/crypto_verify_32.h b/src/libsodium/src/libsodium/include/sodium/crypto_verify_32.h new file mode 100644 index 00000000..f3ada230 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/crypto_verify_32.h @@ -0,0 +1,25 @@ +#ifndef crypto_verify_32_H +#define crypto_verify_32_H + +#include <stddef.h> +#include "export.h" + +#define crypto_verify_32_BYTES 32U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +size_t crypto_verify_32_bytes(void); + +SODIUM_EXPORT +int crypto_verify_32(const unsigned char *x, const unsigned char *y); + +#define crypto_verify_32_ref crypto_verify_32 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/export.h b/src/libsodium/src/libsodium/include/sodium/export.h new file mode 100644 index 00000000..1fcbaae8 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/export.h @@ -0,0 +1,30 @@ + +#ifndef __SODIUM_EXPORT_H__ +#define __SODIUM_EXPORT_H__ + +#ifndef __GNUC__ +# ifdef __attribute__ +# undef __attribute__ +# endif +# define __attribute__(a) +#endif + +#ifndef SODIUM_STATIC +# if defined(_MSC_VER) +# ifdef DLL_EXPORT +# define SODIUM_EXPORT __declspec(dllexport) +# else +# define SODIUM_EXPORT __declspec(dllimport) +# endif +# else +# if defined(__SUNPRO_C) +# define SODIUM_EXPORT __attribute__ __global +# elif defined(_MSG_VER) +# define SODIUM_EXPORT extern __declspec(dllexport) +# else +# define SODIUM_EXPORT __attribute__ ((visibility ("default"))) +# endif +# endif +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/randombytes.h b/src/libsodium/src/libsodium/include/sodium/randombytes.h new file mode 100644 index 00000000..5a2176b9 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/randombytes.h @@ -0,0 +1,53 @@ + +#ifndef randombytes_H +#define randombytes_H + +#include <sys/types.h> + +#include <stddef.h> +#include <stdint.h> + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct randombytes_implementation { + const char *(*implementation_name)(void); + uint32_t (*random)(void); + void (*stir)(void); + uint32_t (*uniform)(const uint32_t upper_bound); + void (*buf)(void * const buf, const size_t size); + int (*close)(void); +} randombytes_implementation; + +SODIUM_EXPORT +int randombytes_set_implementation(randombytes_implementation *impl); + +SODIUM_EXPORT +void randombytes(unsigned char *buf, unsigned long long size); + +SODIUM_EXPORT +const char *randombytes_implementation_name(void); + +SODIUM_EXPORT +uint32_t randombytes_random(void); + +SODIUM_EXPORT +void randombytes_stir(void); + +SODIUM_EXPORT +uint32_t randombytes_uniform(const uint32_t upper_bound); + +SODIUM_EXPORT +void randombytes_buf(void * const buf, const size_t size); + +SODIUM_EXPORT +int randombytes_close(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/randombytes_salsa20_random.h b/src/libsodium/src/libsodium/include/sodium/randombytes_salsa20_random.h new file mode 100644 index 00000000..46d38c54 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/randombytes_salsa20_random.h @@ -0,0 +1,45 @@ + +#ifndef randombytes_salsa20_random_H +#define randombytes_salsa20_random_H + +/* + * THREAD SAFETY: randombytes_salsa20_random*() functions are + * fork()-safe but not thread-safe. + * Always wrap them in a mutex if you need thread safety. + */ + +#include <stddef.h> +#include <stdint.h> + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_salsa20_implementation; + +SODIUM_EXPORT +const char *randombytes_salsa20_implementation_name(void); + +SODIUM_EXPORT +uint32_t randombytes_salsa20_random(void); + +SODIUM_EXPORT +void randombytes_salsa20_random_stir(void); + +SODIUM_EXPORT +uint32_t randombytes_salsa20_random_uniform(const uint32_t upper_bound); + +SODIUM_EXPORT +void randombytes_salsa20_random_buf(void * const buf, const size_t size); + +SODIUM_EXPORT +int randombytes_salsa20_random_close(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/randombytes_sysrandom.h b/src/libsodium/src/libsodium/include/sodium/randombytes_sysrandom.h new file mode 100644 index 00000000..20dab781 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/randombytes_sysrandom.h @@ -0,0 +1,45 @@ + +#ifndef randombytes_sysrandom_H +#define randombytes_sysrandom_H + +/* + * THREAD SAFETY: randombytes_sysrandom() functions are thread-safe, + * provided that you called sodium_init() once before using any + * other libsodium function. + */ + +#include <stddef.h> +#include <stdint.h> + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_sysrandom_implementation; + +SODIUM_EXPORT +const char *randombytes_sysrandom_implementation_name(void); + +SODIUM_EXPORT +uint32_t randombytes_sysrandom(void); + +SODIUM_EXPORT +void randombytes_sysrandom_stir(void); + +SODIUM_EXPORT +uint32_t randombytes_sysrandom_uniform(const uint32_t upper_bound); + +SODIUM_EXPORT +void randombytes_sysrandom_buf(void * const buf, const size_t size); + +SODIUM_EXPORT +int randombytes_sysrandom_close(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/utils.h b/src/libsodium/src/libsodium/include/sodium/utils.h new file mode 100644 index 00000000..e2aaf697 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/utils.h @@ -0,0 +1,36 @@ + +#ifndef __SODIUM_UTILS_H__ +#define __SODIUM_UTILS_H__ + +#include <stddef.h> + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef __cplusplus +# define _SODIUM_C99(X) X +#else +# define _SODIUM_C99(X) +#endif + +unsigned char *_sodium_alignedcalloc(unsigned char ** const unaligned_p, + const size_t len); + +SODIUM_EXPORT +void sodium_memzero(void * const pnt, const size_t len); + +SODIUM_EXPORT +int sodium_memcmp(const void * const b1_, const void * const b2_, size_t size); + +SODIUM_EXPORT +char *sodium_bin2hex(char * const hex, const size_t hexlen, + const unsigned char *bin, const size_t binlen); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/version.h b/src/libsodium/src/libsodium/include/sodium/version.h new file mode 100644 index 00000000..3a3f34fd --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/version.h @@ -0,0 +1,29 @@ + +#ifndef __SODIUM_VERSION_H__ +#define __SODIUM_VERSION_H__ + +#include "export.h" + +#define SODIUM_VERSION_STRING "0.4.3" + +#define SODIUM_LIBRARY_VERSION_MAJOR 4 +#define SODIUM_LIBRARY_VERSION_MINOR 3 + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/include/sodium/version.h.in b/src/libsodium/src/libsodium/include/sodium/version.h.in new file mode 100644 index 00000000..ddc8cfd1 --- /dev/null +++ b/src/libsodium/src/libsodium/include/sodium/version.h.in @@ -0,0 +1,29 @@ + +#ifndef __SODIUM_VERSION_H__ +#define __SODIUM_VERSION_H__ + +#include "export.h" + +#define SODIUM_VERSION_STRING "@VERSION@" + +#define SODIUM_LIBRARY_VERSION_MAJOR @SODIUM_LIBRARY_VERSION_MAJOR@ +#define SODIUM_LIBRARY_VERSION_MINOR @SODIUM_LIBRARY_VERSION_MINOR@ + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libsodium/src/libsodium/randombytes/randombytes.c b/src/libsodium/src/libsodium/randombytes/randombytes.c new file mode 100644 index 00000000..38bc939b --- /dev/null +++ b/src/libsodium/src/libsodium/randombytes/randombytes.c @@ -0,0 +1,64 @@ + +#include <sys/types.h> + +#include <assert.h> +#include <inttypes.h> +#include <limits.h> +#include <stdint.h> + +#include "randombytes.h" +#include "randombytes_sysrandom.h" + +static const randombytes_implementation *implementation = + &randombytes_sysrandom_implementation; + +int +randombytes_set_implementation(randombytes_implementation *impl) +{ + implementation = impl; + + return 0; +} + +const char * +randombytes_implementation_name(void) +{ + return implementation->implementation_name(); +} + +uint32_t +randombytes_random(void) +{ + return implementation->random(); +} + +void +randombytes_stir(void) +{ + return implementation->stir(); +} + +uint32_t +randombytes_uniform(const uint32_t upper_bound) +{ + return implementation->uniform(upper_bound); +} + +void +randombytes_buf(void * const buf, const size_t size) +{ + implementation->buf(buf, size); +} + +int +randombytes_close(void) +{ + return implementation->close(); +} + +void +randombytes(unsigned char * const buf, const unsigned long long buf_len) +{ + assert(buf_len <= SIZE_MAX); + randombytes_buf(buf, (size_t) buf_len); +} diff --git a/src/libsodium/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c b/src/libsodium/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c new file mode 100644 index 00000000..cf617360 --- /dev/null +++ b/src/libsodium/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c @@ -0,0 +1,306 @@ + +#include <sys/types.h> +#include <sys/time.h> + +#include <assert.h> +#include <errno.h> +#include <fcntl.h> +#include <limits.h> +#include <stdbool.h> +#include <stdint.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "crypto_core_salsa20.h" +#include "crypto_auth_hmacsha512256.h" +#include "crypto_stream_salsa20.h" +#include "randombytes.h" +#include "randombytes_salsa20_random.h" +#include "utils.h" + +#ifdef _WIN32 +# include <windows.h> +# include <wincrypt.h> +# include <sys/timeb.h> +#endif + +#define SALSA20_RANDOM_BLOCK_SIZE crypto_core_salsa20_OUTPUTBYTES +#define SHA512_BLOCK_SIZE 128U +#define SHA512_MIN_PAD_SIZE (1U + 16U) +#define COMPILER_ASSERT(X) (void) sizeof(char[(X) ? 1 : -1]) + +typedef struct Salsa20Random_ { + unsigned char key[crypto_stream_salsa20_KEYBYTES]; + unsigned char rnd32[SALSA20_RANDOM_BLOCK_SIZE]; + uint64_t nonce; + size_t rnd32_outleft; + pid_t pid; +#ifdef _WIN32 + HCRYPTPROV hcrypt_prov; +#endif + int random_data_source_fd; + bool initialized; +} Salsa20Random; + +static Salsa20Random stream = { + _SODIUM_C99(.random_data_source_fd =) -1, + _SODIUM_C99(.rnd32_outleft =) (size_t) 0U, + _SODIUM_C99(.initialized =) 0 +}; + +static uint64_t +sodium_hrtime(void) +{ + struct timeval tv; + uint64_t ts = (uint64_t) 0U; + int ret; + +#ifdef _WIN32 + struct _timeb tb; + + _ftime(&tb); + tv.tv_sec = (long) tb.time; + tv.tv_usec = ((int) tb.millitm) * 1000; + ret = 0; +#else + ret = gettimeofday(&tv, NULL); +#endif + assert(ret == 0); + if (ret == 0) { + ts = (uint64_t) tv.tv_sec * 1000000U + (uint64_t) tv.tv_usec; + } + return ts; +} + +#ifndef _WIN32 +static ssize_t +safe_read(const int fd, void * const buf_, size_t count) +{ + unsigned char *buf = (unsigned char *) buf_; + ssize_t readnb; + + do { + while ((readnb = read(fd, buf, count)) < (ssize_t) 0 && + errno == EINTR); + if (readnb < (ssize_t) 0) { + return readnb; + } + if (readnb == (ssize_t) 0) { + break; + } + count -= (size_t) readnb; + buf += readnb; + } while (count > (ssize_t) 0); + + return (ssize_t) (buf - (unsigned char *) buf_); +} +#endif + +#ifndef _WIN32 +static int +randombytes_salsa20_random_random_dev_open(void) +{ + static const char * const devices[] = { +# ifndef USE_BLOCKING_RANDOM + "/dev/arandom", "/dev/urandom", +# endif + "/dev/random", NULL + }; + const char * const *device = devices; + + do { + if (access(*device, F_OK | R_OK) == 0) { + return open(*device, O_RDONLY); + } + device++; + } while (*device != NULL); + + return -1; +} + +static void +randombytes_salsa20_random_init(void) +{ + stream.nonce = sodium_hrtime(); + assert(stream.nonce != (uint64_t) 0U); + + if ((stream.random_data_source_fd = + randombytes_salsa20_random_random_dev_open()) == -1) { + abort(); + } +} + +#else /* _WIN32 */ + +static void +randombytes_salsa20_random_init(void) +{ + stream.nonce = sodium_hrtime(); + assert(stream.nonce != (uint64_t) 0U); + + if (! CryptAcquireContext(&stream.hcrypt_prov, NULL, NULL, + PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { + abort(); + } +} +#endif + +void +randombytes_salsa20_random_stir(void) +{ + const unsigned char s[crypto_auth_hmacsha512256_KEYBYTES] = { + 'T', 'h', 'i', 's', 'I', 's', 'J', 'u', 's', 't', 'A', 'T', + 'h', 'i', 'r', 't', 'y', 'T', 'w', 'o', 'B', 'y', 't', 'e', + 's', 'S', 'e', 'e', 'd', '.', '.', '.' + }; + unsigned char m0[crypto_auth_hmacsha512256_BYTES + + 2U * SHA512_BLOCK_SIZE - SHA512_MIN_PAD_SIZE]; + unsigned char *k0 = m0 + crypto_auth_hmacsha512256_BYTES; + size_t i; + size_t sizeof_k0 = sizeof m0 - crypto_auth_hmacsha512256_BYTES; + + memset(stream.rnd32, 0, sizeof stream.rnd32); + stream.rnd32_outleft = (size_t) 0U; + if (stream.initialized == 0) { + randombytes_salsa20_random_init(); + stream.initialized = 1; + } +#ifndef _WIN32 + if (safe_read(stream.random_data_source_fd, m0, + sizeof m0) != (ssize_t) sizeof m0) { + abort(); + } +#else /* _WIN32 */ + if (! CryptGenRandom(stream.hcrypt_prov, sizeof m0, m0)) { + abort(); + } +#endif + COMPILER_ASSERT(sizeof stream.key == crypto_auth_hmacsha512256_BYTES); + crypto_auth_hmacsha512256(stream.key, k0, sizeof_k0, s); + COMPILER_ASSERT(sizeof stream.key <= sizeof m0); + for (i = (size_t) 0U; i < sizeof stream.key; i++) { + stream.key[i] ^= m0[i]; + } + sodium_memzero(m0, sizeof m0); +} + +static void +randombytes_salsa20_random_stir_if_needed(void) +{ + const pid_t pid = getpid(); + + if (stream.initialized == 0 || stream.pid != pid) { + stream.pid = pid; + randombytes_salsa20_random_stir(); + } +} + +static uint32_t +randombytes_salsa20_random_getword(void) +{ + uint32_t val; + int ret; + + COMPILER_ASSERT(sizeof stream.rnd32 >= sizeof val); + COMPILER_ASSERT(sizeof stream.rnd32 % sizeof val == (size_t) 0U); + if (stream.rnd32_outleft <= (size_t) 0U) { + randombytes_salsa20_random_stir_if_needed(); + COMPILER_ASSERT(sizeof stream.nonce == crypto_stream_salsa20_NONCEBYTES); + ret = crypto_stream_salsa20((unsigned char *) stream.rnd32, + (unsigned long long) sizeof stream.rnd32, + (unsigned char *) &stream.nonce, + stream.key); + assert(ret == 0); + stream.nonce++; + stream.rnd32_outleft = sizeof stream.rnd32; + } + stream.rnd32_outleft -= sizeof val; + memcpy(&val, &stream.rnd32[stream.rnd32_outleft], sizeof val); + + return val; +} + +int +randombytes_salsa20_random_close(void) +{ + int ret = -1; + +#ifndef _WIN32 + if (stream.random_data_source_fd != -1 && + close(stream.random_data_source_fd) == 0) { + stream.random_data_source_fd = -1; + stream.initialized = 0; + ret = 0; + } +#else /* _WIN32 */ + if (stream.initialized != 0 && + CryptReleaseContext(stream.hcrypt_prov, 0)) { + stream.initialized = 0; + ret = 0; + } +#endif + return ret; +} + +uint32_t +randombytes_salsa20_random(void) +{ + return randombytes_salsa20_random_getword(); +} + +void +randombytes_salsa20_random_buf(void * const buf, const size_t size) +{ + int ret; + + randombytes_salsa20_random_stir_if_needed(); + COMPILER_ASSERT(sizeof stream.nonce == crypto_stream_salsa20_NONCEBYTES); +#ifdef ULONG_LONG_MAX + assert(size <= ULONG_LONG_MAX); +#endif + ret = crypto_stream_salsa20((unsigned char *) buf, (unsigned long long) size, + (unsigned char *) &stream.nonce, + stream.key); + assert(ret == 0); + stream.nonce++; +} + +/* + * randombytes_salsa20_random_uniform() derives from OpenBSD's arc4random_uniform() + * Copyright (c) 2008, Damien Miller <djm@openbsd.org> + */ + +uint32_t +randombytes_salsa20_random_uniform(const uint32_t upper_bound) +{ + uint32_t min; + uint32_t r; + + if (upper_bound < 2) { + return 0; + } + min = (uint32_t) (-upper_bound % upper_bound); + for (;;) { + r = randombytes_salsa20_random(); + if (r >= min) { + break; + } + } + return r % upper_bound; +} + +const char * +randombytes_salsa20_implementation_name(void) +{ + return "salsa20"; +} + +struct randombytes_implementation randombytes_salsa20_implementation = { + _SODIUM_C99(.implementation_name =) randombytes_salsa20_implementation_name, + _SODIUM_C99(.random =) randombytes_salsa20_random, + _SODIUM_C99(.stir =) randombytes_salsa20_random_stir, + _SODIUM_C99(.uniform =) randombytes_salsa20_random_uniform, + _SODIUM_C99(.buf =) randombytes_salsa20_random_buf, + _SODIUM_C99(.close =) randombytes_salsa20_random_close +}; diff --git a/src/libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c b/src/libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c new file mode 100644 index 00000000..eec5e55c --- /dev/null +++ b/src/libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c @@ -0,0 +1,211 @@ + +#include <sys/types.h> +#include <sys/time.h> + +#include <assert.h> +#include <errno.h> +#include <fcntl.h> +#include <limits.h> +#ifndef _WIN32 +# include <poll.h> +#endif +#include <stdbool.h> +#include <stdint.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "randombytes.h" +#include "randombytes_sysrandom.h" +#include "utils.h" + +#ifdef _WIN32 +# include <windows.h> +# include <wincrypt.h> +#endif + +typedef struct SysRandom_ { +#ifdef _WIN32 + HCRYPTPROV hcrypt_prov; +#endif + int random_data_source_fd; + bool initialized; +} SysRandom; + +static SysRandom stream = { + _SODIUM_C99(.random_data_source_fd =) -1, + _SODIUM_C99(.initialized =) 0 +}; + +#ifndef _WIN32 +static ssize_t +safe_read(const int fd, void * const buf_, size_t count) +{ + unsigned char *buf = (unsigned char *) buf_; + ssize_t readnb; + + do { + while ((readnb = read(fd, buf, count)) < (ssize_t) 0 && + errno == EINTR); + if (readnb < (ssize_t) 0) { + return readnb; + } + if (readnb == (ssize_t) 0) { + break; + } + count -= (size_t) readnb; + buf += readnb; + } while (count > (ssize_t) 0); + + return (ssize_t) (buf - (unsigned char *) buf_); +} +#endif + +#ifndef _WIN32 +static int +randombytes_sysrandom_random_dev_open(void) +{ + static const char * const devices[] = { +# ifndef USE_BLOCKING_RANDOM + "/dev/arandom", "/dev/urandom", +# endif + "/dev/random", NULL + }; + const char * const *device = devices; + + do { + if (access(*device, F_OK | R_OK) == 0) { + return open(*device, O_RDONLY); + } + device++; + } while (*device != NULL); + + return -1; +} + +static void +randombytes_sysrandom_init(void) +{ + if ((stream.random_data_source_fd = + randombytes_sysrandom_random_dev_open()) == -1) { + abort(); + } +} + +#else /* _WIN32 */ + +static void +randombytes_sysrandom_init(void) +{ + if (! CryptAcquireContext(&stream.hcrypt_prov, NULL, NULL, + PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { + abort(); + } +} +#endif + +void +randombytes_sysrandom_stir(void) +{ + if (stream.initialized == 0) { + randombytes_sysrandom_init(); + stream.initialized = 1; + } +} + +static void +randombytes_sysrandom_stir_if_needed(void) +{ + if (stream.initialized == 0) { + randombytes_sysrandom_stir(); + } +} + +int +randombytes_sysrandom_close(void) +{ + int ret = -1; + +#ifndef _WIN32 + if (stream.random_data_source_fd != -1 && + close(stream.random_data_source_fd) == 0) { + stream.random_data_source_fd = -1; + stream.initialized = 0; + ret = 0; + } +#else /* _WIN32 */ + if (stream.initialized != 0 && + CryptReleaseContext(stream.hcrypt_prov, 0)) { + stream.initialized = 0; + ret = 0; + } +#endif + return ret; +} + +uint32_t +randombytes_sysrandom(void) +{ + uint32_t r; + + randombytes_sysrandom_buf(&r, sizeof r); + + return r; +} + +void +randombytes_sysrandom_buf(void * const buf, const size_t size) +{ + randombytes_sysrandom_stir_if_needed(); +#ifdef ULONG_LONG_MAX + assert(size <= ULONG_LONG_MAX); +#endif +#ifndef _WIN32 + if (safe_read(stream.random_data_source_fd, buf, size) != (ssize_t) size) { + abort(); + } +#else + if (! CryptGenRandom(stream.hcrypt_prov, size, buf)) { + abort(); + } +#endif +} + +/* + * randombytes_sysrandom_uniform() derives from OpenBSD's arc4random_uniform() + * Copyright (c) 2008, Damien Miller <djm@openbsd.org> + */ + +uint32_t +randombytes_sysrandom_uniform(const uint32_t upper_bound) +{ + uint32_t min; + uint32_t r; + + if (upper_bound < 2) { + return 0; + } + min = (uint32_t) (-upper_bound % upper_bound); + for (;;) { + r = randombytes_sysrandom(); + if (r >= min) { + break; + } + } + return r % upper_bound; +} + +const char * +randombytes_sysrandom_implementation_name(void) +{ + return "sysrandom"; +} + +struct randombytes_implementation randombytes_sysrandom_implementation = { + _SODIUM_C99(.implementation_name =) randombytes_sysrandom_implementation_name, + _SODIUM_C99(.random =) randombytes_sysrandom, + _SODIUM_C99(.stir =) randombytes_sysrandom_stir, + _SODIUM_C99(.uniform =) randombytes_sysrandom_uniform, + _SODIUM_C99(.buf =) randombytes_sysrandom_buf, + _SODIUM_C99(.close =) randombytes_sysrandom_close +}; diff --git a/src/libsodium/src/libsodium/sodium/compat.c b/src/libsodium/src/libsodium/sodium/compat.c new file mode 100644 index 00000000..75db2418 --- /dev/null +++ b/src/libsodium/src/libsodium/sodium/compat.c @@ -0,0 +1,237 @@ + +#include "crypto_auth_hmacsha256.h" +#include "crypto_auth_hmacsha512256.h" +#include "crypto_box_curve25519xsalsa20poly1305.h" +#include "crypto_hash_sha256.h" +#include "crypto_hash_sha512.h" +#include "crypto_scalarmult_curve25519.h" +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "crypto_sign_ed25519.h" +#include "crypto_stream_xsalsa20.h" +#include "crypto_verify_16.h" +#include "crypto_verify_32.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#undef crypto_hash_sha256_ref +SODIUM_EXPORT int +crypto_hash_sha256_ref(unsigned char *out, const unsigned char *in, + unsigned long long inlen) +{ + return crypto_hash_sha256(out, in, inlen); +} + +#undef crypto_hash_sha512_ref +SODIUM_EXPORT int +crypto_hash_sha512_ref(unsigned char *out, const unsigned char *in, + unsigned long long inlen) +{ + return crypto_hash_sha512(out, in, inlen); +} + +#undef crypto_auth_hmacsha256_ref +SODIUM_EXPORT int +crypto_auth_hmacsha256_ref(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + return crypto_auth_hmacsha256(out, in, inlen, k); +} + +#undef crypto_auth_hmacsha256_ref_verify +SODIUM_EXPORT int +crypto_auth_hmacsha256_ref_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) +{ + return crypto_auth_hmacsha256_verify(h, in, inlen, k); +} + +#undef crypto_auth_hmacsha512256_ref +SODIUM_EXPORT int +crypto_auth_hmacsha512256_ref(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + return crypto_auth_hmacsha512256(out, in, inlen, k); +} + +#undef crypto_auth_hmacsha512256_ref_verify +SODIUM_EXPORT int +crypto_auth_hmacsha512256_ref_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) +{ + return crypto_auth_hmacsha512256_verify(h, in, inlen, k); +} + +#undef crypto_box_curve25519xsalsa20poly1305_ref_keypair +SODIUM_EXPORT int +crypto_box_curve25519xsalsa20poly1305_ref_keypair(unsigned char *pk, + unsigned char *sk) +{ + return crypto_box_curve25519xsalsa20poly1305_keypair(pk, sk); +} + +#undef crypto_box_curve25519xsalsa20poly1305_ref_beforenm +SODIUM_EXPORT int +crypto_box_curve25519xsalsa20poly1305_ref_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) +{ + return crypto_box_curve25519xsalsa20poly1305_beforenm(k, pk, sk); +} + +#undef crypto_box_curve25519xsalsa20poly1305_ref_afternm +SODIUM_EXPORT int +crypto_box_curve25519xsalsa20poly1305_ref_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) +{ + return crypto_box_curve25519xsalsa20poly1305_afternm(c, m, mlen, n, k); +} + +#undef crypto_box_curve25519xsalsa20poly1305_ref_open_afternm +SODIUM_EXPORT int +crypto_box_curve25519xsalsa20poly1305_ref_open_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) +{ + return crypto_box_curve25519xsalsa20poly1305_open_afternm(m, c, clen, n, k); +} + +#undef crypto_box_curve25519xsalsa20poly1305_ref +SODIUM_EXPORT int +crypto_box_curve25519xsalsa20poly1305_ref(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) +{ + return crypto_box_curve25519xsalsa20poly1305(c, m, mlen, n, pk, sk); +} + +#undef crypto_box_curve25519xsalsa20poly1305_ref_open +SODIUM_EXPORT int +crypto_box_curve25519xsalsa20poly1305_ref_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) +{ + return crypto_box_curve25519xsalsa20poly1305_open(m, c, clen, n, pk, sk); +} + +#undef crypto_scalarmult_curve25519_ref_base +SODIUM_EXPORT int +crypto_scalarmult_curve25519_ref_base(unsigned char *q, const unsigned char *n) +{ + return crypto_scalarmult_curve25519_base(q, n); +} + +#undef crypto_scalarmult_curve25519_ref +SODIUM_EXPORT int +crypto_scalarmult_curve25519_ref(unsigned char *q, const unsigned char *n, + const unsigned char *p) +{ + return crypto_scalarmult_curve25519(q, n, p); +} + +#undef crypto_secretbox_xsalsa20poly1305_ref +SODIUM_EXPORT int +crypto_secretbox_xsalsa20poly1305_ref(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) +{ + return crypto_secretbox_xsalsa20poly1305(c, m, mlen, n, k); +} + +#undef crypto_secretbox_xsalsa20poly1305_ref_open +SODIUM_EXPORT int +crypto_secretbox_xsalsa20poly1305_ref_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) +{ + return crypto_secretbox_xsalsa20poly1305_open(m, c, clen, n, k); +} + +#undef crypto_sign_ed25519_ref_seed_keypair +SODIUM_EXPORT int +crypto_sign_ed25519_ref_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) +{ + return crypto_sign_ed25519_seed_keypair(pk, sk, seed); +} + +#undef crypto_sign_ed25519_ref_keypair +SODIUM_EXPORT int +crypto_sign_ed25519_ref_keypair(unsigned char *pk, unsigned char *sk) +{ + return crypto_sign_ed25519_keypair(pk, sk); +} + +#undef crypto_sign_ed25519_ref +SODIUM_EXPORT int +crypto_sign_ed25519_ref(unsigned char *sm, unsigned long long *smlen, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) +{ + return crypto_sign_ed25519(sm, smlen, m, mlen, sk); +} + +#undef crypto_sign_ed25519_ref_open +SODIUM_EXPORT int +crypto_sign_ed25519_ref_open(unsigned char *m, unsigned long long *mlen, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) +{ + return crypto_sign_ed25519_open(m, mlen, sm, smlen, pk); +} + +#undef crypto_stream_xsalsa20_ref +SODIUM_EXPORT int +crypto_stream_xsalsa20_ref(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + return crypto_stream_xsalsa20(c, clen, n, k); +} + +#undef crypto_stream_xsalsa20_ref_xor +SODIUM_EXPORT int +crypto_stream_xsalsa20_ref_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_stream_xsalsa20_xor(c, m, mlen, n, k); +} + +#undef crypto_verify_16_ref +SODIUM_EXPORT int +crypto_verify_16_ref(const unsigned char *x, const unsigned char *y) +{ + return crypto_verify_16(x, y); +} + +#undef crypto_verify_32_ref +SODIUM_EXPORT int +crypto_verify_32_ref(const unsigned char *x, const unsigned char *y) +{ + return crypto_verify_32(x, y); +} + +#ifdef __cplusplus +} +#endif diff --git a/src/libsodium/src/libsodium/sodium/core.c b/src/libsodium/src/libsodium/sodium/core.c new file mode 100644 index 00000000..654b1ec8 --- /dev/null +++ b/src/libsodium/src/libsodium/sodium/core.c @@ -0,0 +1,23 @@ + +#include <stdbool.h> + +#include "core.h" +#include "crypto_onetimeauth.h" +#include "randombytes.h" + +static bool initialized; + +int +sodium_init(void) +{ + if (initialized != 0) { + return 1; + } + if (crypto_onetimeauth_pick_best_implementation() == NULL) { + return -1; + } + randombytes_stir(); + initialized = 1; + + return 0; +} diff --git a/src/libsodium/src/libsodium/sodium/utils.c b/src/libsodium/src/libsodium/sodium/utils.c new file mode 100644 index 00000000..74fc2d86 --- /dev/null +++ b/src/libsodium/src/libsodium/sodium/utils.c @@ -0,0 +1,89 @@ + +#include <limits.h> +#include <stddef.h> +#include <stdint.h> +#include <stdlib.h> +#include <string.h> + +#include "utils.h" +#include "randombytes.h" +#ifdef _WIN32 +# include <windows.h> +# include <wincrypt.h> +#endif + +void +sodium_memzero(void * const pnt, const size_t len) +{ +#ifdef HAVE_SECUREZEROMEMORY + SecureZeroMemory(pnt, len); +#else + volatile unsigned char *pnt_ = (volatile unsigned char *) pnt; + size_t i = (size_t) 0U; + + while (i < len) { + pnt_[i++] = 0U; + } +#endif +} + +int +sodium_memcmp(const void * const b1_, const void * const b2_, size_t size) +{ + const unsigned char *b1 = (const unsigned char *) b1_; + const unsigned char *b2 = (const unsigned char *) b2_; + size_t i; + unsigned char d = (unsigned char) 0U; + + for (i = 0U; i < size; i++) { + d |= b1[i] ^ b2[i]; + } + return (int) d; +} + +unsigned char * +_sodium_alignedcalloc(unsigned char ** const unaligned_p, const size_t len) +{ + unsigned char *aligned; + unsigned char *unaligned; + size_t i; + + if (SIZE_MAX - (size_t) 256U < len || + (unaligned = (unsigned char *) malloc(len + (size_t) 256U)) == NULL) { + *unaligned_p = NULL; + return NULL; + } + *unaligned_p = unaligned; + for (i = (size_t) 0U; i < len + (size_t) 256U; ++i) { + unaligned[i] = (unsigned char) rand(); + } + aligned = unaligned + 64; + aligned += (ptrdiff_t) 63 & (-(ptrdiff_t) aligned); + memset(aligned, 0, len); + + return aligned; +} + +char * +sodium_bin2hex(char * const hex, const size_t hexlen, + const unsigned char *bin, const size_t binlen) +{ + static const char hexdigits[16] = { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + }; + size_t i = (size_t) 0U; + size_t j = (size_t) 0U; + + if (binlen >= SIZE_MAX / 2 || hexlen < binlen * 2U) { + abort(); + } + while (i < binlen) { + hex[j++] = hexdigits[bin[i] >> 4]; + hex[j++] = hexdigits[bin[i] & 0xf]; + i++; + } + hex[j] = 0; + + return hex; +} diff --git a/src/libsodium/src/libsodium/sodium/version.c b/src/libsodium/src/libsodium/sodium/version.c new file mode 100644 index 00000000..4083c812 --- /dev/null +++ b/src/libsodium/src/libsodium/sodium/version.c @@ -0,0 +1,20 @@ + +#include "version.h" + +const char * +sodium_version_string(void) +{ + return SODIUM_VERSION_STRING; +} + +int +sodium_library_version_major(void) +{ + return SODIUM_LIBRARY_VERSION_MAJOR; +} + +int +sodium_library_version_minor(void) +{ + return SODIUM_LIBRARY_VERSION_MINOR; +} diff --git a/src/libsodium/test-driver b/src/libsodium/test-driver new file mode 100755 index 00000000..32bf39e8 --- /dev/null +++ b/src/libsodium/test-driver @@ -0,0 +1,127 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2012-06-27.10; # UTC + +# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to <bug-automake@gnu.org> or send patches to +# <automake-patches@gnu.org>. + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <<END +Usage: + test-driver --test-name=NAME --log-file=PATH --trs-file=PATH + [--expect-failure={yes|no}] [--color-tests={yes|no}] + [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT +The '--test-name', '--log-file' and '--trs-file' options are mandatory. +END +} + +# TODO: better error handling in option parsing (in particular, ensure +# TODO: $log_file, $trs_file and $test_name are defined). +test_name= # Used for reporting. +log_file= # Where to save the output of the test script. +trs_file= # Where to save the metadata of the test run. +expect_failure=no +color_tests=no +enable_hard_errors=yes +while test $# -gt 0; do + case $1 in + --help) print_usage; exit $?;; + --version) echo "test-driver $scriptversion"; exit $?;; + --test-name) test_name=$2; shift;; + --log-file) log_file=$2; shift;; + --trs-file) trs_file=$2; shift;; + --color-tests) color_tests=$2; shift;; + --expect-failure) expect_failure=$2; shift;; + --enable-hard-errors) enable_hard_errors=$2; shift;; + --) shift; break;; + -*) usage_error "invalid option: '$1'";; + esac + shift +done + +if test $color_tests = yes; then + # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'. + red='[0;31m' # Red. + grn='[0;32m' # Green. + lgn='[1;32m' # Light green. + blu='[1;34m' # Blue. + mgn='[0;35m' # Magenta. + std='[m' # No color. +else + red= grn= lgn= blu= mgn= std= +fi + +do_exit='rm -f $log_file $trs_file; (exit $st); exit $st' +trap "st=129; $do_exit" 1 +trap "st=130; $do_exit" 2 +trap "st=141; $do_exit" 13 +trap "st=143; $do_exit" 15 + +# Test script is run here. +"$@" >$log_file 2>&1 +estatus=$? +if test $enable_hard_errors = no && test $estatus -eq 99; then + estatus=1 +fi + +case $estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/src/libsodium/test/Makefile.am b/src/libsodium/test/Makefile.am new file mode 100644 index 00000000..346d2692 --- /dev/null +++ b/src/libsodium/test/Makefile.am @@ -0,0 +1,5 @@ +SUBDIRS = \ + default + +EXTRA_DIST = \ + quirks/windows/windows-quirks.h diff --git a/src/libsodium/test/Makefile.in b/src/libsodium/test/Makefile.in new file mode 100644 index 00000000..263a768d --- /dev/null +++ b/src/libsodium/test/Makefile.in @@ -0,0 +1,629 @@ +# Makefile.in generated by automake 1.14 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ + $(top_srcdir)/m4/ax_check_link_flag.m4 \ + $(top_srcdir)/m4/ld-output-def.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CWFLAGS = @CWFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_AMD64_ASM_V = @HAVE_AMD64_ASM_V@ +HAVE_CPUID_V = @HAVE_CPUID_V@ +HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@ +HAVE_TI_MODE_V = @HAVE_TI_MODE_V@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISODATE = @ISODATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_EXTRA_FLAGS = @LIBTOOL_EXTRA_FLAGS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SAFECODE_HOME = @SAFECODE_HOME@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SODIUM_LIBRARY_VERSION = @SODIUM_LIBRARY_VERSION@ +SODIUM_LIBRARY_VERSION_MAJOR = @SODIUM_LIBRARY_VERSION_MAJOR@ +SODIUM_LIBRARY_VERSION_MINOR = @SODIUM_LIBRARY_VERSION_MINOR@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = \ + default + +EXTRA_DIST = \ + quirks/windows/windows-quirks.h + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/libsodium/test/default/Makefile.am b/src/libsodium/test/default/Makefile.am new file mode 100644 index 00000000..45f2494c --- /dev/null +++ b/src/libsodium/test/default/Makefile.am @@ -0,0 +1,264 @@ + +EXTRA_DIST = \ + cmptest.h \ + auth.exp \ + auth2.exp \ + auth3.exp \ + auth5.exp \ + box.exp \ + box2.exp \ + box7.exp \ + box8.exp \ + core1.exp \ + core2.exp \ + core3.exp \ + core4.exp \ + core5.exp \ + core6.exp \ + generichash.exp \ + generichash2.exp \ + hash.exp \ + hash2.exp \ + hash3.exp \ + onetimeauth.exp \ + onetimeauth2.exp \ + onetimeauth7.exp \ + scalarmult.exp \ + scalarmult2.exp \ + scalarmult5.exp \ + scalarmult6.exp \ + secretbox.exp \ + secretbox2.exp \ + secretbox7.exp \ + secretbox8.exp \ + shorthash.exp \ + sodium_core.exp \ + sodium_utils.exp \ + sodium_version.exp \ + stream.exp \ + stream2.exp \ + stream3.exp \ + stream4.exp \ + stream5.exp \ + stream6.exp + +DISTCLEANFILES = \ + auth.res \ + auth2.res \ + auth3.res \ + auth5.res \ + box.res \ + box2.res \ + box7.res \ + box8.res \ + core1.res \ + core2.res \ + core3.res \ + core4.res \ + core5.res \ + core6.res \ + generichash.res \ + generichash2.res \ + hash.res \ + hash2.res \ + hash3.res \ + onetimeauth.res \ + onetimeauth2.res \ + onetimeauth7.res \ + scalarmult.res \ + scalarmult2.res \ + scalarmult5.res \ + scalarmult6.res \ + secretbox.res \ + secretbox2.res \ + secretbox7.res \ + secretbox8.res \ + shorthash.res \ + sodium_core.res \ + sodium_utils.res \ + sodium_version.res \ + stream.res \ + stream2.res \ + stream3.res \ + stream4.res \ + stream5.res \ + stream6.res + +AM_CPPFLAGS = \ + -DTEST_SRCDIR=\"@srcdir@\" \ + -I$(top_srcdir)/src/libsodium/include \ + -I$(top_srcdir)/src/libsodium/include/sodium \ + -I$(top_builddir)/src/libsodium/include \ + -I$(top_builddir)/src/libsodium/include/sodium \ + -I$(top_srcdir)/test/quirks + +TESTS_TARGETS = \ + auth \ + auth2 \ + auth3 \ + auth5 \ + box \ + box2 \ + box7 \ + box8 \ + core1 \ + core2 \ + core3 \ + core4 \ + core5 \ + core6 \ + generichash \ + generichash2 \ + hash \ + hash3 \ + onetimeauth \ + onetimeauth2 \ + onetimeauth7 \ + randombytes \ + scalarmult \ + scalarmult2 \ + scalarmult5 \ + scalarmult6 \ + secretbox \ + secretbox2 \ + secretbox7 \ + secretbox8 \ + shorthash \ + sodium_core \ + sodium_utils \ + sodium_version \ + stream \ + stream2 \ + stream3 \ + stream4 \ + stream5 \ + stream6 + +check_PROGRAMS = $(TESTS_TARGETS) + +TESTS = $(TESTS_TARGETS) + +TESTS_LDADD = \ + ${top_builddir}/src/libsodium/libsodium.la + +auth_SOURCE = cmptest.h auth.c +auth_LDADD = $(TESTS_LDADD) + +auth2_SOURCE = cmptest.h auth2.c +auth2_LDADD = $(TESTS_LDADD) + +auth3_SOURCE = cmptest.h auth3.c +auth3_LDADD = $(TESTS_LDADD) + +auth5_SOURCE = cmptest.h auth5.c windows/windows-quirks.h +auth5_LDADD = $(TESTS_LDADD) + +box_SOURCE = cmptest.h box.c +box_LDADD = $(TESTS_LDADD) + +box2_SOURCE = cmptest.h box2.c +box2_LDADD = $(TESTS_LDADD) + +box7_SOURCE = cmptest.h box7.c +box7_LDADD = $(TESTS_LDADD) + +box8_SOURCE = cmptest.h box8.c +box8_LDADD = $(TESTS_LDADD) + +core1_SOURCE = cmptest.h core1.c +core1_LDADD = $(TESTS_LDADD) + +core2_SOURCE = cmptest.h core2.c +core2_LDADD = $(TESTS_LDADD) + +core3_SOURCE = cmptest.h core3.c +core3_LDADD = $(TESTS_LDADD) + +core4_SOURCE = cmptest.h core4.c +core4_LDADD = $(TESTS_LDADD) + +core5_SOURCE = cmptest.h core5.c +core5_LDADD = $(TESTS_LDADD) + +core6_SOURCE = cmptest.h core6.c +core6_LDADD = $(TESTS_LDADD) + +generichash_SOURCE = cmptest.h generichash.c +generichash_LDADD = $(TESTS_LDADD) + +generichash2_SOURCE = cmptest.h generichash2.c +generichash2_LDADD = $(TESTS_LDADD) + +hash_SOURCE = cmptest.h hash.c +hash_LDADD = $(TESTS_LDADD) + +hash3_SOURCE = cmptest.h hash3.c +hash3_LDADD = $(TESTS_LDADD) + +onetimeauth_SOURCE = cmptest.h onetimeauth.c +onetimeauth_LDADD = $(TESTS_LDADD) + +onetimeauth2_SOURCE = cmptest.h onetimeauth2.c +onetimeauth2_LDADD = $(TESTS_LDADD) + +onetimeauth7_SOURCE = cmptest.h onetimeauth7.c +onetimeauth7_LDADD = $(TESTS_LDADD) + +randombytes_SOURCE = randombytes.c +randombytes_LDADD = $(TESTS_LDADD) + +scalarmult_SOURCE = cmptest.h scalarmult.c +scalarmult_LDADD = $(TESTS_LDADD) + +scalarmult2_SOURCE = cmptest.h scalarmult2.c +scalarmult2_LDADD = $(TESTS_LDADD) + +scalarmult5_SOURCE = cmptest.h scalarmult5.c +scalarmult5_LDADD = $(TESTS_LDADD) + +scalarmult6_SOURCE = cmptest.h scalarmult6.c +scalarmult6_LDADD = $(TESTS_LDADD) + +secretbox_SOURCE = cmptest.h secretbox.c +secretbox_LDADD = $(TESTS_LDADD) + +secretbox2_SOURCE = cmptest.h secretbox2.c +secretbox2_LDADD = $(TESTS_LDADD) + +secretbox7_SOURCE = cmptest.h secretbox7.c +secretbox7_LDADD = $(TESTS_LDADD) + +secretbox8_SOURCE = cmptest.h secretbox8.c +secretbox8_LDADD = $(TESTS_LDADD) + +shorthash_SOURCE = cmptest.h shorthash.c +shorthash_LDADD = $(TESTS_LDADD) + +sodium_core_SOURCE = cmptest.h sodium_core.c +sodium_core_LDADD = $(TESTS_LDADD) + +sodium_utils_SOURCE = cmptest.h sodium_utils.c +sodium_utils_LDADD = $(TESTS_LDADD) + +sodium_version_SOURCE = cmptest.h sodium_version.c +sodium_version_LDADD = $(TESTS_LDADD) + +stream_SOURCE = cmptest.h stream.c +stream_LDADD = $(TESTS_LDADD) + +stream2_SOURCE = cmptest.h stream2.c +stream2_LDADD = $(TESTS_LDADD) + +stream3_SOURCE = cmptest.h stream3.c +stream3_LDADD = $(TESTS_LDADD) + +stream4_SOURCE = cmptest.h stream4.c +stream4_LDADD = $(TESTS_LDADD) + +stream5_SOURCE = cmptest.h stream5.c +stream5_LDADD = $(TESTS_LDADD) + +stream6_SOURCE = cmptest.h stream6.c +stream6_LDADD = $(TESTS_LDADD) + +verify: check diff --git a/src/libsodium/test/default/Makefile.in b/src/libsodium/test/default/Makefile.in new file mode 100644 index 00000000..98813575 --- /dev/null +++ b/src/libsodium/test/default/Makefile.in @@ -0,0 +1,1797 @@ +# Makefile.in generated by automake 1.14 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = $(am__EXEEXT_1) +TESTS = $(am__EXEEXT_1) +subdir = test/default +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(top_srcdir)/test-driver +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ + $(top_srcdir)/m4/ax_check_link_flag.m4 \ + $(top_srcdir)/m4/ld-output-def.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__EXEEXT_1 = auth$(EXEEXT) auth2$(EXEEXT) auth3$(EXEEXT) \ + auth5$(EXEEXT) box$(EXEEXT) box2$(EXEEXT) box7$(EXEEXT) \ + box8$(EXEEXT) core1$(EXEEXT) core2$(EXEEXT) core3$(EXEEXT) \ + core4$(EXEEXT) core5$(EXEEXT) core6$(EXEEXT) \ + generichash$(EXEEXT) generichash2$(EXEEXT) hash$(EXEEXT) \ + hash3$(EXEEXT) onetimeauth$(EXEEXT) onetimeauth2$(EXEEXT) \ + onetimeauth7$(EXEEXT) randombytes$(EXEEXT) scalarmult$(EXEEXT) \ + scalarmult2$(EXEEXT) scalarmult5$(EXEEXT) scalarmult6$(EXEEXT) \ + secretbox$(EXEEXT) secretbox2$(EXEEXT) secretbox7$(EXEEXT) \ + secretbox8$(EXEEXT) shorthash$(EXEEXT) sodium_core$(EXEEXT) \ + sodium_utils$(EXEEXT) sodium_version$(EXEEXT) stream$(EXEEXT) \ + stream2$(EXEEXT) stream3$(EXEEXT) stream4$(EXEEXT) \ + stream5$(EXEEXT) stream6$(EXEEXT) +auth_SOURCES = auth.c +auth_OBJECTS = auth.$(OBJEXT) +auth_DEPENDENCIES = $(TESTS_LDADD) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +auth2_SOURCES = auth2.c +auth2_OBJECTS = auth2.$(OBJEXT) +auth2_DEPENDENCIES = $(TESTS_LDADD) +auth3_SOURCES = auth3.c +auth3_OBJECTS = auth3.$(OBJEXT) +auth3_DEPENDENCIES = $(TESTS_LDADD) +auth5_SOURCES = auth5.c +auth5_OBJECTS = auth5.$(OBJEXT) +auth5_DEPENDENCIES = $(TESTS_LDADD) +box_SOURCES = box.c +box_OBJECTS = box.$(OBJEXT) +box_DEPENDENCIES = $(TESTS_LDADD) +box2_SOURCES = box2.c +box2_OBJECTS = box2.$(OBJEXT) +box2_DEPENDENCIES = $(TESTS_LDADD) +box7_SOURCES = box7.c +box7_OBJECTS = box7.$(OBJEXT) +box7_DEPENDENCIES = $(TESTS_LDADD) +box8_SOURCES = box8.c +box8_OBJECTS = box8.$(OBJEXT) +box8_DEPENDENCIES = $(TESTS_LDADD) +core1_SOURCES = core1.c +core1_OBJECTS = core1.$(OBJEXT) +core1_DEPENDENCIES = $(TESTS_LDADD) +core2_SOURCES = core2.c +core2_OBJECTS = core2.$(OBJEXT) +core2_DEPENDENCIES = $(TESTS_LDADD) +core3_SOURCES = core3.c +core3_OBJECTS = core3.$(OBJEXT) +core3_DEPENDENCIES = $(TESTS_LDADD) +core4_SOURCES = core4.c +core4_OBJECTS = core4.$(OBJEXT) +core4_DEPENDENCIES = $(TESTS_LDADD) +core5_SOURCES = core5.c +core5_OBJECTS = core5.$(OBJEXT) +core5_DEPENDENCIES = $(TESTS_LDADD) +core6_SOURCES = core6.c +core6_OBJECTS = core6.$(OBJEXT) +core6_DEPENDENCIES = $(TESTS_LDADD) +generichash_SOURCES = generichash.c +generichash_OBJECTS = generichash.$(OBJEXT) +generichash_DEPENDENCIES = $(TESTS_LDADD) +generichash2_SOURCES = generichash2.c +generichash2_OBJECTS = generichash2.$(OBJEXT) +generichash2_DEPENDENCIES = $(TESTS_LDADD) +hash_SOURCES = hash.c +hash_OBJECTS = hash.$(OBJEXT) +hash_DEPENDENCIES = $(TESTS_LDADD) +hash3_SOURCES = hash3.c +hash3_OBJECTS = hash3.$(OBJEXT) +hash3_DEPENDENCIES = $(TESTS_LDADD) +onetimeauth_SOURCES = onetimeauth.c +onetimeauth_OBJECTS = onetimeauth.$(OBJEXT) +onetimeauth_DEPENDENCIES = $(TESTS_LDADD) +onetimeauth2_SOURCES = onetimeauth2.c +onetimeauth2_OBJECTS = onetimeauth2.$(OBJEXT) +onetimeauth2_DEPENDENCIES = $(TESTS_LDADD) +onetimeauth7_SOURCES = onetimeauth7.c +onetimeauth7_OBJECTS = onetimeauth7.$(OBJEXT) +onetimeauth7_DEPENDENCIES = $(TESTS_LDADD) +randombytes_SOURCES = randombytes.c +randombytes_OBJECTS = randombytes.$(OBJEXT) +randombytes_DEPENDENCIES = $(TESTS_LDADD) +scalarmult_SOURCES = scalarmult.c +scalarmult_OBJECTS = scalarmult.$(OBJEXT) +scalarmult_DEPENDENCIES = $(TESTS_LDADD) +scalarmult2_SOURCES = scalarmult2.c +scalarmult2_OBJECTS = scalarmult2.$(OBJEXT) +scalarmult2_DEPENDENCIES = $(TESTS_LDADD) +scalarmult5_SOURCES = scalarmult5.c +scalarmult5_OBJECTS = scalarmult5.$(OBJEXT) +scalarmult5_DEPENDENCIES = $(TESTS_LDADD) +scalarmult6_SOURCES = scalarmult6.c +scalarmult6_OBJECTS = scalarmult6.$(OBJEXT) +scalarmult6_DEPENDENCIES = $(TESTS_LDADD) +secretbox_SOURCES = secretbox.c +secretbox_OBJECTS = secretbox.$(OBJEXT) +secretbox_DEPENDENCIES = $(TESTS_LDADD) +secretbox2_SOURCES = secretbox2.c +secretbox2_OBJECTS = secretbox2.$(OBJEXT) +secretbox2_DEPENDENCIES = $(TESTS_LDADD) +secretbox7_SOURCES = secretbox7.c +secretbox7_OBJECTS = secretbox7.$(OBJEXT) +secretbox7_DEPENDENCIES = $(TESTS_LDADD) +secretbox8_SOURCES = secretbox8.c +secretbox8_OBJECTS = secretbox8.$(OBJEXT) +secretbox8_DEPENDENCIES = $(TESTS_LDADD) +shorthash_SOURCES = shorthash.c +shorthash_OBJECTS = shorthash.$(OBJEXT) +shorthash_DEPENDENCIES = $(TESTS_LDADD) +sodium_core_SOURCES = sodium_core.c +sodium_core_OBJECTS = sodium_core.$(OBJEXT) +sodium_core_DEPENDENCIES = $(TESTS_LDADD) +sodium_utils_SOURCES = sodium_utils.c +sodium_utils_OBJECTS = sodium_utils.$(OBJEXT) +sodium_utils_DEPENDENCIES = $(TESTS_LDADD) +sodium_version_SOURCES = sodium_version.c +sodium_version_OBJECTS = sodium_version.$(OBJEXT) +sodium_version_DEPENDENCIES = $(TESTS_LDADD) +stream_SOURCES = stream.c +stream_OBJECTS = stream.$(OBJEXT) +stream_DEPENDENCIES = $(TESTS_LDADD) +stream2_SOURCES = stream2.c +stream2_OBJECTS = stream2.$(OBJEXT) +stream2_DEPENDENCIES = $(TESTS_LDADD) +stream3_SOURCES = stream3.c +stream3_OBJECTS = stream3.$(OBJEXT) +stream3_DEPENDENCIES = $(TESTS_LDADD) +stream4_SOURCES = stream4.c +stream4_OBJECTS = stream4.$(OBJEXT) +stream4_DEPENDENCIES = $(TESTS_LDADD) +stream5_SOURCES = stream5.c +stream5_OBJECTS = stream5.$(OBJEXT) +stream5_DEPENDENCIES = $(TESTS_LDADD) +stream6_SOURCES = stream6.c +stream6_OBJECTS = stream6.$(OBJEXT) +stream6_DEPENDENCIES = $(TESTS_LDADD) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = auth.c auth2.c auth3.c auth5.c box.c box2.c box7.c box8.c \ + core1.c core2.c core3.c core4.c core5.c core6.c generichash.c \ + generichash2.c hash.c hash3.c onetimeauth.c onetimeauth2.c \ + onetimeauth7.c randombytes.c scalarmult.c scalarmult2.c \ + scalarmult5.c scalarmult6.c secretbox.c secretbox2.c \ + secretbox7.c secretbox8.c shorthash.c sodium_core.c \ + sodium_utils.c sodium_version.c stream.c stream2.c stream3.c \ + stream4.c stream5.c stream6.c +DIST_SOURCES = auth.c auth2.c auth3.c auth5.c box.c box2.c box7.c \ + box8.c core1.c core2.c core3.c core4.c core5.c core6.c \ + generichash.c generichash2.c hash.c hash3.c onetimeauth.c \ + onetimeauth2.c onetimeauth7.c randombytes.c scalarmult.c \ + scalarmult2.c scalarmult5.c scalarmult6.c secretbox.c \ + secretbox2.c secretbox7.c secretbox8.c shorthash.c \ + sodium_core.c sodium_utils.c sodium_version.c stream.c \ + stream2.c stream3.c stream4.c stream5.c stream6.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red='[0;31m'; \ + grn='[0;32m'; \ + lgn='[1;32m'; \ + blu='[1;34m'; \ + mgn='[0;35m'; \ + brg='[1m'; \ + std='[m'; \ + fi; \ +} +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CWFLAGS = @CWFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_AMD64_ASM_V = @HAVE_AMD64_ASM_V@ +HAVE_CPUID_V = @HAVE_CPUID_V@ +HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@ +HAVE_TI_MODE_V = @HAVE_TI_MODE_V@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISODATE = @ISODATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_EXTRA_FLAGS = @LIBTOOL_EXTRA_FLAGS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SAFECODE_HOME = @SAFECODE_HOME@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SODIUM_LIBRARY_VERSION = @SODIUM_LIBRARY_VERSION@ +SODIUM_LIBRARY_VERSION_MAJOR = @SODIUM_LIBRARY_VERSION_MAJOR@ +SODIUM_LIBRARY_VERSION_MINOR = @SODIUM_LIBRARY_VERSION_MINOR@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = \ + cmptest.h \ + auth.exp \ + auth2.exp \ + auth3.exp \ + auth5.exp \ + box.exp \ + box2.exp \ + box7.exp \ + box8.exp \ + core1.exp \ + core2.exp \ + core3.exp \ + core4.exp \ + core5.exp \ + core6.exp \ + generichash.exp \ + generichash2.exp \ + hash.exp \ + hash2.exp \ + hash3.exp \ + onetimeauth.exp \ + onetimeauth2.exp \ + onetimeauth7.exp \ + scalarmult.exp \ + scalarmult2.exp \ + scalarmult5.exp \ + scalarmult6.exp \ + secretbox.exp \ + secretbox2.exp \ + secretbox7.exp \ + secretbox8.exp \ + shorthash.exp \ + sodium_core.exp \ + sodium_utils.exp \ + sodium_version.exp \ + stream.exp \ + stream2.exp \ + stream3.exp \ + stream4.exp \ + stream5.exp \ + stream6.exp + +DISTCLEANFILES = \ + auth.res \ + auth2.res \ + auth3.res \ + auth5.res \ + box.res \ + box2.res \ + box7.res \ + box8.res \ + core1.res \ + core2.res \ + core3.res \ + core4.res \ + core5.res \ + core6.res \ + generichash.res \ + generichash2.res \ + hash.res \ + hash2.res \ + hash3.res \ + onetimeauth.res \ + onetimeauth2.res \ + onetimeauth7.res \ + scalarmult.res \ + scalarmult2.res \ + scalarmult5.res \ + scalarmult6.res \ + secretbox.res \ + secretbox2.res \ + secretbox7.res \ + secretbox8.res \ + shorthash.res \ + sodium_core.res \ + sodium_utils.res \ + sodium_version.res \ + stream.res \ + stream2.res \ + stream3.res \ + stream4.res \ + stream5.res \ + stream6.res + +AM_CPPFLAGS = \ + -DTEST_SRCDIR=\"@srcdir@\" \ + -I$(top_srcdir)/src/libsodium/include \ + -I$(top_srcdir)/src/libsodium/include/sodium \ + -I$(top_builddir)/src/libsodium/include \ + -I$(top_builddir)/src/libsodium/include/sodium \ + -I$(top_srcdir)/test/quirks + +TESTS_TARGETS = \ + auth \ + auth2 \ + auth3 \ + auth5 \ + box \ + box2 \ + box7 \ + box8 \ + core1 \ + core2 \ + core3 \ + core4 \ + core5 \ + core6 \ + generichash \ + generichash2 \ + hash \ + hash3 \ + onetimeauth \ + onetimeauth2 \ + onetimeauth7 \ + randombytes \ + scalarmult \ + scalarmult2 \ + scalarmult5 \ + scalarmult6 \ + secretbox \ + secretbox2 \ + secretbox7 \ + secretbox8 \ + shorthash \ + sodium_core \ + sodium_utils \ + sodium_version \ + stream \ + stream2 \ + stream3 \ + stream4 \ + stream5 \ + stream6 + +TESTS_LDADD = \ + ${top_builddir}/src/libsodium/libsodium.la + +auth_SOURCE = cmptest.h auth.c +auth_LDADD = $(TESTS_LDADD) +auth2_SOURCE = cmptest.h auth2.c +auth2_LDADD = $(TESTS_LDADD) +auth3_SOURCE = cmptest.h auth3.c +auth3_LDADD = $(TESTS_LDADD) +auth5_SOURCE = cmptest.h auth5.c windows/windows-quirks.h +auth5_LDADD = $(TESTS_LDADD) +box_SOURCE = cmptest.h box.c +box_LDADD = $(TESTS_LDADD) +box2_SOURCE = cmptest.h box2.c +box2_LDADD = $(TESTS_LDADD) +box7_SOURCE = cmptest.h box7.c +box7_LDADD = $(TESTS_LDADD) +box8_SOURCE = cmptest.h box8.c +box8_LDADD = $(TESTS_LDADD) +core1_SOURCE = cmptest.h core1.c +core1_LDADD = $(TESTS_LDADD) +core2_SOURCE = cmptest.h core2.c +core2_LDADD = $(TESTS_LDADD) +core3_SOURCE = cmptest.h core3.c +core3_LDADD = $(TESTS_LDADD) +core4_SOURCE = cmptest.h core4.c +core4_LDADD = $(TESTS_LDADD) +core5_SOURCE = cmptest.h core5.c +core5_LDADD = $(TESTS_LDADD) +core6_SOURCE = cmptest.h core6.c +core6_LDADD = $(TESTS_LDADD) +generichash_SOURCE = cmptest.h generichash.c +generichash_LDADD = $(TESTS_LDADD) +generichash2_SOURCE = cmptest.h generichash2.c +generichash2_LDADD = $(TESTS_LDADD) +hash_SOURCE = cmptest.h hash.c +hash_LDADD = $(TESTS_LDADD) +hash3_SOURCE = cmptest.h hash3.c +hash3_LDADD = $(TESTS_LDADD) +onetimeauth_SOURCE = cmptest.h onetimeauth.c +onetimeauth_LDADD = $(TESTS_LDADD) +onetimeauth2_SOURCE = cmptest.h onetimeauth2.c +onetimeauth2_LDADD = $(TESTS_LDADD) +onetimeauth7_SOURCE = cmptest.h onetimeauth7.c +onetimeauth7_LDADD = $(TESTS_LDADD) +randombytes_SOURCE = randombytes.c +randombytes_LDADD = $(TESTS_LDADD) +scalarmult_SOURCE = cmptest.h scalarmult.c +scalarmult_LDADD = $(TESTS_LDADD) +scalarmult2_SOURCE = cmptest.h scalarmult2.c +scalarmult2_LDADD = $(TESTS_LDADD) +scalarmult5_SOURCE = cmptest.h scalarmult5.c +scalarmult5_LDADD = $(TESTS_LDADD) +scalarmult6_SOURCE = cmptest.h scalarmult6.c +scalarmult6_LDADD = $(TESTS_LDADD) +secretbox_SOURCE = cmptest.h secretbox.c +secretbox_LDADD = $(TESTS_LDADD) +secretbox2_SOURCE = cmptest.h secretbox2.c +secretbox2_LDADD = $(TESTS_LDADD) +secretbox7_SOURCE = cmptest.h secretbox7.c +secretbox7_LDADD = $(TESTS_LDADD) +secretbox8_SOURCE = cmptest.h secretbox8.c +secretbox8_LDADD = $(TESTS_LDADD) +shorthash_SOURCE = cmptest.h shorthash.c +shorthash_LDADD = $(TESTS_LDADD) +sodium_core_SOURCE = cmptest.h sodium_core.c +sodium_core_LDADD = $(TESTS_LDADD) +sodium_utils_SOURCE = cmptest.h sodium_utils.c +sodium_utils_LDADD = $(TESTS_LDADD) +sodium_version_SOURCE = cmptest.h sodium_version.c +sodium_version_LDADD = $(TESTS_LDADD) +stream_SOURCE = cmptest.h stream.c +stream_LDADD = $(TESTS_LDADD) +stream2_SOURCE = cmptest.h stream2.c +stream2_LDADD = $(TESTS_LDADD) +stream3_SOURCE = cmptest.h stream3.c +stream3_LDADD = $(TESTS_LDADD) +stream4_SOURCE = cmptest.h stream4.c +stream4_LDADD = $(TESTS_LDADD) +stream5_SOURCE = cmptest.h stream5.c +stream5_LDADD = $(TESTS_LDADD) +stream6_SOURCE = cmptest.h stream6.c +stream6_LDADD = $(TESTS_LDADD) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/default/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/default/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +auth$(EXEEXT): $(auth_OBJECTS) $(auth_DEPENDENCIES) $(EXTRA_auth_DEPENDENCIES) + @rm -f auth$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(auth_OBJECTS) $(auth_LDADD) $(LIBS) + +auth2$(EXEEXT): $(auth2_OBJECTS) $(auth2_DEPENDENCIES) $(EXTRA_auth2_DEPENDENCIES) + @rm -f auth2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(auth2_OBJECTS) $(auth2_LDADD) $(LIBS) + +auth3$(EXEEXT): $(auth3_OBJECTS) $(auth3_DEPENDENCIES) $(EXTRA_auth3_DEPENDENCIES) + @rm -f auth3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(auth3_OBJECTS) $(auth3_LDADD) $(LIBS) + +auth5$(EXEEXT): $(auth5_OBJECTS) $(auth5_DEPENDENCIES) $(EXTRA_auth5_DEPENDENCIES) + @rm -f auth5$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(auth5_OBJECTS) $(auth5_LDADD) $(LIBS) + +box$(EXEEXT): $(box_OBJECTS) $(box_DEPENDENCIES) $(EXTRA_box_DEPENDENCIES) + @rm -f box$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(box_OBJECTS) $(box_LDADD) $(LIBS) + +box2$(EXEEXT): $(box2_OBJECTS) $(box2_DEPENDENCIES) $(EXTRA_box2_DEPENDENCIES) + @rm -f box2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(box2_OBJECTS) $(box2_LDADD) $(LIBS) + +box7$(EXEEXT): $(box7_OBJECTS) $(box7_DEPENDENCIES) $(EXTRA_box7_DEPENDENCIES) + @rm -f box7$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(box7_OBJECTS) $(box7_LDADD) $(LIBS) + +box8$(EXEEXT): $(box8_OBJECTS) $(box8_DEPENDENCIES) $(EXTRA_box8_DEPENDENCIES) + @rm -f box8$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(box8_OBJECTS) $(box8_LDADD) $(LIBS) + +core1$(EXEEXT): $(core1_OBJECTS) $(core1_DEPENDENCIES) $(EXTRA_core1_DEPENDENCIES) + @rm -f core1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(core1_OBJECTS) $(core1_LDADD) $(LIBS) + +core2$(EXEEXT): $(core2_OBJECTS) $(core2_DEPENDENCIES) $(EXTRA_core2_DEPENDENCIES) + @rm -f core2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(core2_OBJECTS) $(core2_LDADD) $(LIBS) + +core3$(EXEEXT): $(core3_OBJECTS) $(core3_DEPENDENCIES) $(EXTRA_core3_DEPENDENCIES) + @rm -f core3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(core3_OBJECTS) $(core3_LDADD) $(LIBS) + +core4$(EXEEXT): $(core4_OBJECTS) $(core4_DEPENDENCIES) $(EXTRA_core4_DEPENDENCIES) + @rm -f core4$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(core4_OBJECTS) $(core4_LDADD) $(LIBS) + +core5$(EXEEXT): $(core5_OBJECTS) $(core5_DEPENDENCIES) $(EXTRA_core5_DEPENDENCIES) + @rm -f core5$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(core5_OBJECTS) $(core5_LDADD) $(LIBS) + +core6$(EXEEXT): $(core6_OBJECTS) $(core6_DEPENDENCIES) $(EXTRA_core6_DEPENDENCIES) + @rm -f core6$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(core6_OBJECTS) $(core6_LDADD) $(LIBS) + +generichash$(EXEEXT): $(generichash_OBJECTS) $(generichash_DEPENDENCIES) $(EXTRA_generichash_DEPENDENCIES) + @rm -f generichash$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(generichash_OBJECTS) $(generichash_LDADD) $(LIBS) + +generichash2$(EXEEXT): $(generichash2_OBJECTS) $(generichash2_DEPENDENCIES) $(EXTRA_generichash2_DEPENDENCIES) + @rm -f generichash2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(generichash2_OBJECTS) $(generichash2_LDADD) $(LIBS) + +hash$(EXEEXT): $(hash_OBJECTS) $(hash_DEPENDENCIES) $(EXTRA_hash_DEPENDENCIES) + @rm -f hash$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(hash_OBJECTS) $(hash_LDADD) $(LIBS) + +hash3$(EXEEXT): $(hash3_OBJECTS) $(hash3_DEPENDENCIES) $(EXTRA_hash3_DEPENDENCIES) + @rm -f hash3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(hash3_OBJECTS) $(hash3_LDADD) $(LIBS) + +onetimeauth$(EXEEXT): $(onetimeauth_OBJECTS) $(onetimeauth_DEPENDENCIES) $(EXTRA_onetimeauth_DEPENDENCIES) + @rm -f onetimeauth$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(onetimeauth_OBJECTS) $(onetimeauth_LDADD) $(LIBS) + +onetimeauth2$(EXEEXT): $(onetimeauth2_OBJECTS) $(onetimeauth2_DEPENDENCIES) $(EXTRA_onetimeauth2_DEPENDENCIES) + @rm -f onetimeauth2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(onetimeauth2_OBJECTS) $(onetimeauth2_LDADD) $(LIBS) + +onetimeauth7$(EXEEXT): $(onetimeauth7_OBJECTS) $(onetimeauth7_DEPENDENCIES) $(EXTRA_onetimeauth7_DEPENDENCIES) + @rm -f onetimeauth7$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(onetimeauth7_OBJECTS) $(onetimeauth7_LDADD) $(LIBS) + +randombytes$(EXEEXT): $(randombytes_OBJECTS) $(randombytes_DEPENDENCIES) $(EXTRA_randombytes_DEPENDENCIES) + @rm -f randombytes$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(randombytes_OBJECTS) $(randombytes_LDADD) $(LIBS) + +scalarmult$(EXEEXT): $(scalarmult_OBJECTS) $(scalarmult_DEPENDENCIES) $(EXTRA_scalarmult_DEPENDENCIES) + @rm -f scalarmult$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(scalarmult_OBJECTS) $(scalarmult_LDADD) $(LIBS) + +scalarmult2$(EXEEXT): $(scalarmult2_OBJECTS) $(scalarmult2_DEPENDENCIES) $(EXTRA_scalarmult2_DEPENDENCIES) + @rm -f scalarmult2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(scalarmult2_OBJECTS) $(scalarmult2_LDADD) $(LIBS) + +scalarmult5$(EXEEXT): $(scalarmult5_OBJECTS) $(scalarmult5_DEPENDENCIES) $(EXTRA_scalarmult5_DEPENDENCIES) + @rm -f scalarmult5$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(scalarmult5_OBJECTS) $(scalarmult5_LDADD) $(LIBS) + +scalarmult6$(EXEEXT): $(scalarmult6_OBJECTS) $(scalarmult6_DEPENDENCIES) $(EXTRA_scalarmult6_DEPENDENCIES) + @rm -f scalarmult6$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(scalarmult6_OBJECTS) $(scalarmult6_LDADD) $(LIBS) + +secretbox$(EXEEXT): $(secretbox_OBJECTS) $(secretbox_DEPENDENCIES) $(EXTRA_secretbox_DEPENDENCIES) + @rm -f secretbox$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(secretbox_OBJECTS) $(secretbox_LDADD) $(LIBS) + +secretbox2$(EXEEXT): $(secretbox2_OBJECTS) $(secretbox2_DEPENDENCIES) $(EXTRA_secretbox2_DEPENDENCIES) + @rm -f secretbox2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(secretbox2_OBJECTS) $(secretbox2_LDADD) $(LIBS) + +secretbox7$(EXEEXT): $(secretbox7_OBJECTS) $(secretbox7_DEPENDENCIES) $(EXTRA_secretbox7_DEPENDENCIES) + @rm -f secretbox7$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(secretbox7_OBJECTS) $(secretbox7_LDADD) $(LIBS) + +secretbox8$(EXEEXT): $(secretbox8_OBJECTS) $(secretbox8_DEPENDENCIES) $(EXTRA_secretbox8_DEPENDENCIES) + @rm -f secretbox8$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(secretbox8_OBJECTS) $(secretbox8_LDADD) $(LIBS) + +shorthash$(EXEEXT): $(shorthash_OBJECTS) $(shorthash_DEPENDENCIES) $(EXTRA_shorthash_DEPENDENCIES) + @rm -f shorthash$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shorthash_OBJECTS) $(shorthash_LDADD) $(LIBS) + +sodium_core$(EXEEXT): $(sodium_core_OBJECTS) $(sodium_core_DEPENDENCIES) $(EXTRA_sodium_core_DEPENDENCIES) + @rm -f sodium_core$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sodium_core_OBJECTS) $(sodium_core_LDADD) $(LIBS) + +sodium_utils$(EXEEXT): $(sodium_utils_OBJECTS) $(sodium_utils_DEPENDENCIES) $(EXTRA_sodium_utils_DEPENDENCIES) + @rm -f sodium_utils$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sodium_utils_OBJECTS) $(sodium_utils_LDADD) $(LIBS) + +sodium_version$(EXEEXT): $(sodium_version_OBJECTS) $(sodium_version_DEPENDENCIES) $(EXTRA_sodium_version_DEPENDENCIES) + @rm -f sodium_version$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sodium_version_OBJECTS) $(sodium_version_LDADD) $(LIBS) + +stream$(EXEEXT): $(stream_OBJECTS) $(stream_DEPENDENCIES) $(EXTRA_stream_DEPENDENCIES) + @rm -f stream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(stream_OBJECTS) $(stream_LDADD) $(LIBS) + +stream2$(EXEEXT): $(stream2_OBJECTS) $(stream2_DEPENDENCIES) $(EXTRA_stream2_DEPENDENCIES) + @rm -f stream2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(stream2_OBJECTS) $(stream2_LDADD) $(LIBS) + +stream3$(EXEEXT): $(stream3_OBJECTS) $(stream3_DEPENDENCIES) $(EXTRA_stream3_DEPENDENCIES) + @rm -f stream3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(stream3_OBJECTS) $(stream3_LDADD) $(LIBS) + +stream4$(EXEEXT): $(stream4_OBJECTS) $(stream4_DEPENDENCIES) $(EXTRA_stream4_DEPENDENCIES) + @rm -f stream4$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(stream4_OBJECTS) $(stream4_LDADD) $(LIBS) + +stream5$(EXEEXT): $(stream5_OBJECTS) $(stream5_DEPENDENCIES) $(EXTRA_stream5_DEPENDENCIES) + @rm -f stream5$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(stream5_OBJECTS) $(stream5_LDADD) $(LIBS) + +stream6$(EXEEXT): $(stream6_OBJECTS) $(stream6_DEPENDENCIES) $(EXTRA_stream6_DEPENDENCIES) + @rm -f stream6$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(stream6_OBJECTS) $(stream6_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/box.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/box2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/box7.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/box8.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/core1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/core2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/core3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/core4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/core5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/core6.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generichash.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generichash2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/onetimeauth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/onetimeauth2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/onetimeauth7.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/randombytes.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalarmult.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalarmult2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalarmult5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalarmult6.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/secretbox.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/secretbox2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/secretbox7.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/secretbox8.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shorthash.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sodium_core.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sodium_utils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sodium_version.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream6.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +auth.log: auth$(EXEEXT) + @p='auth$(EXEEXT)'; \ + b='auth'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +auth2.log: auth2$(EXEEXT) + @p='auth2$(EXEEXT)'; \ + b='auth2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +auth3.log: auth3$(EXEEXT) + @p='auth3$(EXEEXT)'; \ + b='auth3'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +auth5.log: auth5$(EXEEXT) + @p='auth5$(EXEEXT)'; \ + b='auth5'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +box.log: box$(EXEEXT) + @p='box$(EXEEXT)'; \ + b='box'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +box2.log: box2$(EXEEXT) + @p='box2$(EXEEXT)'; \ + b='box2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +box7.log: box7$(EXEEXT) + @p='box7$(EXEEXT)'; \ + b='box7'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +box8.log: box8$(EXEEXT) + @p='box8$(EXEEXT)'; \ + b='box8'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +core1.log: core1$(EXEEXT) + @p='core1$(EXEEXT)'; \ + b='core1'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +core2.log: core2$(EXEEXT) + @p='core2$(EXEEXT)'; \ + b='core2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +core3.log: core3$(EXEEXT) + @p='core3$(EXEEXT)'; \ + b='core3'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +core4.log: core4$(EXEEXT) + @p='core4$(EXEEXT)'; \ + b='core4'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +core5.log: core5$(EXEEXT) + @p='core5$(EXEEXT)'; \ + b='core5'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +core6.log: core6$(EXEEXT) + @p='core6$(EXEEXT)'; \ + b='core6'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +generichash.log: generichash$(EXEEXT) + @p='generichash$(EXEEXT)'; \ + b='generichash'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +generichash2.log: generichash2$(EXEEXT) + @p='generichash2$(EXEEXT)'; \ + b='generichash2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +hash.log: hash$(EXEEXT) + @p='hash$(EXEEXT)'; \ + b='hash'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +hash3.log: hash3$(EXEEXT) + @p='hash3$(EXEEXT)'; \ + b='hash3'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +onetimeauth.log: onetimeauth$(EXEEXT) + @p='onetimeauth$(EXEEXT)'; \ + b='onetimeauth'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +onetimeauth2.log: onetimeauth2$(EXEEXT) + @p='onetimeauth2$(EXEEXT)'; \ + b='onetimeauth2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +onetimeauth7.log: onetimeauth7$(EXEEXT) + @p='onetimeauth7$(EXEEXT)'; \ + b='onetimeauth7'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +randombytes.log: randombytes$(EXEEXT) + @p='randombytes$(EXEEXT)'; \ + b='randombytes'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +scalarmult.log: scalarmult$(EXEEXT) + @p='scalarmult$(EXEEXT)'; \ + b='scalarmult'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +scalarmult2.log: scalarmult2$(EXEEXT) + @p='scalarmult2$(EXEEXT)'; \ + b='scalarmult2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +scalarmult5.log: scalarmult5$(EXEEXT) + @p='scalarmult5$(EXEEXT)'; \ + b='scalarmult5'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +scalarmult6.log: scalarmult6$(EXEEXT) + @p='scalarmult6$(EXEEXT)'; \ + b='scalarmult6'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +secretbox.log: secretbox$(EXEEXT) + @p='secretbox$(EXEEXT)'; \ + b='secretbox'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +secretbox2.log: secretbox2$(EXEEXT) + @p='secretbox2$(EXEEXT)'; \ + b='secretbox2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +secretbox7.log: secretbox7$(EXEEXT) + @p='secretbox7$(EXEEXT)'; \ + b='secretbox7'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +secretbox8.log: secretbox8$(EXEEXT) + @p='secretbox8$(EXEEXT)'; \ + b='secretbox8'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +shorthash.log: shorthash$(EXEEXT) + @p='shorthash$(EXEEXT)'; \ + b='shorthash'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +sodium_core.log: sodium_core$(EXEEXT) + @p='sodium_core$(EXEEXT)'; \ + b='sodium_core'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +sodium_utils.log: sodium_utils$(EXEEXT) + @p='sodium_utils$(EXEEXT)'; \ + b='sodium_utils'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +sodium_version.log: sodium_version$(EXEEXT) + @p='sodium_version$(EXEEXT)'; \ + b='sodium_version'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +stream.log: stream$(EXEEXT) + @p='stream$(EXEEXT)'; \ + b='stream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +stream2.log: stream2$(EXEEXT) + @p='stream2$(EXEEXT)'; \ + b='stream2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +stream3.log: stream3$(EXEEXT) + @p='stream3$(EXEEXT)'; \ + b='stream3'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +stream4.log: stream4$(EXEEXT) + @p='stream4$(EXEEXT)'; \ + b='stream4'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +stream5.log: stream5$(EXEEXT) + @p='stream5$(EXEEXT)'; \ + b='stream5'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +stream6.log: stream6$(EXEEXT) + @p='stream6$(EXEEXT)'; \ + b='stream6'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am + + +verify: check + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/libsodium/test/default/auth.c b/src/libsodium/test/default/auth.c new file mode 100644 index 00000000..88c8207f --- /dev/null +++ b/src/libsodium/test/default/auth.c @@ -0,0 +1,21 @@ +#include <stdio.h> + +#define TEST_NAME "auth" +#include "cmptest.h" + +/* "Test Case 2" from RFC 4231 */ +unsigned char key[32] = "Jefe"; +unsigned char c[] = "what do ya want for nothing?"; + +unsigned char a[32]; + +int main(void) +{ + int i; + crypto_auth_hmacsha512256(a,c,sizeof c - 1U,key); + for (i = 0;i < 32;++i) { + printf(",0x%02x",(unsigned int) a[i]); + if (i % 8 == 7) printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/auth.exp b/src/libsodium/test/default/auth.exp new file mode 100644 index 00000000..35e5909d --- /dev/null +++ b/src/libsodium/test/default/auth.exp @@ -0,0 +1,4 @@ +,0x16,0x4b,0x7a,0x7b,0xfc,0xf8,0x19,0xe2 +,0xe3,0x95,0xfb,0xe7,0x3b,0x56,0xe0,0xa3 +,0x87,0xbd,0x64,0x22,0x2e,0x83,0x1f,0xd6 +,0x10,0x27,0x0c,0xd7,0xea,0x25,0x05,0x54 diff --git a/src/libsodium/test/default/auth2.c b/src/libsodium/test/default/auth2.c new file mode 100644 index 00000000..b3301cfe --- /dev/null +++ b/src/libsodium/test/default/auth2.c @@ -0,0 +1,36 @@ +/* "Test Case AUTH256-4" from RFC 4868 */ + +#include <stdio.h> + +#define TEST_NAME "auth2" +#include "cmptest.h" + +unsigned char key[32] = { + 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08 +,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10 +,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18 +,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20 +} ; + +unsigned char c[50] = { + 0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd +,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd +,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd +,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd +,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd +,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd +,0xcd,0xcd +} ; + +unsigned char a[32]; + +int main(void) +{ + int i; + crypto_auth_hmacsha256(a,c,sizeof c,key); + for (i = 0;i < 32;++i) { + printf(",0x%02x",(unsigned int) a[i]); + if (i % 8 == 7) printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/auth2.exp b/src/libsodium/test/default/auth2.exp new file mode 100644 index 00000000..955951a2 --- /dev/null +++ b/src/libsodium/test/default/auth2.exp @@ -0,0 +1,4 @@ +,0x37,0x2e,0xfc,0xf9,0xb4,0x0b,0x35,0xc2 +,0x11,0x5b,0x13,0x46,0x90,0x3d,0x2e,0xf4 +,0x2f,0xce,0xd4,0x6f,0x08,0x46,0xe7,0x25 +,0x7b,0xb1,0x56,0xd3,0xd7,0xb3,0x0d,0x3f diff --git a/src/libsodium/test/default/auth3.c b/src/libsodium/test/default/auth3.c new file mode 100644 index 00000000..08e275ad --- /dev/null +++ b/src/libsodium/test/default/auth3.c @@ -0,0 +1,36 @@ +/* "Test Case AUTH256-4" from RFC 4868 */ + +#include <stdio.h> + +#define TEST_NAME "auth3" +#include "cmptest.h" + +unsigned char key[32] = { + 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08 +,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10 +,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18 +,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20 +} ; + +unsigned char c[50] = { + 0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd +,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd +,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd +,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd +,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd +,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd +,0xcd,0xcd +} ; + +unsigned char a[32] = { + 0x37,0x2e,0xfc,0xf9,0xb4,0x0b,0x35,0xc2 +,0x11,0x5b,0x13,0x46,0x90,0x3d,0x2e,0xf4 +,0x2f,0xce,0xd4,0x6f,0x08,0x46,0xe7,0x25 +,0x7b,0xb1,0x56,0xd3,0xd7,0xb3,0x0d,0x3f +} ; + +int main(void) +{ + printf("%d\n",crypto_auth_hmacsha256_verify(a,c,sizeof c,key)); + return 0; +} diff --git a/src/libsodium/test/default/auth3.exp b/src/libsodium/test/default/auth3.exp new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/src/libsodium/test/default/auth3.exp @@ -0,0 +1 @@ +0 diff --git a/src/libsodium/test/default/auth5.c b/src/libsodium/test/default/auth5.c new file mode 100644 index 00000000..ded9489c --- /dev/null +++ b/src/libsodium/test/default/auth5.c @@ -0,0 +1,37 @@ +#include <stdio.h> +#include <stdlib.h> +#include "windows/windows-quirks.h" + +#define TEST_NAME "auth5" +#include "cmptest.h" + +unsigned char key[32]; +unsigned char c[10000]; +unsigned char a[32]; + +int main(void) +{ + int clen; + for (clen = 0;clen < 10000;++clen) { + randombytes(key,sizeof key); + randombytes(c,clen); + crypto_auth_hmacsha512256(a,c,clen,key); + if (crypto_auth_hmacsha512256_verify(a,c,clen,key) != 0) { + printf("fail %d\n",clen); + return 100; + } + if (clen > 0) { + c[rand() % clen] += 1 + (rand() % 255); + if (crypto_auth_hmacsha512256_verify(a,c,clen,key) == 0) { + printf("forgery %d\n",clen); + return 100; + } + a[rand() % sizeof a] += 1 + (rand() % 255); + if (crypto_auth_hmacsha512256_verify(a,c,clen,key) == 0) { + printf("forgery %d\n",clen); + return 100; + } + } + } + return 0; +} diff --git a/src/libsodium/test/default/auth5.exp b/src/libsodium/test/default/auth5.exp new file mode 100644 index 00000000..e69de29b diff --git a/src/libsodium/test/default/box.c b/src/libsodium/test/default/box.c new file mode 100644 index 00000000..d9f26292 --- /dev/null +++ b/src/libsodium/test/default/box.c @@ -0,0 +1,65 @@ +#include <stdio.h> + +#define TEST_NAME "box" +#include "cmptest.h" + +unsigned char alicesk[32] = { + 0x77,0x07,0x6d,0x0a,0x73,0x18,0xa5,0x7d +,0x3c,0x16,0xc1,0x72,0x51,0xb2,0x66,0x45 +,0xdf,0x4c,0x2f,0x87,0xeb,0xc0,0x99,0x2a +,0xb1,0x77,0xfb,0xa5,0x1d,0xb9,0x2c,0x2a +} ; + +unsigned char bobpk[32] = { + 0xde,0x9e,0xdb,0x7d,0x7b,0x7d,0xc1,0xb4 +,0xd3,0x5b,0x61,0xc2,0xec,0xe4,0x35,0x37 +,0x3f,0x83,0x43,0xc8,0x5b,0x78,0x67,0x4d +,0xad,0xfc,0x7e,0x14,0x6f,0x88,0x2b,0x4f +} ; + +unsigned char nonce[24] = { + 0x69,0x69,0x6e,0xe9,0x55,0xb6,0x2b,0x73 +,0xcd,0x62,0xbd,0xa8,0x75,0xfc,0x73,0xd6 +,0x82,0x19,0xe0,0x03,0x6b,0x7a,0x0b,0x37 +} ; + +// API requires first 32 bytes to be 0 +unsigned char m[163] = { + 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +,0xbe,0x07,0x5f,0xc5,0x3c,0x81,0xf2,0xd5 +,0xcf,0x14,0x13,0x16,0xeb,0xeb,0x0c,0x7b +,0x52,0x28,0xc5,0x2a,0x4c,0x62,0xcb,0xd4 +,0x4b,0x66,0x84,0x9b,0x64,0x24,0x4f,0xfc +,0xe5,0xec,0xba,0xaf,0x33,0xbd,0x75,0x1a +,0x1a,0xc7,0x28,0xd4,0x5e,0x6c,0x61,0x29 +,0x6c,0xdc,0x3c,0x01,0x23,0x35,0x61,0xf4 +,0x1d,0xb6,0x6c,0xce,0x31,0x4a,0xdb,0x31 +,0x0e,0x3b,0xe8,0x25,0x0c,0x46,0xf0,0x6d +,0xce,0xea,0x3a,0x7f,0xa1,0x34,0x80,0x57 +,0xe2,0xf6,0x55,0x6a,0xd6,0xb1,0x31,0x8a +,0x02,0x4a,0x83,0x8f,0x21,0xaf,0x1f,0xde +,0x04,0x89,0x77,0xeb,0x48,0xf5,0x9f,0xfd +,0x49,0x24,0xca,0x1c,0x60,0x90,0x2e,0x52 +,0xf0,0xa0,0x89,0xbc,0x76,0x89,0x70,0x40 +,0xe0,0x82,0xf9,0x37,0x76,0x38,0x48,0x64 +,0x5e,0x07,0x05 +} ; + +unsigned char c[163]; + +int main(void) +{ + int i; + crypto_box_curve25519xsalsa20poly1305( + c,m,163,nonce,bobpk,alicesk + ); + for (i = 16;i < 163;++i) { + printf(",0x%02x",(unsigned int) c[i]); + if (i % 8 == 7) printf("\n"); + } + printf("\n"); + return 0; +} diff --git a/src/libsodium/test/default/box.exp b/src/libsodium/test/default/box.exp new file mode 100644 index 00000000..2b6c51ea --- /dev/null +++ b/src/libsodium/test/default/box.exp @@ -0,0 +1,19 @@ +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5 +,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9 +,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73 +,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce +,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4 +,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a +,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b +,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72 +,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2 +,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38 +,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a +,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae +,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea +,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda +,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde +,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3 +,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6 +,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74 +,0xe3,0x55,0xa5 diff --git a/src/libsodium/test/default/box2.c b/src/libsodium/test/default/box2.c new file mode 100644 index 00000000..7af2f581 --- /dev/null +++ b/src/libsodium/test/default/box2.c @@ -0,0 +1,66 @@ +#include <stdio.h> + +#define TEST_NAME "box2" +#include "cmptest.h" + +unsigned char bobsk[32] = { + 0x5d,0xab,0x08,0x7e,0x62,0x4a,0x8a,0x4b +,0x79,0xe1,0x7f,0x8b,0x83,0x80,0x0e,0xe6 +,0x6f,0x3b,0xb1,0x29,0x26,0x18,0xb6,0xfd +,0x1c,0x2f,0x8b,0x27,0xff,0x88,0xe0,0xeb +} ; + +unsigned char alicepk[32] = { + 0x85,0x20,0xf0,0x09,0x89,0x30,0xa7,0x54 +,0x74,0x8b,0x7d,0xdc,0xb4,0x3e,0xf7,0x5a +,0x0d,0xbf,0x3a,0x0d,0x26,0x38,0x1a,0xf4 +,0xeb,0xa4,0xa9,0x8e,0xaa,0x9b,0x4e,0x6a +} ; + +unsigned char nonce[24] = { + 0x69,0x69,0x6e,0xe9,0x55,0xb6,0x2b,0x73 +,0xcd,0x62,0xbd,0xa8,0x75,0xfc,0x73,0xd6 +,0x82,0x19,0xe0,0x03,0x6b,0x7a,0x0b,0x37 +} ; + +// API requires first 16 bytes to be 0 +unsigned char c[163] = { + 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5 +,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9 +,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73 +,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce +,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4 +,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a +,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b +,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72 +,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2 +,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38 +,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a +,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae +,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea +,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda +,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde +,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3 +,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6 +,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74 +,0xe3,0x55,0xa5 +} ; + +unsigned char m[163]; + +int main(void) +{ + int i; + if (crypto_box_curve25519xsalsa20poly1305_open( + m,c,163,nonce,alicepk,bobsk + ) == 0) { + for (i = 32;i < 163;++i) { + printf(",0x%02x",(unsigned int) m[i]); + if (i % 8 == 7) printf("\n"); + } + printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/box2.exp b/src/libsodium/test/default/box2.exp new file mode 100644 index 00000000..c61d4557 --- /dev/null +++ b/src/libsodium/test/default/box2.exp @@ -0,0 +1,17 @@ +,0xbe,0x07,0x5f,0xc5,0x3c,0x81,0xf2,0xd5 +,0xcf,0x14,0x13,0x16,0xeb,0xeb,0x0c,0x7b +,0x52,0x28,0xc5,0x2a,0x4c,0x62,0xcb,0xd4 +,0x4b,0x66,0x84,0x9b,0x64,0x24,0x4f,0xfc +,0xe5,0xec,0xba,0xaf,0x33,0xbd,0x75,0x1a +,0x1a,0xc7,0x28,0xd4,0x5e,0x6c,0x61,0x29 +,0x6c,0xdc,0x3c,0x01,0x23,0x35,0x61,0xf4 +,0x1d,0xb6,0x6c,0xce,0x31,0x4a,0xdb,0x31 +,0x0e,0x3b,0xe8,0x25,0x0c,0x46,0xf0,0x6d +,0xce,0xea,0x3a,0x7f,0xa1,0x34,0x80,0x57 +,0xe2,0xf6,0x55,0x6a,0xd6,0xb1,0x31,0x8a +,0x02,0x4a,0x83,0x8f,0x21,0xaf,0x1f,0xde +,0x04,0x89,0x77,0xeb,0x48,0xf5,0x9f,0xfd +,0x49,0x24,0xca,0x1c,0x60,0x90,0x2e,0x52 +,0xf0,0xa0,0x89,0xbc,0x76,0x89,0x70,0x40 +,0xe0,0x82,0xf9,0x37,0x76,0x38,0x48,0x64 +,0x5e,0x07,0x05 diff --git a/src/libsodium/test/default/box7.c b/src/libsodium/test/default/box7.c new file mode 100644 index 00000000..ea7b484e --- /dev/null +++ b/src/libsodium/test/default/box7.c @@ -0,0 +1,37 @@ +#include <stdio.h> + +#define TEST_NAME "box7" +#include "cmptest.h" + +unsigned char alicesk[crypto_box_SECRETKEYBYTES]; +unsigned char alicepk[crypto_box_PUBLICKEYBYTES]; +unsigned char bobsk[crypto_box_SECRETKEYBYTES]; +unsigned char bobpk[crypto_box_PUBLICKEYBYTES]; +unsigned char n[crypto_box_NONCEBYTES]; +unsigned char m[10000]; +unsigned char c[10000]; +unsigned char m2[10000]; + +int main(void) +{ + size_t mlen; + size_t i; + + for (mlen = 0;mlen < 1000 && mlen + crypto_box_ZEROBYTES < sizeof m;++mlen) { + crypto_box_keypair(alicepk,alicesk); + crypto_box_keypair(bobpk,bobsk); + randombytes(n,crypto_box_NONCEBYTES); + randombytes(m + crypto_box_ZEROBYTES,mlen); + crypto_box(c,m,mlen + crypto_box_ZEROBYTES,n,bobpk,alicesk); + if (crypto_box_open(m2,c,mlen + crypto_box_ZEROBYTES,n,alicepk,bobsk) == 0) { + for (i = 0;i < mlen + crypto_box_ZEROBYTES;++i) + if (m2[i] != m[i]) { + printf("bad decryption\n"); + break; + } + } else { + printf("ciphertext fails verification\n"); + } + } + return 0; +} diff --git a/src/libsodium/test/default/box7.exp b/src/libsodium/test/default/box7.exp new file mode 100644 index 00000000..e69de29b diff --git a/src/libsodium/test/default/box8.c b/src/libsodium/test/default/box8.c new file mode 100644 index 00000000..cc85057a --- /dev/null +++ b/src/libsodium/test/default/box8.c @@ -0,0 +1,44 @@ +#include <stdio.h> +#include <stdlib.h> +#include "windows/windows-quirks.h" + +#define TEST_NAME "box8" +#include "cmptest.h" + +unsigned char alicesk[crypto_box_SECRETKEYBYTES]; +unsigned char alicepk[crypto_box_PUBLICKEYBYTES]; +unsigned char bobsk[crypto_box_SECRETKEYBYTES]; +unsigned char bobpk[crypto_box_PUBLICKEYBYTES]; +unsigned char n[crypto_box_NONCEBYTES]; +unsigned char m[10000]; +unsigned char c[10000]; +unsigned char m2[10000]; + +int main(void) +{ + size_t mlen; + size_t i; + int caught; + + for (mlen = 0;mlen < 1000 && mlen + crypto_box_ZEROBYTES < sizeof m;++mlen) { + crypto_box_keypair(alicepk,alicesk); + crypto_box_keypair(bobpk,bobsk); + randombytes(n,crypto_box_NONCEBYTES); + randombytes(m + crypto_box_ZEROBYTES,mlen); + crypto_box(c,m,mlen + crypto_box_ZEROBYTES,n,bobpk,alicesk); + caught = 0; + while (caught < 10) { + c[rand() % (mlen + crypto_box_ZEROBYTES)] = rand(); + if (crypto_box_open(m2,c,mlen + crypto_box_ZEROBYTES,n,alicepk,bobsk) == 0) { + for (i = 0;i < mlen + crypto_box_ZEROBYTES;++i) + if (m2[i] != m[i]) { + printf("forgery\n"); + return 100; + } + } else { + ++caught; + } + } + } + return 0; +} diff --git a/src/libsodium/test/default/box8.exp b/src/libsodium/test/default/box8.exp new file mode 100644 index 00000000..e69de29b diff --git a/src/libsodium/test/default/cmptest.h b/src/libsodium/test/default/cmptest.h new file mode 100644 index 00000000..dd383616 --- /dev/null +++ b/src/libsodium/test/default/cmptest.h @@ -0,0 +1,46 @@ + +#ifndef __CMPTEST_H__ +#define __CMPTEST_H__ + +#include <stdio.h> + +#include "sodium.h" + +#define TEST_NAME_RES TEST_NAME ".res" +#define TEST_NAME_OUT TEST_SRCDIR "/" TEST_NAME ".exp" + +FILE *fp_res; +int xmain(void); + +int main(void) +{ + FILE *fp_out; + int c; + + if ((fp_res = fopen(TEST_NAME_RES, "w+")) == NULL) { + perror("fopen(" TEST_NAME_RES ")"); + return 99; + } + if (sodium_init() != 0) { + return 99; + } + xmain(); + rewind(fp_res); + if ((fp_out = fopen(TEST_NAME_OUT, "r")) == NULL) { + perror("fopen(" TEST_NAME_OUT ")"); + return 99; + } + do { + if ((c = fgetc(fp_res)) != fgetc(fp_out)) { + return 99; + } + } while (c != EOF); + + return 0; +} + +#undef printf +#define printf(...) fprintf(fp_res, __VA_ARGS__) +#define main xmain + +#endif diff --git a/src/libsodium/test/default/core1.c b/src/libsodium/test/default/core1.c new file mode 100644 index 00000000..4c9453fa --- /dev/null +++ b/src/libsodium/test/default/core1.c @@ -0,0 +1,32 @@ +#include <stdio.h> + +#define TEST_NAME "core1" +#include "cmptest.h" + +unsigned char shared[32] = { + 0x4a,0x5d,0x9d,0x5b,0xa4,0xce,0x2d,0xe1 +,0x72,0x8e,0x3b,0xf4,0x80,0x35,0x0f,0x25 +,0xe0,0x7e,0x21,0xc9,0x47,0xd1,0x9e,0x33 +,0x76,0xf0,0x9b,0x3c,0x1e,0x16,0x17,0x42 +} ; + +unsigned char zero[32] = { 0 }; + +unsigned char c[16] = { + 0x65,0x78,0x70,0x61,0x6e,0x64,0x20,0x33 +,0x32,0x2d,0x62,0x79,0x74,0x65,0x20,0x6b +} ; + +unsigned char firstkey[32]; + +int main(void) +{ + int i; + crypto_core_hsalsa20(firstkey,zero,shared,c); + for (i = 0;i < 32;++i) { + if (i > 0) printf(","); else printf(" "); + printf("0x%02x",(unsigned int) firstkey[i]); + if (i % 8 == 7) printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/core1.exp b/src/libsodium/test/default/core1.exp new file mode 100644 index 00000000..715a489d --- /dev/null +++ b/src/libsodium/test/default/core1.exp @@ -0,0 +1,4 @@ + 0x1b,0x27,0x55,0x64,0x73,0xe9,0x85,0xd4 +,0x62,0xcd,0x51,0x19,0x7a,0x9a,0x46,0xc7 +,0x60,0x09,0x54,0x9e,0xac,0x64,0x74,0xf2 +,0x06,0xc4,0xee,0x08,0x44,0xf6,0x83,0x89 diff --git a/src/libsodium/test/default/core2.c b/src/libsodium/test/default/core2.c new file mode 100644 index 00000000..b07df8df --- /dev/null +++ b/src/libsodium/test/default/core2.c @@ -0,0 +1,35 @@ +#include <stdio.h> + +#define TEST_NAME "core2" +#include "cmptest.h" + +unsigned char firstkey[32] = { + 0x1b,0x27,0x55,0x64,0x73,0xe9,0x85,0xd4 +,0x62,0xcd,0x51,0x19,0x7a,0x9a,0x46,0xc7 +,0x60,0x09,0x54,0x9e,0xac,0x64,0x74,0xf2 +,0x06,0xc4,0xee,0x08,0x44,0xf6,0x83,0x89 +} ; + +unsigned char nonceprefix[16] = { + 0x69,0x69,0x6e,0xe9,0x55,0xb6,0x2b,0x73 +,0xcd,0x62,0xbd,0xa8,0x75,0xfc,0x73,0xd6 +} ; + +unsigned char c[16] = { + 0x65,0x78,0x70,0x61,0x6e,0x64,0x20,0x33 +,0x32,0x2d,0x62,0x79,0x74,0x65,0x20,0x6b +} ; + +unsigned char secondkey[32]; + +int main(void) +{ + int i; + crypto_core_hsalsa20(secondkey,nonceprefix,firstkey,c); + for (i = 0;i < 32;++i) { + if (i > 0) printf(","); else printf(" "); + printf("0x%02x",(unsigned int) secondkey[i]); + if (i % 8 == 7) printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/core2.exp b/src/libsodium/test/default/core2.exp new file mode 100644 index 00000000..f4682af0 --- /dev/null +++ b/src/libsodium/test/default/core2.exp @@ -0,0 +1,4 @@ + 0xdc,0x90,0x8d,0xda,0x0b,0x93,0x44,0xa9 +,0x53,0x62,0x9b,0x73,0x38,0x20,0x77,0x88 +,0x80,0xf3,0xce,0xb4,0x21,0xbb,0x61,0xb9 +,0x1c,0xbd,0x4c,0x3e,0x66,0x25,0x6c,0xe4 diff --git a/src/libsodium/test/default/core3.c b/src/libsodium/test/default/core3.c new file mode 100644 index 00000000..5d24fdda --- /dev/null +++ b/src/libsodium/test/default/core3.c @@ -0,0 +1,42 @@ +#include <stdio.h> + +#define TEST_NAME "core3" +#include "cmptest.h" + +unsigned char secondkey[32] = { + 0xdc,0x90,0x8d,0xda,0x0b,0x93,0x44,0xa9 +,0x53,0x62,0x9b,0x73,0x38,0x20,0x77,0x88 +,0x80,0xf3,0xce,0xb4,0x21,0xbb,0x61,0xb9 +,0x1c,0xbd,0x4c,0x3e,0x66,0x25,0x6c,0xe4 +} ; + +unsigned char noncesuffix[8] = { + 0x82,0x19,0xe0,0x03,0x6b,0x7a,0x0b,0x37 +} ; + +unsigned char c[16] = { + 0x65,0x78,0x70,0x61,0x6e,0x64,0x20,0x33 +,0x32,0x2d,0x62,0x79,0x74,0x65,0x20,0x6b +} ; + +unsigned char in[16] = { 0 } ; + +unsigned char output[64 * 256 * 256]; + +unsigned char h[32]; + +int main(void) +{ + int i; + long long pos = 0; + for (i = 0;i < 8;++i) in[i] = noncesuffix[i]; + do { + do { + crypto_core_salsa20(output + pos,in,secondkey,c); + pos += 64; + } while (++in[8]); + } while (++in[9]); + crypto_hash_sha256(h,output,sizeof output); + for (i = 0;i < 32;++i) printf("%02x",h[i]); printf("\n"); + return 0; +} diff --git a/src/libsodium/test/default/core3.exp b/src/libsodium/test/default/core3.exp new file mode 100644 index 00000000..5fa208c1 --- /dev/null +++ b/src/libsodium/test/default/core3.exp @@ -0,0 +1 @@ +662b9d0e3463029156069b12f918691a98f7dfb2ca0393c96bbfc6b1fbd630a2 diff --git a/src/libsodium/test/default/core4.c b/src/libsodium/test/default/core4.c new file mode 100644 index 00000000..d818723a --- /dev/null +++ b/src/libsodium/test/default/core4.c @@ -0,0 +1,35 @@ +#include <stdio.h> + +#define TEST_NAME "core4" +#include "cmptest.h" + +unsigned char k[32] = { + 1, 2, 3, 4, 5, 6, 7, 8 +, 9, 10, 11, 12, 13, 14, 15, 16 +,201,202,203,204,205,206,207,208 +,209,210,211,212,213,214,215,216 +} ; + +unsigned char in[16] = { + 101,102,103,104,105,106,107,108 +,109,110,111,112,113,114,115,116 +} ; + +unsigned char c[16] = { + 101,120,112, 97,110,100, 32, 51 +, 50, 45, 98,121,116,101, 32,107 +} ; + +unsigned char out[64]; + +int main(void) +{ + int i; + crypto_core_salsa20(out,in,k,c); + for (i = 0;i < 64;++i) { + if (i > 0) printf(","); else printf(" "); + printf("%3d",(unsigned int) out[i]); + if (i % 8 == 7) printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/core4.exp b/src/libsodium/test/default/core4.exp new file mode 100644 index 00000000..d04e5b5e --- /dev/null +++ b/src/libsodium/test/default/core4.exp @@ -0,0 +1,8 @@ + 69, 37, 68, 39, 41, 15,107,193 +,255,139,122, 6,170,233,217, 98 +, 89,144,182,106, 21, 51,200, 65 +,239, 49,222, 34,215,114, 40,126 +,104,197, 7,225,197,153, 31, 2 +,102, 78, 76,176, 84,245,246,184 +,177,160,133,130, 6, 72,149,119 +,192,195,132,236,234,103,246, 74 diff --git a/src/libsodium/test/default/core5.c b/src/libsodium/test/default/core5.c new file mode 100644 index 00000000..467b27a4 --- /dev/null +++ b/src/libsodium/test/default/core5.c @@ -0,0 +1,34 @@ +#include <stdio.h> + +#define TEST_NAME "core5" +#include "cmptest.h" + +unsigned char k[32] = { + 0xee,0x30,0x4f,0xca,0x27,0x00,0x8d,0x8c +,0x12,0x6f,0x90,0x02,0x79,0x01,0xd8,0x0f +,0x7f,0x1d,0x8b,0x8d,0xc9,0x36,0xcf,0x3b +,0x9f,0x81,0x96,0x92,0x82,0x7e,0x57,0x77 +} ; + +unsigned char in[16] = { + 0x81,0x91,0x8e,0xf2,0xa5,0xe0,0xda,0x9b +,0x3e,0x90,0x60,0x52,0x1e,0x4b,0xb3,0x52 +} ; + +unsigned char c[16] = { + 101,120,112, 97,110,100, 32, 51 +, 50, 45, 98,121,116,101, 32,107 +} ; + +unsigned char out[32]; + +int main(void) +{ + int i; + crypto_core_hsalsa20(out,in,k,c); + for (i = 0;i < 32;++i) { + printf(",0x%02x",(unsigned int) out[i]); + if (i % 8 == 7) printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/core5.exp b/src/libsodium/test/default/core5.exp new file mode 100644 index 00000000..562cf717 --- /dev/null +++ b/src/libsodium/test/default/core5.exp @@ -0,0 +1,4 @@ +,0xbc,0x1b,0x30,0xfc,0x07,0x2c,0xc1,0x40 +,0x75,0xe4,0xba,0xa7,0x31,0xb5,0xa8,0x45 +,0xea,0x9b,0x11,0xe9,0xa5,0x19,0x1f,0x94 +,0xe1,0x8c,0xba,0x8f,0xd8,0x21,0xa7,0xcd diff --git a/src/libsodium/test/default/core6.c b/src/libsodium/test/default/core6.c new file mode 100644 index 00000000..8a986968 --- /dev/null +++ b/src/libsodium/test/default/core6.c @@ -0,0 +1,49 @@ +#include <stdio.h> + +#define TEST_NAME "core6" +#include "cmptest.h" + +unsigned char k[32] = { + 0xee,0x30,0x4f,0xca,0x27,0x00,0x8d,0x8c +,0x12,0x6f,0x90,0x02,0x79,0x01,0xd8,0x0f +,0x7f,0x1d,0x8b,0x8d,0xc9,0x36,0xcf,0x3b +,0x9f,0x81,0x96,0x92,0x82,0x7e,0x57,0x77 +} ; + +unsigned char in[16] = { + 0x81,0x91,0x8e,0xf2,0xa5,0xe0,0xda,0x9b +,0x3e,0x90,0x60,0x52,0x1e,0x4b,0xb3,0x52 +} ; + +unsigned char c[16] = { + 101,120,112, 97,110,100, 32, 51 +, 50, 45, 98,121,116,101, 32,107 +} ; + +unsigned char out[64]; + +void print(unsigned char *x,unsigned char *y) +{ + int i; + unsigned int borrow = 0; + for (i = 0;i < 4;++i) { + unsigned int xi = x[i]; + unsigned int yi = y[i]; + printf(",0x%02x",255 & (xi - yi - borrow)); + borrow = (xi < yi + borrow); + } +} + +int main(void) +{ + crypto_core_salsa20(out,in,k,c); + print(out,c); + print(out + 20,c + 4); printf("\n"); + print(out + 40,c + 8); + print(out + 60,c + 12); printf("\n"); + print(out + 24,in); + print(out + 28,in + 4); printf("\n"); + print(out + 32,in + 8); + print(out + 36,in + 12); printf("\n"); + return 0; +} diff --git a/src/libsodium/test/default/core6.exp b/src/libsodium/test/default/core6.exp new file mode 100644 index 00000000..562cf717 --- /dev/null +++ b/src/libsodium/test/default/core6.exp @@ -0,0 +1,4 @@ +,0xbc,0x1b,0x30,0xfc,0x07,0x2c,0xc1,0x40 +,0x75,0xe4,0xba,0xa7,0x31,0xb5,0xa8,0x45 +,0xea,0x9b,0x11,0xe9,0xa5,0x19,0x1f,0x94 +,0xe1,0x8c,0xba,0x8f,0xd8,0x21,0xa7,0xcd diff --git a/src/libsodium/test/default/generichash.c b/src/libsodium/test/default/generichash.c new file mode 100644 index 00000000..42a4a394 --- /dev/null +++ b/src/libsodium/test/default/generichash.c @@ -0,0 +1,27 @@ +#include <stdio.h> + +#include "crypto_uint8.h" + +#define TEST_NAME "generichash" +#include "cmptest.h" + +int main(void) +{ +#define MAXLEN 64 + crypto_uint8 in[MAXLEN], out[crypto_generichash_BYTES_MAX], k[crypto_generichash_KEYBYTES_MAX]; + size_t h,i,j; + + for(h = 0; h < crypto_generichash_KEYBYTES_MAX; ++h) k[h] = h; + + for(i = 0; i < MAXLEN; ++i) { + in[i]=i; + crypto_generichash(out, 1 + i % crypto_generichash_BYTES_MAX, + in, i, + k, 1 + i % crypto_generichash_KEYBYTES_MAX); + for (j = 0;j < 1 + i % crypto_generichash_BYTES_MAX;++j) { + printf("%02x",(unsigned int) out[j]); + } + printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/generichash.exp b/src/libsodium/test/default/generichash.exp new file mode 100644 index 00000000..1840ff24 --- /dev/null +++ b/src/libsodium/test/default/generichash.exp @@ -0,0 +1,64 @@ +05 +5d8c +22221b +d4974470 +be8492fb36 +edc178279907 +26848f2ae0c2e6 +045cf1235112b9f6 +5110bad569356dfa6c +1339d95145bc8a33d3aa +3dbb39b4d57c5566808a88 +22378260939cee01022686a2 +e18b37abcead6cc520e6504dac +3cbb356604cf862e62ad2f534323 +44c41ba227b191961b475ec5875057 +0c7c9c3922d41a7b2b3b20f92685d560 +8508c01d19709bdd881866aa1f8c63ca06 +f6b2dddfbece6d7d52e114c7e5a97772e18d +d36b5af9591d0cd3747254e26bc6e1de5b6081 +f7f7ce69149418d7ec33327bd86e14bcca4b8ed7 +2c9aba9a56de21165753c4f3cee9310a9c8fe546b9 +ee5e08cee5fbbcb51900341bb30db6695920faecda6a +fe9ffb56dc5716b91bc7d77ce7b05e7cc39c31683bec91 +c500ae0f5bff0f1106ce104ae9c291add7207e0d8ebcb1ed +68e23d12000b387158afd6458d3bcef9c26936ca68b5c0f3d6 +220efa2c09f67dbb02aa623bbc0cb92107a30f53b633e78d4b44 +54df984b47e4bcd489d9c045c488743fac91c9b3e0cbcc37495fac +b4852cf66c6ce164c002bbb62ded0faeb4a39c39fdffb372ff14dd31 +d79cafb5565e7775616e1c9b09100d61fb71efaf25affcf2d480d2c980 +ae557883145e374adef583ba0550429d5cdd86b254c33bf52d02e070efda +9f53d28c0df7b327c2eb4c8a12c742829225b7f30fda7baf64135098fdb01b +a9f51bb7f6a3e9cdb96ce652c07d177962a348a9cced1b92f948187e59b44463 +f2960cf5fd57fc92f549cd5a2803147964f60e7703e1b8897c088cded74c7bd39f +89981acbb690eb03ed2a67510d1d85a1b4f9d496fdfe134550ae14146bb05fd5fedd +6d8245383fd7c418b46511339e711b9d4a0d1f5fdf6de45fdd3d0664164b7bf878a124 +1f0b6b083d524e0741710ddef499ce88f51083bb3ad80a1815cc57acf006436e9b6ad72b +fc35bfe34c915020bb8b44fa0a19933774eaaf61919780fd55564e085bc31646dfc1d426e9 +117d58f1f8cb2c036102686035975be90550795e5a0e3469a8f7a2cba9bc88961852b18c8ae3 +c679c950818729c799bb7f39cef2d89fa80a147817f379a073ef1ccafea5d369815c70373bf5be +d487ad2143024ee8c645a066c035b74abe3a11f1c9fcd738b154b8ca37134d74fb78c40d1a2274cf +2d3ee00828b0ccea6812b40f214fab6d4f23f7e74ae228115bcb208ced2d5e1cb9cdff41de912af7a8 +a697b26d4c4475e312288b98ae2ec4954d3c74c8e144c0ab518616ff9f52918a946fd765af75e761178c +f647bcba2a711f431d6d453aa7d75dcf5bb9ab6f8b83f89117230f633e7580f27c71c4f4c211cadd04f587 +1fc1d6a4db753e2f4fd1456b2b709dd70ad58547eeda9d5a55762b5cd4097a7a1bd73cc633ec27168ee65631 +1cfe0f63ab155379b4a1b5bf694a33635097b8e4b6dbd3b983d62454d36d7bf4550bece301abdd27b2dd76ca9f +73dee8a0a558e7b6f6eefe411280e253b05ef006d499849fea5d6a95f9141ee160322fff3a3f70e10c84025e02ce +edf9e706f4acae4f4bed72404f14458ba075d2b9d9a4a1ed46d1f1c5e23113a74cce9f7735432a922a3d8097f22c7a +95d5cd54c6722ac4335fa0ab38d388c9fd0baea48a9078605e400534ef38f13abb1d770da84b90b0256e1c1b64f54ba9 +fe6b85ee8b5eb7da035264ed46e6dcd948571018d1f6976de4102fcb4bb5f1422e7df1b5aaa5b6b56c5961966db29ead6e +499ab83c01e4bf74ea5036392f9f810eae8a066fff49e316e4288baccb2001efa24f64cef7bfae70c90f139b198e53ad87f1 +eac6c9d97264241a8adba22ee925438ed9787a547018608a10676a7594bc51c60294bd9159fbcada9022b44880a37c5b07c1b4 +0771e3ae24bbfe424800d4bae776fef3da1607990019e7c4b30bc8140061ebf0b64aad7b018a878d579caa67154b98a04402735e +d569e5f5fe197387451441911a2be2effa606dad39820af44cea056bd9d1499dde41fa1c6c3a0459d5866c944bec2ac83328953726 +68e523ded865c4d8318d61c312189a59597bbc3995e312e85137611af761a5f73508ac79e359edf729d4508830fc642b432f09185914 +601af664ae596166707244adbb4f704593b355c6a659c844d853c6647fb265cdbcea26ed43657251dec37f2d6453fa0ace55f22d303cb0 +703d8e552236b2090143444545f0a61a809d8ef9843bcf6883f61671fb31c8d6ac9fd373e7f9f79a0c72fa6a37dc655ba1fb01a5f41e36d1 +03896f594afd1bf97acb862106eb05a1d8b54ec08d184812a79f4dc7b287a7486e60927b6c23e5f51fcbc94798648b28fd13438300567bec95 +cc66a891768e95a2717b040c111996f14942f10f2475c33aa5f1c97476e6f8386733d6b21c16102d01ff1f715475f01099e1f19aa763238a38a9 +007aac8eae29e5bf2be1b54857f5fe80c324424a3273b46e55482fbc4ae1033df4a97016b60c81a5344abd6366f56d8cee2c2e94619418293990de +50c81e92605a6111ea4c7c602acfb3945d4c2631c8c08fa4b594134577f5c2ffcca90d48604162cfdb2a0bb40416ff9134a275461b829ff1b875f995 +661b7a1c70170aa7559aa82639fa65c1bdcfb5e336cb23b40a9edf5b4f6eeca1a176a9844da705cafb990dd94b9dc6194eb6b2de3eca9dbd255bb267a1 +9ff11c233aaf5e0242b0dbe6e110a42e58b86141ad0ef130fd2bb895700019782de66d435bf0a8d6f5eda5d7d1105e7a6f3ef17a9da8f9c16fc21075431a +bdd3d0fafe8ba2b29d1ac0b79aa46e249cc9d3a82d0f772d690637bbdd353722356658d00436ff5dd5239ab747979329345eb8c7ed11b7331456ae87350fcf +bd965bf31e87d70327536f2a341cebc4768eca275fa05ef98f7f1b71a0351298de006fba73fe6733ed01d75801b4a928e54231b38e38c562b2e33ea1284992fa diff --git a/src/libsodium/test/default/generichash2.c b/src/libsodium/test/default/generichash2.c new file mode 100644 index 00000000..4693a5f1 --- /dev/null +++ b/src/libsodium/test/default/generichash2.c @@ -0,0 +1,31 @@ +#include <stdio.h> + +#include "crypto_uint8.h" + +#define TEST_NAME "generichash2" +#include "cmptest.h" + +int main(void) +{ +#define MAXLEN 64 + crypto_generichash_state st; + crypto_uint8 in[MAXLEN], out[crypto_generichash_BYTES_MAX], k[crypto_generichash_KEYBYTES_MAX]; + size_t h,i,j; + + for(h = 0; h < crypto_generichash_KEYBYTES_MAX; ++h) k[h] = h; + + for(i = 0; i < MAXLEN; ++i) { + in[i]=i; + crypto_generichash_init(&st, k, 1 + i % crypto_generichash_KEYBYTES_MAX, + 1 + i % crypto_generichash_BYTES_MAX); + crypto_generichash_update(&st, in, i); + crypto_generichash_update(&st, in, i); + crypto_generichash_update(&st, in, i); + crypto_generichash_final(&st, out, 1 + i % crypto_generichash_BYTES_MAX); + for (j = 0;j < 1 + i % crypto_generichash_BYTES_MAX;++j) { + printf("%02x",(unsigned int) out[j]); + } + printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/generichash2.exp b/src/libsodium/test/default/generichash2.exp new file mode 100644 index 00000000..5ee6f605 --- /dev/null +++ b/src/libsodium/test/default/generichash2.exp @@ -0,0 +1,64 @@ +05 +22a8 +287a9d +d8eeab1c +d4ce34973f +584f7ac46f0c +32c848bb67545b +8438e21361bca125 +27a6faae998b4fabb4 +508c05a4f2daee150bad +68c886c97dce370e8c72fa +d41e90824ace31ba7bf512ac +6e0d7a1e2b92a68e45ea867895 +1fc5ee8715312db38da9066152a5 +3138504ba58fcd56c62752bc98a6d2 +b689ecd5357cb5276007627fbdf4082e +afe251881beb8b9dfa3d4f76aafc7b2995 +980eaa215cb0911027c5564db809bb8ac0a1 +56048436883efdfc8feaa239d960fa5ce24d42 +fce905b6d57fd841f58899a77887a4988e6aa2d1 +6f7afd81d24ccf4d98188b71bdbb7e6c637620879b +50406b4c37b48621505942b35dff30a75f7d2868146b +32c21792e18e7a79a4a20ef291721d7eab4e4cf99fbe79 +4b9d9ac5dbfb825acd87588667e6683e0fde4cdcd0a532f9 +2b55a3ebb461623e5de4fbacfb8b26819cfa8adeb094c8c13b +4c7d261780b25a864a008352ad64d1ae7fc21d608317813cf63f +f0ca06b8e12c48f1511d0991ba562f06dbe6ba6d5e18280224cc6a +838a5f7056bfbca65a245796dd3510cb07ff1614b44989d91ac650b2 +a58a8da276577160441f8b9e9c52a041b7caf7cd316acc506f620ab0e1 +e03940a7231049ff2b86c47a28e4951f105d2a3aa3421190fe0ed6aa4ad6 +a7af977c0b34294b1a03d0cc2dcf6eb72f9a32721c3f70128384aeb1f56047 +0e5625d74ada70b8a3b23ca76894e9a0f9dee88f5e3e370e27ad25061ea9dd6f +775fd9257b265997a16557a445985091798af60e68d06e3ae8e2e886d23ed12f6e +852e8d4208166a990e215ed06b86c708f491e014584ac9b08f97f24d9f08a84c8e83 +fbdca0db9a933fcffcce2ae694d7e16e7571b100564fcb3d69cec82ea42f254a493a32 +50530ae5eb9780f3fafc5d179f7b363a0d69314a8545d68588b5fec28c8e8d1a011857f6 +5eb71553ff1ac4aba3f84faeb70281c738e3428aae68edc9842ebf55ffd7184a015e323445 +39b279c6d9cca89f8052f953abf71041faf3491b2b965cef503d715e8bf339e02a58fd0e0fba +e315bef5f4918e881dc8d39d3c6b3948c2ea8e21ac00ee7c7ab875a53e194add0c3d9b8bcba5b2 +4e950f0e1da3111d054136fbdf10b4b88b20de6ad0c6bd5024a5e0a8b4cd7059685c0b663a00cbfa +b1ed8d99fd62a4f504ecdd58a01759a85932a7783f88f314cdca5019e05063dcc1fcb3c39b8c07758e +e4d78e734b0cb5bbd83e22bc67f97bbc8a3644f789f6c26a3ec2fe72c75b4d48a3bc000e6f2f2f0726fe +162e01beb796433a2771eab54611fc93677ed12c73a93ea4d75e148bec7ab14b3e31ab7f395456fb2b47ab +759c30631fd52e80a22f0614125dcd136287db65079908b75fb5b03be1cdf6dd0a1c9de0cc759cdd82c33758 +af2992acdaf0908f03a2025854de6446123c919b1e24db711df6cb070091343b4e6f5b2716c20c2547f50f1fde +b833064955778a611fe41a9f1a2de730a16fb4e61a7e2fb67425ce199101d4e71dd7b0c731ea4188e9cc30e9bc52 +e546ee327168d9b4e0d73d9a043f9ef03f880bc8aee91b0923704eb7361ac916b00f5c71c872e2f911a77ef76704b5 +83d86f056729fa1a6e1d3fe8c3d2ebe42b327025747f2e6ba923d2b7b893e31571839937222852033844e585b17d462f +5d70402524fbef569552a3ff6854087e090ff9ac9ea03aba92cf9f33a28845fa6a1631090dca10e05cdd3341b391a15fcf +64f4d3ebf0717900f7c04512d1e18f9985975991d4254d76c4e2ee02c0edd6f912f715991984731b808b8370be1f201e53bf +7d45eae6626dfc9ec3591764b8c39c72ca67e6c1893ab590963a75922719937d1d0ff188a510ffbdf9c777a4d565b3683cbf38 +68e007db5067874548c0d12a9ca709221f9bd352e3eb9847fde6c5de4a8550f4b85b67fe4e5aad70626ebb27d71e5b528effb2e6 +b0dc4dc0bd0d41a8ccfa45a127542079bc4e6f63a63863a9ce21f44481d23eff1060ea03851759b9317209405d5b7cc4387cc2759b +adf6a9df484e93eb3a6113c3fd68a49b2166878fc652833c9cbef3fd8dd281d385ad0374bc25bc865b216ca395e21c30b9eda1d58a8d +f1df9bc169323da338daa8a94867db96a1a2a6feb26569198fb4591ae602ba6f766a879e745d71e93b6cb8886b914f2bf4aa55d4c48045 +0c7446078a5077f33bba1ebfad60bbf1b1df47aab2eb3f3f3274ce56ead7800cf095af8208b6d570c4c832fe33227bbbc0842a13e1e82ad9 +accd0b4682e56698ecc55a60a8db8b3f950b6bffc5a1d160daf6ca25e13e3b4983ced5903df0bdc21f70c2ec5adb1a2ec9617df645cdd17ac9 +b787bae190ff2608eb383e0299cc10d6b7232de67ab74285e7bfa933d79f91226066537d74a9d40140d7b1683c2d42cd1935f6430cc554db2b69 +d09b717a0c80f581c07b8813e0ae79cec2188f77122f7477954610655a20420f13eb1b68cacde8c1fdf7a9a398efa72f40c85f0122812eaa33aba0 +87fff156d9895917468e92848fdcfacc134ca3bfc7fce484bd6db41c682ee2ee47151df0fa863d5641633d908c0328e6cbe080e80d8293530ffd2c4f +1b17b2c0e7afcd224ec9bbe9ce9a13a00bd0a336b863f1b4d5304043778244323bd23fb6154a2e1e94aa48f6ff0e12787a50ca09e9e72ece9e038f6218 +23ac1ccd5e7df51b65b284650158d662e7ef51ebae01b879f39cec484b688c792f8e854bd8ca31ffe8796d28f10e49ab402dab47878a21cb95556dc32b0a +f8f5323ebcc28bf927e72d342b5b70d80ba67794afb4c28debad21b0dae24c7a9252e862eb4b83bea6d9c0bb7c108983c987f13d73f250c7f14483f0454a24 +55b97ca594d68ccf69a0a93fe7fa4004c7e2947a8cac4ca4a44e17ac6876f472e3f221b341a28004cd35a79cfad7fabb9378ce5af03e4c0445ebbe9540943bbd diff --git a/src/libsodium/test/default/hash.c b/src/libsodium/test/default/hash.c new file mode 100644 index 00000000..c24f9c49 --- /dev/null +++ b/src/libsodium/test/default/hash.c @@ -0,0 +1,16 @@ +#include <stdio.h> + +#define TEST_NAME "hash" +#include "cmptest.h" + +unsigned char x[] = "testing\n"; +unsigned char h[crypto_hash_BYTES]; + +int main(void) +{ + size_t i; + crypto_hash(h,x,sizeof x - 1U); + for (i = 0;i < crypto_hash_BYTES;++i) printf("%02x",(unsigned int) h[i]); + printf("\n"); + return 0; +} diff --git a/src/libsodium/test/default/hash.exp b/src/libsodium/test/default/hash.exp new file mode 100644 index 00000000..df582172 --- /dev/null +++ b/src/libsodium/test/default/hash.exp @@ -0,0 +1 @@ +24f950aac7b9ea9b3cb728228a0c82b67c39e96b4b344798870d5daee93e3ae5931baae8c7cacfea4b629452c38026a81d138bc7aad1af3ef7bfd5ec646d6c28 diff --git a/src/libsodium/test/default/hash2.exp b/src/libsodium/test/default/hash2.exp new file mode 100644 index 00000000..df582172 --- /dev/null +++ b/src/libsodium/test/default/hash2.exp @@ -0,0 +1 @@ +24f950aac7b9ea9b3cb728228a0c82b67c39e96b4b344798870d5daee93e3ae5931baae8c7cacfea4b629452c38026a81d138bc7aad1af3ef7bfd5ec646d6c28 diff --git a/src/libsodium/test/default/hash3.c b/src/libsodium/test/default/hash3.c new file mode 100644 index 00000000..a5461258 --- /dev/null +++ b/src/libsodium/test/default/hash3.c @@ -0,0 +1,16 @@ +#include <stdio.h> + +#define TEST_NAME "hash3" +#include "cmptest.h" + +unsigned char x[] = "testing\n"; +unsigned char h[crypto_hash_sha512_BYTES]; + +int main(void) +{ + size_t i; + crypto_hash_sha512(h,x,sizeof x - 1U); + for (i = 0;i < crypto_hash_sha512_BYTES;++i) printf("%02x",(unsigned int) h[i]); + printf("\n"); + return 0; +} diff --git a/src/libsodium/test/default/hash3.exp b/src/libsodium/test/default/hash3.exp new file mode 100644 index 00000000..df582172 --- /dev/null +++ b/src/libsodium/test/default/hash3.exp @@ -0,0 +1 @@ +24f950aac7b9ea9b3cb728228a0c82b67c39e96b4b344798870d5daee93e3ae5931baae8c7cacfea4b629452c38026a81d138bc7aad1af3ef7bfd5ec646d6c28 diff --git a/src/libsodium/test/default/onetimeauth.c b/src/libsodium/test/default/onetimeauth.c new file mode 100644 index 00000000..ddeb8eec --- /dev/null +++ b/src/libsodium/test/default/onetimeauth.c @@ -0,0 +1,44 @@ +#include <stdio.h> + +#define TEST_NAME "onetimeauth" +#include "cmptest.h" + +unsigned char rs[32] = { + 0xee,0xa6,0xa7,0x25,0x1c,0x1e,0x72,0x91 +,0x6d,0x11,0xc2,0xcb,0x21,0x4d,0x3c,0x25 +,0x25,0x39,0x12,0x1d,0x8e,0x23,0x4e,0x65 +,0x2d,0x65,0x1f,0xa4,0xc8,0xcf,0xf8,0x80 +} ; + +unsigned char c[131] = { + 0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73 +,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce +,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4 +,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a +,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b +,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72 +,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2 +,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38 +,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a +,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae +,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea +,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda +,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde +,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3 +,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6 +,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74 +,0xe3,0x55,0xa5 +} ; + +unsigned char a[16]; + +int main(void) +{ + int i; + crypto_onetimeauth_poly1305(a,c,131,rs); + for (i = 0;i < 16;++i) { + printf(",0x%02x",(unsigned int) a[i]); + if (i % 8 == 7) printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/onetimeauth.exp b/src/libsodium/test/default/onetimeauth.exp new file mode 100644 index 00000000..6d914615 --- /dev/null +++ b/src/libsodium/test/default/onetimeauth.exp @@ -0,0 +1,2 @@ +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5 +,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9 diff --git a/src/libsodium/test/default/onetimeauth2.c b/src/libsodium/test/default/onetimeauth2.c new file mode 100644 index 00000000..2114e291 --- /dev/null +++ b/src/libsodium/test/default/onetimeauth2.c @@ -0,0 +1,42 @@ +#include <stdio.h> + +#define TEST_NAME "onetimeauth2" +#include "cmptest.h" + +unsigned char rs[32] = { + 0xee,0xa6,0xa7,0x25,0x1c,0x1e,0x72,0x91 +,0x6d,0x11,0xc2,0xcb,0x21,0x4d,0x3c,0x25 +,0x25,0x39,0x12,0x1d,0x8e,0x23,0x4e,0x65 +,0x2d,0x65,0x1f,0xa4,0xc8,0xcf,0xf8,0x80 +} ; + +unsigned char c[131] = { + 0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73 +,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce +,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4 +,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a +,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b +,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72 +,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2 +,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38 +,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a +,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae +,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea +,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda +,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde +,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3 +,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6 +,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74 +,0xe3,0x55,0xa5 +} ; + +unsigned char a[16] = { + 0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5 +,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9 +} ; + +int main(void) +{ + printf("%d\n",crypto_onetimeauth_poly1305_verify(a,c,131,rs)); + return 0; +} diff --git a/src/libsodium/test/default/onetimeauth2.exp b/src/libsodium/test/default/onetimeauth2.exp new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/src/libsodium/test/default/onetimeauth2.exp @@ -0,0 +1 @@ +0 diff --git a/src/libsodium/test/default/onetimeauth7.c b/src/libsodium/test/default/onetimeauth7.c new file mode 100644 index 00000000..6d99134c --- /dev/null +++ b/src/libsodium/test/default/onetimeauth7.c @@ -0,0 +1,37 @@ +#include <stdio.h> +#include <stdlib.h> +#include "windows/windows-quirks.h" + +#define TEST_NAME "onetimeauth7" +#include "cmptest.h" + +unsigned char key[32]; +unsigned char c[10000]; +unsigned char a[16]; + +int main(void) +{ + int clen; + for (clen = 0;clen < 10000;++clen) { + randombytes(key,sizeof key); + randombytes(c,clen); + crypto_onetimeauth_poly1305(a,c,clen,key); + if (crypto_onetimeauth_poly1305_verify(a,c,clen,key) != 0) { + printf("fail %d\n",clen); + return 100; + } + if (clen > 0) { + c[rand() % clen] += 1 + (rand() % 255); + if (crypto_onetimeauth_poly1305_verify(a,c,clen,key) == 0) { + printf("forgery %d\n",clen); + return 100; + } + a[rand() % sizeof a] += 1 + (rand() % 255); + if (crypto_onetimeauth_poly1305_verify(a,c,clen,key) == 0) { + printf("forgery %d\n",clen); + return 100; + } + } + } + return 0; +} diff --git a/src/libsodium/test/default/onetimeauth7.exp b/src/libsodium/test/default/onetimeauth7.exp new file mode 100644 index 00000000..e69de29b diff --git a/src/libsodium/test/default/randombytes.c b/src/libsodium/test/default/randombytes.c new file mode 100644 index 00000000..f805c472 --- /dev/null +++ b/src/libsodium/test/default/randombytes.c @@ -0,0 +1,16 @@ +#include "randombytes.h" + +unsigned char x[65536]; +unsigned long long freq[256]; + +int main(void) +{ + unsigned long long i; + + randombytes(x,sizeof x); + for (i = 0;i < 256;++i) freq[i] = 0; + for (i = 0;i < sizeof x;++i) ++freq[255 & (int) x[i]]; + for (i = 0;i < 256;++i) if (!freq[i]) return 111; + + return 0; +} diff --git a/src/libsodium/test/default/scalarmult.c b/src/libsodium/test/default/scalarmult.c new file mode 100644 index 00000000..957bc9c1 --- /dev/null +++ b/src/libsodium/test/default/scalarmult.c @@ -0,0 +1,25 @@ +#include <stdio.h> + +#define TEST_NAME "scalarmult" +#include "cmptest.h" + +unsigned char alicesk[32] = { + 0x77,0x07,0x6d,0x0a,0x73,0x18,0xa5,0x7d +,0x3c,0x16,0xc1,0x72,0x51,0xb2,0x66,0x45 +,0xdf,0x4c,0x2f,0x87,0xeb,0xc0,0x99,0x2a +,0xb1,0x77,0xfb,0xa5,0x1d,0xb9,0x2c,0x2a +} ; + +unsigned char alicepk[32]; + +int main(void) +{ + int i; + crypto_scalarmult_curve25519_base(alicepk,alicesk); + for (i = 0;i < 32;++i) { + if (i > 0) printf(","); else printf(" "); + printf("0x%02x",(unsigned int) alicepk[i]); + if (i % 8 == 7) printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/scalarmult.exp b/src/libsodium/test/default/scalarmult.exp new file mode 100644 index 00000000..ddd130d6 --- /dev/null +++ b/src/libsodium/test/default/scalarmult.exp @@ -0,0 +1,4 @@ + 0x85,0x20,0xf0,0x09,0x89,0x30,0xa7,0x54 +,0x74,0x8b,0x7d,0xdc,0xb4,0x3e,0xf7,0x5a +,0x0d,0xbf,0x3a,0x0d,0x26,0x38,0x1a,0xf4 +,0xeb,0xa4,0xa9,0x8e,0xaa,0x9b,0x4e,0x6a diff --git a/src/libsodium/test/default/scalarmult2.c b/src/libsodium/test/default/scalarmult2.c new file mode 100644 index 00000000..93a37d07 --- /dev/null +++ b/src/libsodium/test/default/scalarmult2.c @@ -0,0 +1,25 @@ +#include <stdio.h> + +#define TEST_NAME "scalarmult2" +#include "cmptest.h" + +unsigned char bobsk[32] = { + 0x5d,0xab,0x08,0x7e,0x62,0x4a,0x8a,0x4b +,0x79,0xe1,0x7f,0x8b,0x83,0x80,0x0e,0xe6 +,0x6f,0x3b,0xb1,0x29,0x26,0x18,0xb6,0xfd +,0x1c,0x2f,0x8b,0x27,0xff,0x88,0xe0,0xeb +} ; + +unsigned char bobpk[32]; + +int main(void) +{ + int i; + crypto_scalarmult_curve25519_base(bobpk,bobsk); + for (i = 0;i < 32;++i) { + if (i > 0) printf(","); else printf(" "); + printf("0x%02x",(unsigned int) bobpk[i]); + if (i % 8 == 7) printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/scalarmult2.exp b/src/libsodium/test/default/scalarmult2.exp new file mode 100644 index 00000000..b5391865 --- /dev/null +++ b/src/libsodium/test/default/scalarmult2.exp @@ -0,0 +1,4 @@ + 0xde,0x9e,0xdb,0x7d,0x7b,0x7d,0xc1,0xb4 +,0xd3,0x5b,0x61,0xc2,0xec,0xe4,0x35,0x37 +,0x3f,0x83,0x43,0xc8,0x5b,0x78,0x67,0x4d +,0xad,0xfc,0x7e,0x14,0x6f,0x88,0x2b,0x4f diff --git a/src/libsodium/test/default/scalarmult5.c b/src/libsodium/test/default/scalarmult5.c new file mode 100644 index 00000000..b6852a91 --- /dev/null +++ b/src/libsodium/test/default/scalarmult5.c @@ -0,0 +1,32 @@ +#include <stdio.h> + +#define TEST_NAME "scalarmult5" +#include "cmptest.h" + +unsigned char alicesk[32] = { + 0x77,0x07,0x6d,0x0a,0x73,0x18,0xa5,0x7d +,0x3c,0x16,0xc1,0x72,0x51,0xb2,0x66,0x45 +,0xdf,0x4c,0x2f,0x87,0xeb,0xc0,0x99,0x2a +,0xb1,0x77,0xfb,0xa5,0x1d,0xb9,0x2c,0x2a +} ; + +unsigned char bobpk[32] = { + 0xde,0x9e,0xdb,0x7d,0x7b,0x7d,0xc1,0xb4 +,0xd3,0x5b,0x61,0xc2,0xec,0xe4,0x35,0x37 +,0x3f,0x83,0x43,0xc8,0x5b,0x78,0x67,0x4d +,0xad,0xfc,0x7e,0x14,0x6f,0x88,0x2b,0x4f +} ; + +unsigned char k[32]; + +int main(void) +{ + int i; + crypto_scalarmult_curve25519(k,alicesk,bobpk); + for (i = 0;i < 32;++i) { + if (i > 0) printf(","); else printf(" "); + printf("0x%02x",(unsigned int) k[i]); + if (i % 8 == 7) printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/scalarmult5.exp b/src/libsodium/test/default/scalarmult5.exp new file mode 100644 index 00000000..bec21130 --- /dev/null +++ b/src/libsodium/test/default/scalarmult5.exp @@ -0,0 +1,4 @@ + 0x4a,0x5d,0x9d,0x5b,0xa4,0xce,0x2d,0xe1 +,0x72,0x8e,0x3b,0xf4,0x80,0x35,0x0f,0x25 +,0xe0,0x7e,0x21,0xc9,0x47,0xd1,0x9e,0x33 +,0x76,0xf0,0x9b,0x3c,0x1e,0x16,0x17,0x42 diff --git a/src/libsodium/test/default/scalarmult6.c b/src/libsodium/test/default/scalarmult6.c new file mode 100644 index 00000000..c1ac8853 --- /dev/null +++ b/src/libsodium/test/default/scalarmult6.c @@ -0,0 +1,32 @@ +#include <stdio.h> + +#define TEST_NAME "scalarmult6" +#include "cmptest.h" + +unsigned char bobsk[32] = { + 0x5d,0xab,0x08,0x7e,0x62,0x4a,0x8a,0x4b +,0x79,0xe1,0x7f,0x8b,0x83,0x80,0x0e,0xe6 +,0x6f,0x3b,0xb1,0x29,0x26,0x18,0xb6,0xfd +,0x1c,0x2f,0x8b,0x27,0xff,0x88,0xe0,0xeb +} ; + +unsigned char alicepk[32] = { + 0x85,0x20,0xf0,0x09,0x89,0x30,0xa7,0x54 +,0x74,0x8b,0x7d,0xdc,0xb4,0x3e,0xf7,0x5a +,0x0d,0xbf,0x3a,0x0d,0x26,0x38,0x1a,0xf4 +,0xeb,0xa4,0xa9,0x8e,0xaa,0x9b,0x4e,0x6a +} ; + +unsigned char k[32]; + +int main(void) +{ + int i; + crypto_scalarmult_curve25519(k,bobsk,alicepk); + for (i = 0;i < 32;++i) { + if (i > 0) printf(","); else printf(" "); + printf("0x%02x",(unsigned int) k[i]); + if (i % 8 == 7) printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/scalarmult6.exp b/src/libsodium/test/default/scalarmult6.exp new file mode 100644 index 00000000..bec21130 --- /dev/null +++ b/src/libsodium/test/default/scalarmult6.exp @@ -0,0 +1,4 @@ + 0x4a,0x5d,0x9d,0x5b,0xa4,0xce,0x2d,0xe1 +,0x72,0x8e,0x3b,0xf4,0x80,0x35,0x0f,0x25 +,0xe0,0x7e,0x21,0xc9,0x47,0xd1,0x9e,0x33 +,0x76,0xf0,0x9b,0x3c,0x1e,0x16,0x17,0x42 diff --git a/src/libsodium/test/default/secretbox.c b/src/libsodium/test/default/secretbox.c new file mode 100644 index 00000000..485a97a1 --- /dev/null +++ b/src/libsodium/test/default/secretbox.c @@ -0,0 +1,58 @@ +#include <stdio.h> + +#define TEST_NAME "secretbox" +#include "cmptest.h" + +unsigned char firstkey[32] = { + 0x1b,0x27,0x55,0x64,0x73,0xe9,0x85,0xd4 +,0x62,0xcd,0x51,0x19,0x7a,0x9a,0x46,0xc7 +,0x60,0x09,0x54,0x9e,0xac,0x64,0x74,0xf2 +,0x06,0xc4,0xee,0x08,0x44,0xf6,0x83,0x89 +} ; + +unsigned char nonce[24] = { + 0x69,0x69,0x6e,0xe9,0x55,0xb6,0x2b,0x73 +,0xcd,0x62,0xbd,0xa8,0x75,0xfc,0x73,0xd6 +,0x82,0x19,0xe0,0x03,0x6b,0x7a,0x0b,0x37 +} ; + +// API requires first 32 bytes to be 0 +unsigned char m[163] = { + 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +,0xbe,0x07,0x5f,0xc5,0x3c,0x81,0xf2,0xd5 +,0xcf,0x14,0x13,0x16,0xeb,0xeb,0x0c,0x7b +,0x52,0x28,0xc5,0x2a,0x4c,0x62,0xcb,0xd4 +,0x4b,0x66,0x84,0x9b,0x64,0x24,0x4f,0xfc +,0xe5,0xec,0xba,0xaf,0x33,0xbd,0x75,0x1a +,0x1a,0xc7,0x28,0xd4,0x5e,0x6c,0x61,0x29 +,0x6c,0xdc,0x3c,0x01,0x23,0x35,0x61,0xf4 +,0x1d,0xb6,0x6c,0xce,0x31,0x4a,0xdb,0x31 +,0x0e,0x3b,0xe8,0x25,0x0c,0x46,0xf0,0x6d +,0xce,0xea,0x3a,0x7f,0xa1,0x34,0x80,0x57 +,0xe2,0xf6,0x55,0x6a,0xd6,0xb1,0x31,0x8a +,0x02,0x4a,0x83,0x8f,0x21,0xaf,0x1f,0xde +,0x04,0x89,0x77,0xeb,0x48,0xf5,0x9f,0xfd +,0x49,0x24,0xca,0x1c,0x60,0x90,0x2e,0x52 +,0xf0,0xa0,0x89,0xbc,0x76,0x89,0x70,0x40 +,0xe0,0x82,0xf9,0x37,0x76,0x38,0x48,0x64 +,0x5e,0x07,0x05 +} ; + +unsigned char c[163]; + +int main(void) +{ + int i; + crypto_secretbox_xsalsa20poly1305( + c,m,163,nonce,firstkey + ); + for (i = 16;i < 163;++i) { + printf(",0x%02x",(unsigned int) c[i]); + if (i % 8 == 7) printf("\n"); + } + printf("\n"); + return 0; +} diff --git a/src/libsodium/test/default/secretbox.exp b/src/libsodium/test/default/secretbox.exp new file mode 100644 index 00000000..2b6c51ea --- /dev/null +++ b/src/libsodium/test/default/secretbox.exp @@ -0,0 +1,19 @@ +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5 +,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9 +,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73 +,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce +,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4 +,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a +,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b +,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72 +,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2 +,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38 +,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a +,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae +,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea +,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda +,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde +,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3 +,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6 +,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74 +,0xe3,0x55,0xa5 diff --git a/src/libsodium/test/default/secretbox2.c b/src/libsodium/test/default/secretbox2.c new file mode 100644 index 00000000..5af6c41b --- /dev/null +++ b/src/libsodium/test/default/secretbox2.c @@ -0,0 +1,59 @@ +#include <stdio.h> + +#define TEST_NAME "secretbox2" +#include "cmptest.h" + +unsigned char firstkey[32] = { + 0x1b,0x27,0x55,0x64,0x73,0xe9,0x85,0xd4 +,0x62,0xcd,0x51,0x19,0x7a,0x9a,0x46,0xc7 +,0x60,0x09,0x54,0x9e,0xac,0x64,0x74,0xf2 +,0x06,0xc4,0xee,0x08,0x44,0xf6,0x83,0x89 +} ; + +unsigned char nonce[24] = { + 0x69,0x69,0x6e,0xe9,0x55,0xb6,0x2b,0x73 +,0xcd,0x62,0xbd,0xa8,0x75,0xfc,0x73,0xd6 +,0x82,0x19,0xe0,0x03,0x6b,0x7a,0x0b,0x37 +} ; + +// API requires first 16 bytes to be 0 +unsigned char c[163] = { + 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5 +,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9 +,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73 +,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce +,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4 +,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a +,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b +,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72 +,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2 +,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38 +,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a +,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae +,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea +,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda +,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde +,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3 +,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6 +,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74 +,0xe3,0x55,0xa5 +} ; + +unsigned char m[163]; + +int main(void) +{ + int i; + if (crypto_secretbox_xsalsa20poly1305_open( + m,c,163,nonce,firstkey + ) == 0) { + for (i = 32;i < 163;++i) { + printf(",0x%02x",(unsigned int) m[i]); + if (i % 8 == 7) printf("\n"); + } + printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/secretbox2.exp b/src/libsodium/test/default/secretbox2.exp new file mode 100644 index 00000000..c61d4557 --- /dev/null +++ b/src/libsodium/test/default/secretbox2.exp @@ -0,0 +1,17 @@ +,0xbe,0x07,0x5f,0xc5,0x3c,0x81,0xf2,0xd5 +,0xcf,0x14,0x13,0x16,0xeb,0xeb,0x0c,0x7b +,0x52,0x28,0xc5,0x2a,0x4c,0x62,0xcb,0xd4 +,0x4b,0x66,0x84,0x9b,0x64,0x24,0x4f,0xfc +,0xe5,0xec,0xba,0xaf,0x33,0xbd,0x75,0x1a +,0x1a,0xc7,0x28,0xd4,0x5e,0x6c,0x61,0x29 +,0x6c,0xdc,0x3c,0x01,0x23,0x35,0x61,0xf4 +,0x1d,0xb6,0x6c,0xce,0x31,0x4a,0xdb,0x31 +,0x0e,0x3b,0xe8,0x25,0x0c,0x46,0xf0,0x6d +,0xce,0xea,0x3a,0x7f,0xa1,0x34,0x80,0x57 +,0xe2,0xf6,0x55,0x6a,0xd6,0xb1,0x31,0x8a +,0x02,0x4a,0x83,0x8f,0x21,0xaf,0x1f,0xde +,0x04,0x89,0x77,0xeb,0x48,0xf5,0x9f,0xfd +,0x49,0x24,0xca,0x1c,0x60,0x90,0x2e,0x52 +,0xf0,0xa0,0x89,0xbc,0x76,0x89,0x70,0x40 +,0xe0,0x82,0xf9,0x37,0x76,0x38,0x48,0x64 +,0x5e,0x07,0x05 diff --git a/src/libsodium/test/default/secretbox7.c b/src/libsodium/test/default/secretbox7.c new file mode 100644 index 00000000..337f081b --- /dev/null +++ b/src/libsodium/test/default/secretbox7.c @@ -0,0 +1,33 @@ +#include <stdio.h> + +#define TEST_NAME "secretbox7" +#include "cmptest.h" + +unsigned char k[crypto_secretbox_KEYBYTES]; +unsigned char n[crypto_secretbox_NONCEBYTES]; +unsigned char m[10000]; +unsigned char c[10000]; +unsigned char m2[10000]; + +int main(void) +{ + size_t mlen; + size_t i; + + for (mlen = 0;mlen < 1000 && mlen + crypto_secretbox_ZEROBYTES < sizeof m;++mlen) { + randombytes(k,crypto_secretbox_KEYBYTES); + randombytes(n,crypto_secretbox_NONCEBYTES); + randombytes(m + crypto_secretbox_ZEROBYTES,mlen); + crypto_secretbox(c,m,mlen + crypto_secretbox_ZEROBYTES,n,k); + if (crypto_secretbox_open(m2,c,mlen + crypto_secretbox_ZEROBYTES,n,k) == 0) { + for (i = 0;i < mlen + crypto_secretbox_ZEROBYTES;++i) + if (m2[i] != m[i]) { + printf("bad decryption\n"); + break; + } + } else { + printf("ciphertext fails verification\n"); + } + } + return 0; +} diff --git a/src/libsodium/test/default/secretbox7.exp b/src/libsodium/test/default/secretbox7.exp new file mode 100644 index 00000000..e69de29b diff --git a/src/libsodium/test/default/secretbox8.c b/src/libsodium/test/default/secretbox8.c new file mode 100644 index 00000000..94808dc9 --- /dev/null +++ b/src/libsodium/test/default/secretbox8.c @@ -0,0 +1,40 @@ +#include <stdio.h> +#include <stdlib.h> +#include "windows/windows-quirks.h" + +#define TEST_NAME "secretbox8" +#include "cmptest.h" + +unsigned char k[crypto_secretbox_KEYBYTES]; +unsigned char n[crypto_secretbox_NONCEBYTES]; +unsigned char m[10000]; +unsigned char c[10000]; +unsigned char m2[10000]; + +int main(void) +{ + size_t mlen; + size_t i; + int caught; + + for (mlen = 0;mlen < 1000 && mlen + crypto_secretbox_ZEROBYTES < sizeof m;++mlen) { + randombytes(k,crypto_secretbox_KEYBYTES); + randombytes(n,crypto_secretbox_NONCEBYTES); + randombytes(m + crypto_secretbox_ZEROBYTES,mlen); + crypto_secretbox(c,m,mlen + crypto_secretbox_ZEROBYTES,n,k); + caught = 0; + while (caught < 10) { + c[rand() % (mlen + crypto_secretbox_ZEROBYTES)] = rand(); + if (crypto_secretbox_open(m2,c,mlen + crypto_secretbox_ZEROBYTES,n,k) == 0) { + for (i = 0;i < mlen + crypto_secretbox_ZEROBYTES;++i) + if (m2[i] != m[i]) { + printf("forgery\n"); + return 100; + } + } else { + ++caught; + } + } + } + return 0; +} diff --git a/src/libsodium/test/default/secretbox8.exp b/src/libsodium/test/default/secretbox8.exp new file mode 100644 index 00000000..e69de29b diff --git a/src/libsodium/test/default/shorthash.c b/src/libsodium/test/default/shorthash.c new file mode 100644 index 00000000..6f1d7f3c --- /dev/null +++ b/src/libsodium/test/default/shorthash.c @@ -0,0 +1,23 @@ +#include <stdio.h> + +#include "crypto_uint8.h" + +#define TEST_NAME "shorthash" +#include "cmptest.h" + +int main(void) +{ +#define MAXLEN 64 + crypto_uint8 in[MAXLEN], out[crypto_shorthash_BYTES], k[crypto_shorthash_KEYBYTES]; + size_t i,j; + + for( i = 0; i < crypto_shorthash_KEYBYTES; ++i ) k[i] = i; + + for(i=0;i<MAXLEN;++i) { + in[i]=i; + crypto_shorthash( out, in, i, k ); + for (j = 0;j < crypto_shorthash_BYTES;++j) printf("%02x",(unsigned int) out[j]); + printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/shorthash.exp b/src/libsodium/test/default/shorthash.exp new file mode 100644 index 00000000..6ec8684d --- /dev/null +++ b/src/libsodium/test/default/shorthash.exp @@ -0,0 +1,64 @@ +310e0edd47db6f72 +fd67dc93c539f874 +5a4fa9d909806c0d +2d7efbd796666785 +b7877127e09427cf +8da699cd64557618 +cee3fe586e46c9cb +37d1018bf50002ab +6224939a79f5f593 +b0e4a90bdf82009e +f3b9dd94c5bb5d7a +a7ad6b22462fb3f4 +fbe50e86bc8f1e75 +903d84c02756ea14 +eef27a8e90ca23f7 +e545be4961ca29a1 +db9bc2577fcc2a3f +9447be2cf5e99a69 +9cd38d96f0b3c14b +bd6179a71dc96dbb +98eea21af25cd6be +c7673b2eb0cbf2d0 +883ea3e395675393 +c8ce5ccd8c030ca8 +94af49f6c650adb8 +eab8858ade92e1bc +f315bb5bb835d817 +adcf6b0763612e2f +a5c91da7acaa4dde +716595876650a2a6 +28ef495c53a387ad +42c341d8fa92d832 +ce7cf2722f512771 +e37859f94623f3a7 +381205bb1ab0e012 +ae97a10fd434e015 +b4a31508beff4d31 +81396229f0907902 +4d0cf49ee5d4dcca +5c73336a76d8bf9a +d0a704536ba93e0e +925958fcd6420cad +a915c29bc8067318 +952b79f3bc0aa6d4 +f21df2e41d4535f9 +87577519048f53a9 +10a56cf5dfcd9adb +eb75095ccd986cd0 +51a9cb9ecba312e6 +96afadfc2ce666c7 +72fe52975a4364ee +5a1645b276d592a1 +b274cb8ebf87870a +6f9bb4203de7b381 +eaecb2a30b22a87f +9924a43cc1315724 +bd838d3aafbf8db7 +0b1a2a3265d51aea +135079a3231ce660 +932b2846e4d70666 +e1915f5cb1eca46c +f325965ca16d629f +575ff28e60381be5 +724506eb4c328a95 diff --git a/src/libsodium/test/default/sodium_core.c b/src/libsodium/test/default/sodium_core.c new file mode 100644 index 00000000..7bdcca8f --- /dev/null +++ b/src/libsodium/test/default/sodium_core.c @@ -0,0 +1,11 @@ +#include <stdio.h> + +#define TEST_NAME "sodium_core" +#include "cmptest.h" + +int main(void) +{ + printf ("%d\n", sodium_init()); + + return 0; +} diff --git a/src/libsodium/test/default/sodium_core.exp b/src/libsodium/test/default/sodium_core.exp new file mode 100644 index 00000000..d00491fd --- /dev/null +++ b/src/libsodium/test/default/sodium_core.exp @@ -0,0 +1 @@ +1 diff --git a/src/libsodium/test/default/sodium_utils.c b/src/libsodium/test/default/sodium_utils.c new file mode 100644 index 00000000..177dbf23 --- /dev/null +++ b/src/libsodium/test/default/sodium_utils.c @@ -0,0 +1,27 @@ +#include <stdio.h> +#include <string.h> + +#define TEST_NAME "sodium_utils" +#include "cmptest.h" + +int main(void) +{ + unsigned char buf1[1000]; + unsigned char buf2[1000]; + char buf3[33]; + + randombytes(buf1, sizeof buf1); + memcpy(buf2, buf1, sizeof buf2); + printf("%d\n", sodium_memcmp(buf1, buf2, sizeof buf1)); + sodium_memzero(buf1, 0U); + printf("%d\n", sodium_memcmp(buf1, buf2, sizeof buf1)); + sodium_memzero(buf1, sizeof buf1 / 2); + printf("%d\n", sodium_memcmp(buf1, buf2, sizeof buf1)); + printf("%d\n", sodium_memcmp(buf1, buf2, 0U)); + sodium_memzero(buf2, sizeof buf2 / 2); + printf("%d\n", sodium_memcmp(buf1, buf2, sizeof buf1)); + printf("%s\n", sodium_bin2hex(buf3, 33U, + (const unsigned char *) + "0123456789ABCDEF", 16U)); + return 0; +} diff --git a/src/libsodium/test/default/sodium_utils.exp b/src/libsodium/test/default/sodium_utils.exp new file mode 100644 index 00000000..03cb2179 --- /dev/null +++ b/src/libsodium/test/default/sodium_utils.exp @@ -0,0 +1,6 @@ +0 +0 +255 +0 +0 +30313233343536373839414243444546 diff --git a/src/libsodium/test/default/sodium_version.c b/src/libsodium/test/default/sodium_version.c new file mode 100644 index 00000000..aff06276 --- /dev/null +++ b/src/libsodium/test/default/sodium_version.c @@ -0,0 +1,13 @@ +#include <stdio.h> + +#define TEST_NAME "sodium_version" +#include "cmptest.h" + +int main(void) +{ + printf ("%d\n", sodium_version_string() != NULL); + printf ("%d\n", sodium_library_version_major() > 0); + printf ("%d\n", sodium_library_version_minor() > 0); + + return 0; +} diff --git a/src/libsodium/test/default/sodium_version.exp b/src/libsodium/test/default/sodium_version.exp new file mode 100644 index 00000000..e8183f05 --- /dev/null +++ b/src/libsodium/test/default/sodium_version.exp @@ -0,0 +1,3 @@ +1 +1 +1 diff --git a/src/libsodium/test/default/stream.c b/src/libsodium/test/default/stream.c new file mode 100644 index 00000000..cc6d4162 --- /dev/null +++ b/src/libsodium/test/default/stream.c @@ -0,0 +1,30 @@ +#include <stdio.h> + +#define TEST_NAME "stream" +#include "cmptest.h" + +unsigned char firstkey[32] = { + 0x1b,0x27,0x55,0x64,0x73,0xe9,0x85,0xd4 +,0x62,0xcd,0x51,0x19,0x7a,0x9a,0x46,0xc7 +,0x60,0x09,0x54,0x9e,0xac,0x64,0x74,0xf2 +,0x06,0xc4,0xee,0x08,0x44,0xf6,0x83,0x89 +} ; + +unsigned char nonce[24] = { + 0x69,0x69,0x6e,0xe9,0x55,0xb6,0x2b,0x73 +,0xcd,0x62,0xbd,0xa8,0x75,0xfc,0x73,0xd6 +,0x82,0x19,0xe0,0x03,0x6b,0x7a,0x0b,0x37 +} ; + +unsigned char output[4194304]; + +unsigned char h[32]; + +int main(void) +{ + int i; + crypto_stream_xsalsa20(output,4194304,nonce,firstkey); + crypto_hash_sha256(h,output,sizeof output); + for (i = 0;i < 32;++i) printf("%02x",h[i]); printf("\n"); + return 0; +} diff --git a/src/libsodium/test/default/stream.exp b/src/libsodium/test/default/stream.exp new file mode 100644 index 00000000..5fa208c1 --- /dev/null +++ b/src/libsodium/test/default/stream.exp @@ -0,0 +1 @@ +662b9d0e3463029156069b12f918691a98f7dfb2ca0393c96bbfc6b1fbd630a2 diff --git a/src/libsodium/test/default/stream2.c b/src/libsodium/test/default/stream2.c new file mode 100644 index 00000000..25cdb352 --- /dev/null +++ b/src/libsodium/test/default/stream2.c @@ -0,0 +1,28 @@ +#include <stdio.h> + +#define TEST_NAME "stream2" +#include "cmptest.h" + +unsigned char secondkey[32] = { + 0xdc,0x90,0x8d,0xda,0x0b,0x93,0x44,0xa9 +,0x53,0x62,0x9b,0x73,0x38,0x20,0x77,0x88 +,0x80,0xf3,0xce,0xb4,0x21,0xbb,0x61,0xb9 +,0x1c,0xbd,0x4c,0x3e,0x66,0x25,0x6c,0xe4 +} ; + +unsigned char noncesuffix[8] = { + 0x82,0x19,0xe0,0x03,0x6b,0x7a,0x0b,0x37 +} ; + +unsigned char output[4194304]; + +unsigned char h[32]; + +int main(void) +{ + int i; + crypto_stream_salsa20(output,4194304,noncesuffix,secondkey); + crypto_hash_sha256(h,output,sizeof output); + for (i = 0;i < 32;++i) printf("%02x",h[i]); printf("\n"); + return 0; +} diff --git a/src/libsodium/test/default/stream2.exp b/src/libsodium/test/default/stream2.exp new file mode 100644 index 00000000..5fa208c1 --- /dev/null +++ b/src/libsodium/test/default/stream2.exp @@ -0,0 +1 @@ +662b9d0e3463029156069b12f918691a98f7dfb2ca0393c96bbfc6b1fbd630a2 diff --git a/src/libsodium/test/default/stream3.c b/src/libsodium/test/default/stream3.c new file mode 100644 index 00000000..3a1f559d --- /dev/null +++ b/src/libsodium/test/default/stream3.c @@ -0,0 +1,30 @@ +#include <stdio.h> + +#define TEST_NAME "stream3" +#include "cmptest.h" + +unsigned char firstkey[32] = { + 0x1b,0x27,0x55,0x64,0x73,0xe9,0x85,0xd4 +,0x62,0xcd,0x51,0x19,0x7a,0x9a,0x46,0xc7 +,0x60,0x09,0x54,0x9e,0xac,0x64,0x74,0xf2 +,0x06,0xc4,0xee,0x08,0x44,0xf6,0x83,0x89 +} ; + +unsigned char nonce[24] = { + 0x69,0x69,0x6e,0xe9,0x55,0xb6,0x2b,0x73 +,0xcd,0x62,0xbd,0xa8,0x75,0xfc,0x73,0xd6 +,0x82,0x19,0xe0,0x03,0x6b,0x7a,0x0b,0x37 +} ; + +unsigned char rs[32]; + +int main(void) +{ + int i; + crypto_stream_xsalsa20(rs,32,nonce,firstkey); + for (i = 0;i < 32;++i) { + printf(",0x%02x",(unsigned int) rs[i]); + if (i % 8 == 7) printf("\n"); + } + return 0; +} diff --git a/src/libsodium/test/default/stream3.exp b/src/libsodium/test/default/stream3.exp new file mode 100644 index 00000000..9cd78798 --- /dev/null +++ b/src/libsodium/test/default/stream3.exp @@ -0,0 +1,4 @@ +,0xee,0xa6,0xa7,0x25,0x1c,0x1e,0x72,0x91 +,0x6d,0x11,0xc2,0xcb,0x21,0x4d,0x3c,0x25 +,0x25,0x39,0x12,0x1d,0x8e,0x23,0x4e,0x65 +,0x2d,0x65,0x1f,0xa4,0xc8,0xcf,0xf8,0x80 diff --git a/src/libsodium/test/default/stream4.c b/src/libsodium/test/default/stream4.c new file mode 100644 index 00000000..91c724f7 --- /dev/null +++ b/src/libsodium/test/default/stream4.c @@ -0,0 +1,55 @@ +#include <stdio.h> + +#define TEST_NAME "stream4" +#include "cmptest.h" + +unsigned char firstkey[32] = { + 0x1b,0x27,0x55,0x64,0x73,0xe9,0x85,0xd4 +,0x62,0xcd,0x51,0x19,0x7a,0x9a,0x46,0xc7 +,0x60,0x09,0x54,0x9e,0xac,0x64,0x74,0xf2 +,0x06,0xc4,0xee,0x08,0x44,0xf6,0x83,0x89 +} ; + +unsigned char nonce[24] = { + 0x69,0x69,0x6e,0xe9,0x55,0xb6,0x2b,0x73 +,0xcd,0x62,0xbd,0xa8,0x75,0xfc,0x73,0xd6 +,0x82,0x19,0xe0,0x03,0x6b,0x7a,0x0b,0x37 +} ; + +unsigned char m[163] = { + 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +,0xbe,0x07,0x5f,0xc5,0x3c,0x81,0xf2,0xd5 +,0xcf,0x14,0x13,0x16,0xeb,0xeb,0x0c,0x7b +,0x52,0x28,0xc5,0x2a,0x4c,0x62,0xcb,0xd4 +,0x4b,0x66,0x84,0x9b,0x64,0x24,0x4f,0xfc +,0xe5,0xec,0xba,0xaf,0x33,0xbd,0x75,0x1a +,0x1a,0xc7,0x28,0xd4,0x5e,0x6c,0x61,0x29 +,0x6c,0xdc,0x3c,0x01,0x23,0x35,0x61,0xf4 +,0x1d,0xb6,0x6c,0xce,0x31,0x4a,0xdb,0x31 +,0x0e,0x3b,0xe8,0x25,0x0c,0x46,0xf0,0x6d +,0xce,0xea,0x3a,0x7f,0xa1,0x34,0x80,0x57 +,0xe2,0xf6,0x55,0x6a,0xd6,0xb1,0x31,0x8a +,0x02,0x4a,0x83,0x8f,0x21,0xaf,0x1f,0xde +,0x04,0x89,0x77,0xeb,0x48,0xf5,0x9f,0xfd +,0x49,0x24,0xca,0x1c,0x60,0x90,0x2e,0x52 +,0xf0,0xa0,0x89,0xbc,0x76,0x89,0x70,0x40 +,0xe0,0x82,0xf9,0x37,0x76,0x38,0x48,0x64 +,0x5e,0x07,0x05 +} ; + +unsigned char c[163]; + +int main(void) +{ + int i; + crypto_stream_xsalsa20_xor(c,m,163,nonce,firstkey); + for (i = 32;i < 163;++i) { + printf(",0x%02x",(unsigned int) c[i]); + if (i % 8 == 7) printf("\n"); + } + printf("\n"); + return 0; +} diff --git a/src/libsodium/test/default/stream4.exp b/src/libsodium/test/default/stream4.exp new file mode 100644 index 00000000..0d3d8e94 --- /dev/null +++ b/src/libsodium/test/default/stream4.exp @@ -0,0 +1,17 @@ +,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73 +,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce +,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4 +,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a +,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b +,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72 +,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2 +,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38 +,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a +,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae +,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea +,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda +,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde +,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3 +,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6 +,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74 +,0xe3,0x55,0xa5 diff --git a/src/libsodium/test/default/stream5.c b/src/libsodium/test/default/stream5.c new file mode 100644 index 00000000..58aa36f8 --- /dev/null +++ b/src/libsodium/test/default/stream5.c @@ -0,0 +1,29 @@ +#include <stdio.h> + +#define TEST_NAME "stream5" +#include "cmptest.h" + +unsigned char firstkey[32] = { + 0x1b,0x27,0x55,0x64,0x73,0xe9,0x85,0xd4 +,0x62,0xcd,0x51,0x19,0x7a,0x9a,0x46,0xc7 +,0x60,0x09,0x54,0x9e,0xac,0x64,0x74,0xf2 +,0x06,0xc4,0xee,0x08,0x44,0xf6,0x83,0x89 +} ; + +unsigned char nonce[16] = { + 0x69,0x69,0x6e,0xe9,0x55,0xb6,0x2b,0x73 +,0xcd,0x62,0xbd,0xa8,0x75,0xfc,0x73,0xd6 +} ; + +unsigned char output[4194304]; + +unsigned char h[32]; + +int main(void) +{ + int i; + crypto_stream_aes256estream(output,4194304,nonce,firstkey); + crypto_hash_sha256(h,output,sizeof output); + for (i = 0;i < 32;++i) printf("%02x",h[i]); printf("\n"); + return 0; +} diff --git a/src/libsodium/test/default/stream5.exp b/src/libsodium/test/default/stream5.exp new file mode 100644 index 00000000..d55bf9f9 --- /dev/null +++ b/src/libsodium/test/default/stream5.exp @@ -0,0 +1 @@ +b5d3f979ab4a760787484b4e0cf7c82db358b06fdf365cc7d456cc91258af618 diff --git a/src/libsodium/test/default/stream6.c b/src/libsodium/test/default/stream6.c new file mode 100644 index 00000000..668389fb --- /dev/null +++ b/src/libsodium/test/default/stream6.c @@ -0,0 +1,54 @@ +#include <stdio.h> + +#define TEST_NAME "stream6" +#include "cmptest.h" + +unsigned char firstkey[32] = { + 0x1b,0x27,0x55,0x64,0x73,0xe9,0x85,0xd4 +,0x62,0xcd,0x51,0x19,0x7a,0x9a,0x46,0xc7 +,0x60,0x09,0x54,0x9e,0xac,0x64,0x74,0xf2 +,0x06,0xc4,0xee,0x08,0x44,0xf6,0x83,0x89 +} ; + +unsigned char nonce[16] = { + 0x69,0x69,0x6e,0xe9,0x55,0xb6,0x2b,0x73 +,0xcd,0x62,0xbd,0xa8,0x75,0xfc,0x73,0xd6 +} ; + +unsigned char m[163] = { + 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +, 0, 0, 0, 0, 0, 0, 0, 0 +,0xbe,0x07,0x5f,0xc5,0x3c,0x81,0xf2,0xd5 +,0xcf,0x14,0x13,0x16,0xeb,0xeb,0x0c,0x7b +,0x52,0x28,0xc5,0x2a,0x4c,0x62,0xcb,0xd4 +,0x4b,0x66,0x84,0x9b,0x64,0x24,0x4f,0xfc +,0xe5,0xec,0xba,0xaf,0x33,0xbd,0x75,0x1a +,0x1a,0xc7,0x28,0xd4,0x5e,0x6c,0x61,0x29 +,0x6c,0xdc,0x3c,0x01,0x23,0x35,0x61,0xf4 +,0x1d,0xb6,0x6c,0xce,0x31,0x4a,0xdb,0x31 +,0x0e,0x3b,0xe8,0x25,0x0c,0x46,0xf0,0x6d +,0xce,0xea,0x3a,0x7f,0xa1,0x34,0x80,0x57 +,0xe2,0xf6,0x55,0x6a,0xd6,0xb1,0x31,0x8a +,0x02,0x4a,0x83,0x8f,0x21,0xaf,0x1f,0xde +,0x04,0x89,0x77,0xeb,0x48,0xf5,0x9f,0xfd +,0x49,0x24,0xca,0x1c,0x60,0x90,0x2e,0x52 +,0xf0,0xa0,0x89,0xbc,0x76,0x89,0x70,0x40 +,0xe0,0x82,0xf9,0x37,0x76,0x38,0x48,0x64 +,0x5e,0x07,0x05 +} ; + +unsigned char c[163]; + +int main(void) +{ + int i; + crypto_stream_aes256estream_xor(c,m,163,nonce,firstkey); + for (i = 32;i < 163;++i) { + printf(",0x%02x",(unsigned int) c[i]); + if (i % 8 == 7) printf("\n"); + } + printf("\n"); + return 0; +} diff --git a/src/libsodium/test/default/stream6.exp b/src/libsodium/test/default/stream6.exp new file mode 100644 index 00000000..a74aee22 --- /dev/null +++ b/src/libsodium/test/default/stream6.exp @@ -0,0 +1,17 @@ +,0x04,0x1d,0x9f,0xb0,0x61,0x23,0xe3,0x37 +,0x05,0xbb,0x0a,0xfe,0x81,0xc6,0x63,0x87 +,0xd0,0x61,0x26,0xd8,0xd7,0x18,0x97,0x66 +,0xc6,0x15,0xf3,0x46,0x58,0x7d,0xdc,0x0a +,0x68,0xdd,0xc0,0xaa,0x44,0x80,0xc5,0xa2 +,0x1c,0xea,0x1f,0xfa,0x17,0xfe,0xe0,0xd1 +,0x00,0x0f,0x8f,0x70,0x0c,0xd2,0x9e,0xe1 +,0x00,0x88,0xdf,0xfa,0xf8,0xbd,0x07,0x62 +,0xbf,0xfd,0x81,0xa8,0x84,0x30,0x39,0x01 +,0x85,0x08,0x8d,0x66,0x5d,0x96,0x20,0x14 +,0xa0,0x5a,0xa4,0xe8,0xd2,0x07,0x4f,0x47 +,0x0c,0x2b,0xbc,0x9b,0xd1,0x11,0x85,0xda +,0x71,0xc3,0x59,0x5c,0xd9,0x27,0x64,0x89 +,0xf2,0x2d,0xa7,0x10,0x80,0xdf,0xbb,0x0f +,0x32,0xb9,0x9a,0x07,0x66,0x6c,0x7c,0x41 +,0xf6,0x78,0x71,0xf7,0x8d,0x69,0xb9,0xb1 +,0x79,0x8e,0xe3 diff --git a/src/libsodium/test/quirks/windows/windows-quirks.h b/src/libsodium/test/quirks/windows/windows-quirks.h new file mode 100644 index 00000000..11d82bf9 --- /dev/null +++ b/src/libsodium/test/quirks/windows/windows-quirks.h @@ -0,0 +1,18 @@ + +#include <stdlib.h> + +#ifdef _WIN32 + +static void +srandom(unsigned seed) +{ + srand(seed); +} + +static long +random(void) +{ + return (long) rand(); +} + +#endif -- GitLab