vendor/libsodium/configure.ac in rbnacl-libsodium-0.4.5 vs vendor/libsodium/configure.ac in rbnacl-libsodium-0.5.0

- old
+ new

@@ -1,7 +1,7 @@ AC_PREREQ([2.65]) -AC_INIT([libsodium],[0.4.5], +AC_INIT([libsodium],[0.5.0], [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]) @@ -13,25 +13,25 @@ AC_SUBST(VERSION) ISODATE=`date +%Y-%m-%d` AC_SUBST(ISODATE) -SODIUM_LIBRARY_VERSION_MAJOR=4 -SODIUM_LIBRARY_VERSION_MINOR=4 -DLL_VERSION=4 -SODIUM_LIBRARY_VERSION=9:0:5 -# | | | -# +------+ | +---+ -# | | | -# 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 +SODIUM_LIBRARY_VERSION_MAJOR=5 +SODIUM_LIBRARY_VERSION_MINOR=0 +DLL_VERSION=5 +SODIUM_LIBRARY_VERSION=10:0:0 +# | | | +# +------+ | +---+ +# | | | +# 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) @@ -117,11 +117,11 @@ AC_SUBST([MAINT]) dnl Checks -PKG_PROG_PKG_CONFIG([0.25]) +PKG_PROG_PKG_CONFIG([0.23]) AM_CONDITIONAL([HAVE_PKG_CONFIG], [test "x$PKG_CONFIG" != "x"]) AC_SUBST(HAVE_PKG_CONFIG) AC_PROG_CC_C99 AM_PROG_AS @@ -149,11 +149,20 @@ 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" +LIBTOOL_OLD_FLAGS="$LIBTOOL_EXTRA_FLAGS" +LIBTOOL_EXTRA_FLAGS="$LIBTOOL_EXTRA_FLAGS -version-info $SODIUM_LIBRARY_VERSION" +AC_ARG_ENABLE(soname-versions, + [AC_HELP_STRING([--enable-soname-versions], [enable soname versions (must be disabled for android) (default: enabled)])], + [ + AS_IF([test "x$enableval" = "xno"], [ + LIBTOOL_EXTRA_FLAGS="$LIBTOOL_OLD_FLAGS -avoid-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"]) @@ -230,60 +239,53 @@ 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") -]) +AS_IF([test "x$EMSCRIPTEN" = "x"],[ -AC_CHECK_HEADERS([smmintrin.h], [], [], [ -#pragma GCC target("sse4.1") -]) + AC_MSG_CHECKING(for MMX instructions set) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("mmx") +#include <mmintrin.h> +]], [[ __m64 x = _mm_setzero_si64(); ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_MMINTRIN_H], [1], [mmx is available])], + [AC_MSG_RESULT(no)]) -AC_CHECK_HEADERS([immintrin.h], [], [], [ -#pragma GCC target("avx") -]) + AC_MSG_CHECKING(for SSE2 instructions set) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("sse2") +#include <emmintrin.h> +]], [[ __m128d x = _mm_setzero_pd(); ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_EMMINTRIN_H], [1], [sse2 is available])], + [AC_MSG_RESULT(no)]) -AC_CHECK_HEADERS([avxintrin.h], [], [], [ -#pragma GCC target("avx") -]) + AC_MSG_CHECKING(for SSE3 instructions set) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("sse3") +#include <pmmintrin.h> +]], [[ __m128 x = _mm_addsub_ps(_mm_cvtpd_ps(_mm_setzero_pd()), + _mm_cvtpd_ps(_mm_setzero_pd())); ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_PMMINTRIN_H], [1], [sse3 is available])], + [AC_MSG_RESULT(no)]) -AC_CHECK_HEADERS([x86intrin.h], [], [], [ -#pragma GCC target("xop") ]) -AC_CHECK_HEADERS([wmmintrin.h], [], [], [ -#pragma GCC target("aes") -]) +AC_CHECK_HEADERS([sys/mman.h]) -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_INLINE 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_ERROR([universal endianess is not supported - compile separately and use lipo(1)]) ) AC_MSG_CHECKING(whether __STDC_LIMIT_MACROS is required) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <limits.h> @@ -342,38 +344,56 @@ 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]) +AS_IF([test "$enable_asm" != "no"],[ + AC_MSG_CHECKING(for cpuid instruction) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[ +unsigned int cpu_info[4]; +__asm__ __volatile__ ("xchgl %%ebx, %k1; cpuid; xchgl %%ebx, %k1" : + "=a" (cpu_info[0]), "=&r" (cpu_info[1]), + "=c" (cpu_info[2]), "=d" (cpu_info[3]) : + "0" (0U), "2" (0U)); + ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_CPUID], [1], [cpuid instruction is available]) + HAVE_CPUID_V=1], + [AC_MSG_RESULT(no)]) + ]) 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])] ) +AC_MSG_CHECKING(for memset_s) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include <string.h> +]], [[ +char dummy[42]; +(void) memset_s(dummy, (rsize_t) sizeof dummy, 0, (rsize_t) sizeof dummy); +]])], +[AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_MEMSET_S], [1], [memset_s is available])], +[AC_MSG_RESULT(no)]) + 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 arc4random arc4random_buf]) +AS_IF([test "x$EMSCRIPTEN" = "x"],[ + AC_CHECK_FUNCS([arc4random arc4random_buf]) +]) +AC_CHECK_FUNCS([mlock VirtualLock]) +AC_CHECK_FUNCS([SecureZeroMemory explicit_bzero posix_memalign]) AC_SUBST([LIBTOOL_EXTRA_FLAGS]) dnl Libtool. @@ -390,16 +410,15 @@ AS_IF([test "x$PKG_CONFIG" != "x"], [ AC_CONFIG_FILES([libsodium.pc]) ]) AC_CONFIG_FILES([Makefile + dist-build/Makefile msvc-scripts/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