secp256k1 0.5.1 → 0.5.2
raw patch · 4 files changed
+338/−1 lines, 4 files
Files
- secp256k1.cabal +4/−1
- secp256k1/build-aux/m4/ax_jni_include_dir.m4 +140/−0
- secp256k1/build-aux/m4/ax_prog_cc_for_build.m4 +125/−0
- secp256k1/build-aux/m4/bitcoin_secp.m4 +69/−0
secp256k1.cabal view
@@ -1,5 +1,5 @@ name: secp256k1-version: 0.5.1+version: 0.5.2 synopsis: Bindings for secp256k1 library from Bitcoin Core description: Please see README.md homepage: http://github.com/haskoin/secp256k1-haskell#readme@@ -92,6 +92,9 @@ secp256k1/sage/group_prover.sage secp256k1/sage/weierstrass_prover.sage secp256k1/sage/secp256k1.sage+ secp256k1/build-aux/m4/ax_jni_include_dir.m4+ secp256k1/build-aux/m4/ax_prog_cc_for_build.m4+ secp256k1/build-aux/m4/bitcoin_secp.m4 README.md cabal-version: >=1.10
+ secp256k1/build-aux/m4/ax_jni_include_dir.m4 view
@@ -0,0 +1,140 @@+# ===========================================================================+# http://www.gnu.org/software/autoconf-archive/ax_jni_include_dir.html+# ===========================================================================+#+# SYNOPSIS+#+# AX_JNI_INCLUDE_DIR+#+# DESCRIPTION+#+# AX_JNI_INCLUDE_DIR finds include directories needed for compiling+# programs using the JNI interface.+#+# JNI include directories are usually in the Java distribution. This is+# deduced from the value of $JAVA_HOME, $JAVAC, or the path to "javac", in+# that order. When this macro completes, a list of directories is left in+# the variable JNI_INCLUDE_DIRS.+#+# Example usage follows:+#+# AX_JNI_INCLUDE_DIR+#+# for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS+# do+# CPPFLAGS="$CPPFLAGS -I$JNI_INCLUDE_DIR"+# done+#+# If you want to force a specific compiler:+#+# - at the configure.in level, set JAVAC=yourcompiler before calling+# AX_JNI_INCLUDE_DIR+#+# - at the configure level, setenv JAVAC+#+# Note: This macro can work with the autoconf M4 macros for Java programs.+# This particular macro is not part of the original set of macros.+#+# LICENSE+#+# Copyright (c) 2008 Don Anderson <dda@sleepycat.com>+#+# Copying and distribution of this file, with or without modification, are+# permitted in any medium without royalty provided the copyright notice+# and this notice are preserved. This file is offered as-is, without any+# warranty.++#serial 10++AU_ALIAS([AC_JNI_INCLUDE_DIR], [AX_JNI_INCLUDE_DIR])+AC_DEFUN([AX_JNI_INCLUDE_DIR],[++JNI_INCLUDE_DIRS=""++if test "x$JAVA_HOME" != x; then+ _JTOPDIR="$JAVA_HOME"+else+ if test "x$JAVAC" = x; then+ JAVAC=javac+ fi+ AC_PATH_PROG([_ACJNI_JAVAC], [$JAVAC], [no])+ if test "x$_ACJNI_JAVAC" = xno; then+ AC_MSG_WARN([cannot find JDK; try setting \$JAVAC or \$JAVA_HOME])+ fi+ _ACJNI_FOLLOW_SYMLINKS("$_ACJNI_JAVAC")+ _JTOPDIR=`echo "$_ACJNI_FOLLOWED" | sed -e 's://*:/:g' -e 's:/[[^/]]*$::'`+fi++case "$host_os" in+ darwin*) _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'`+ _JINC="$_JTOPDIR/Headers";;+ *) _JINC="$_JTOPDIR/include";;+esac+_AS_ECHO_LOG([_JTOPDIR=$_JTOPDIR])+_AS_ECHO_LOG([_JINC=$_JINC])++# On Mac OS X 10.6.4, jni.h is a symlink:+# /System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/jni.h+# -> ../../CurrentJDK/Headers/jni.h.++AC_CACHE_CHECK(jni headers, ac_cv_jni_header_path,+[+if test -f "$_JINC/jni.h"; then+ ac_cv_jni_header_path="$_JINC"+ JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $ac_cv_jni_header_path"+else+ _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'`+ if test -f "$_JTOPDIR/include/jni.h"; then+ ac_cv_jni_header_path="$_JTOPDIR/include"+ JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $ac_cv_jni_header_path"+ else+ ac_cv_jni_header_path=none+ fi+fi+])++++# get the likely subdirectories for system specific java includes+case "$host_os" in+bsdi*) _JNI_INC_SUBDIRS="bsdos";;+darwin*) _JNI_INC_SUBDIRS="darwin";;+freebsd*) _JNI_INC_SUBDIRS="freebsd";;+linux*) _JNI_INC_SUBDIRS="linux genunix";;+osf*) _JNI_INC_SUBDIRS="alpha";;+solaris*) _JNI_INC_SUBDIRS="solaris";;+mingw*) _JNI_INC_SUBDIRS="win32";;+cygwin*) _JNI_INC_SUBDIRS="win32";;+*) _JNI_INC_SUBDIRS="genunix";;+esac++if test "x$ac_cv_jni_header_path" != "xnone"; then+ # add any subdirectories that are present+ for JINCSUBDIR in $_JNI_INC_SUBDIRS+ do+ if test -d "$_JTOPDIR/include/$JINCSUBDIR"; then+ JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include/$JINCSUBDIR"+ fi+ done+fi+])++# _ACJNI_FOLLOW_SYMLINKS <path>+# Follows symbolic links on <path>,+# finally setting variable _ACJNI_FOLLOWED+# ----------------------------------------+AC_DEFUN([_ACJNI_FOLLOW_SYMLINKS],[+# find the include directory relative to the javac executable+_cur="$1"+while ls -ld "$_cur" 2>/dev/null | grep " -> " >/dev/null; do+ AC_MSG_CHECKING([symlink for $_cur])+ _slink=`ls -ld "$_cur" | sed 's/.* -> //'`+ case "$_slink" in+ /*) _cur="$_slink";;+ # 'X' avoids triggering unwanted echo options.+ *) _cur=`echo "X$_cur" | sed -e 's/^X//' -e 's:[[^/]]*$::'`"$_slink";;+ esac+ AC_MSG_RESULT([$_cur])+done+_ACJNI_FOLLOWED="$_cur"+])# _ACJNI
+ secp256k1/build-aux/m4/ax_prog_cc_for_build.m4 view
@@ -0,0 +1,125 @@+# ===========================================================================+# http://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html+# ===========================================================================+#+# SYNOPSIS+#+# AX_PROG_CC_FOR_BUILD+#+# DESCRIPTION+#+# This macro searches for a C compiler that generates native executables,+# that is a C compiler that surely is not a cross-compiler. This can be+# useful if you have to generate source code at compile-time like for+# example GCC does.+#+# The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything+# needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD).+# The value of these variables can be overridden by the user by specifying+# a compiler with an environment variable (like you do for standard CC).+#+# It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object+# file extensions for the build platform, and GCC_FOR_BUILD to `yes' if+# the compiler we found is GCC. All these variables but GCC_FOR_BUILD are+# substituted in the Makefile.+#+# LICENSE+#+# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>+#+# Copying and distribution of this file, with or without modification, are+# permitted in any medium without royalty provided the copyright notice+# and this notice are preserved. This file is offered as-is, without any+# warranty.++#serial 8++AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])+AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl+AC_REQUIRE([AC_PROG_CC])dnl+AC_REQUIRE([AC_PROG_CPP])dnl+AC_REQUIRE([AC_EXEEXT])dnl+AC_REQUIRE([AC_CANONICAL_HOST])dnl++dnl Use the standard macros, but make them use other variable names+dnl+pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl+pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl+pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl+pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl+pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl+pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl+pushdef([ac_cv_objext], ac_cv_build_objext)dnl+pushdef([ac_exeext], ac_build_exeext)dnl+pushdef([ac_objext], ac_build_objext)dnl+pushdef([CC], CC_FOR_BUILD)dnl+pushdef([CPP], CPP_FOR_BUILD)dnl+pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl+pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl+pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl+pushdef([host], build)dnl+pushdef([host_alias], build_alias)dnl+pushdef([host_cpu], build_cpu)dnl+pushdef([host_vendor], build_vendor)dnl+pushdef([host_os], build_os)dnl+pushdef([ac_cv_host], ac_cv_build)dnl+pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl+pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl+pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl+pushdef([ac_cv_host_os], ac_cv_build_os)dnl+pushdef([ac_cpp], ac_build_cpp)dnl+pushdef([ac_compile], ac_build_compile)dnl+pushdef([ac_link], ac_build_link)dnl++save_cross_compiling=$cross_compiling+save_ac_tool_prefix=$ac_tool_prefix+cross_compiling=no+ac_tool_prefix=++AC_PROG_CC+AC_PROG_CPP+AC_EXEEXT++ac_tool_prefix=$save_ac_tool_prefix+cross_compiling=$save_cross_compiling++dnl Restore the old definitions+dnl+popdef([ac_link])dnl+popdef([ac_compile])dnl+popdef([ac_cpp])dnl+popdef([ac_cv_host_os])dnl+popdef([ac_cv_host_vendor])dnl+popdef([ac_cv_host_cpu])dnl+popdef([ac_cv_host_alias])dnl+popdef([ac_cv_host])dnl+popdef([host_os])dnl+popdef([host_vendor])dnl+popdef([host_cpu])dnl+popdef([host_alias])dnl+popdef([host])dnl+popdef([LDFLAGS])dnl+popdef([CPPFLAGS])dnl+popdef([CFLAGS])dnl+popdef([CPP])dnl+popdef([CC])dnl+popdef([ac_objext])dnl+popdef([ac_exeext])dnl+popdef([ac_cv_objext])dnl+popdef([ac_cv_exeext])dnl+popdef([ac_cv_prog_cc_g])dnl+popdef([ac_cv_prog_cc_cross])dnl+popdef([ac_cv_prog_cc_works])dnl+popdef([ac_cv_prog_gcc])dnl+popdef([ac_cv_prog_CPP])dnl++dnl Finally, set Makefile variables+dnl+BUILD_EXEEXT=$ac_build_exeext+BUILD_OBJEXT=$ac_build_objext+AC_SUBST(BUILD_EXEEXT)dnl+AC_SUBST(BUILD_OBJEXT)dnl+AC_SUBST([CFLAGS_FOR_BUILD])dnl+AC_SUBST([CPPFLAGS_FOR_BUILD])dnl+AC_SUBST([LDFLAGS_FOR_BUILD])dnl+])
+ secp256k1/build-aux/m4/bitcoin_secp.m4 view
@@ -0,0 +1,69 @@+dnl libsecp25k1 helper checks+AC_DEFUN([SECP_INT128_CHECK],[+has_int128=$ac_cv_type___int128+])++dnl escape "$0x" below using the m4 quadrigaph @S|@, and escape it again with a \ for the shell.+AC_DEFUN([SECP_64BIT_ASM_CHECK],[+AC_MSG_CHECKING(for x86_64 assembly availability)+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[+ #include <stdint.h>]],[[+ uint64_t a = 11, tmp;+ __asm__ __volatile__("movq \@S|@0x100000000,%1; mulq %%rsi" : "+a"(a) : "S"(tmp) : "cc", "%rdx");+ ]])],[has_64bit_asm=yes],[has_64bit_asm=no])+AC_MSG_RESULT([$has_64bit_asm])+])++dnl+AC_DEFUN([SECP_OPENSSL_CHECK],[+ has_libcrypto=no+ m4_ifdef([PKG_CHECK_MODULES],[+ PKG_CHECK_MODULES([CRYPTO], [libcrypto], [has_libcrypto=yes],[has_libcrypto=no])+ if test x"$has_libcrypto" = x"yes"; then+ TEMP_LIBS="$LIBS"+ LIBS="$LIBS $CRYPTO_LIBS"+ AC_CHECK_LIB(crypto, main,[AC_DEFINE(HAVE_LIBCRYPTO,1,[Define this symbol if libcrypto is installed])],[has_libcrypto=no])+ LIBS="$TEMP_LIBS"+ fi+ ])+ if test x$has_libcrypto = xno; then+ AC_CHECK_HEADER(openssl/crypto.h,[+ AC_CHECK_LIB(crypto, main,[+ has_libcrypto=yes+ CRYPTO_LIBS=-lcrypto+ AC_DEFINE(HAVE_LIBCRYPTO,1,[Define this symbol if libcrypto is installed])+ ])+ ])+ LIBS=+ fi+if test x"$has_libcrypto" = x"yes" && test x"$has_openssl_ec" = x; then+ AC_MSG_CHECKING(for EC functions in libcrypto)+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[+ #include <openssl/ec.h>+ #include <openssl/ecdsa.h>+ #include <openssl/obj_mac.h>]],[[+ EC_KEY *eckey = EC_KEY_new_by_curve_name(NID_secp256k1);+ ECDSA_sign(0, NULL, 0, NULL, NULL, eckey);+ ECDSA_verify(0, NULL, 0, NULL, 0, eckey);+ EC_KEY_free(eckey);+ ECDSA_SIG *sig_openssl;+ sig_openssl = ECDSA_SIG_new();+ (void)sig_openssl->r;+ ECDSA_SIG_free(sig_openssl);+ ]])],[has_openssl_ec=yes],[has_openssl_ec=no])+ AC_MSG_RESULT([$has_openssl_ec])+fi+])++dnl+AC_DEFUN([SECP_GMP_CHECK],[+if test x"$has_gmp" != x"yes"; then+ CPPFLAGS_TEMP="$CPPFLAGS"+ CPPFLAGS="$GMP_CPPFLAGS $CPPFLAGS"+ LIBS_TEMP="$LIBS"+ LIBS="$GMP_LIBS $LIBS"+ AC_CHECK_HEADER(gmp.h,[AC_CHECK_LIB(gmp, __gmpz_init,[has_gmp=yes; GMP_LIBS="$GMP_LIBS -lgmp"; AC_DEFINE(HAVE_LIBGMP,1,[Define this symbol if libgmp is installed])])])+ CPPFLAGS="$CPPFLAGS_TEMP"+ LIBS="$LIBS_TEMP"+fi+])