Merge branch '2.4.x' into 2.5.x
[catacomb] / math / Makefile.am
index bca64be..7c4ffed 100644 (file)
@@ -39,9 +39,9 @@ TEST_LIBS              = libmath.la
 ## The `mpgen' tool for dealing with these things.
 mpgen                   = $(srcdir)/mpgen
 EXTRA_DIST             += mpgen
-AM_V_MPGEN              = $(AM_V_MPGEN_$(V))
-AM_V_MPGEN_             = $(AM_V_MPGEN_$(AM_DEFAULT_VERBOSITY))
-AM_V_MPGEN_0            = @echo "  MPGEN  $@";
+AM_V_MPGEN              = $(AM_V_MPGEN_@AM_V@)
+AM_V_MPGEN_             = $(AM_V_MPGEN_@AM_DEFAULT_V@)
+AM_V_MPGEN_0            = @echo "  MPGEN    $@";
 MPGEN                   = $(AM_V_MPGEN)$(PYTHON) $(mpgen)
 
 ## The type information collected by `configure'.
@@ -84,29 +84,29 @@ libmath_la_SOURCES  += exp.c
 ## Main user-visible multiprecision arithmetic.
 pkginclude_HEADERS     += mp.h
 libmath_la_SOURCES     += mp-arith.c
-TESTS                  += mp-arith.$t
+TESTS                  += mp-arith.t$(EXEEXT)
 libmath_la_SOURCES     += mp-const.c
 libmath_la_SOURCES     += mp-exp.c mp-exp.h
 libmath_la_SOURCES     += mp-gcd.c
-TESTS                  += mp-gcd.$t
+TESTS                  += mp-gcd.t$(EXEEXT)
 libmath_la_SOURCES     += mp-io.c
 libmath_la_SOURCES     += mp-jacobi.c
-TESTS                  += mp-jacobi.$t
+TESTS                  += mp-jacobi.t$(EXEEXT)
 libmath_la_SOURCES     += mp-mem.c
 libmath_la_SOURCES     += mp-misc.c
 libmath_la_SOURCES     += mp-modexp.c
-TESTS                  += mp-modexp.$t
+TESTS                  += mp-modexp.t$(EXEEXT)
 libmath_la_SOURCES     += mp-modsqrt.c
-TESTS                  += mp-modsqrt.$t
+TESTS                  += mp-modsqrt.t$(EXEEXT)
 libmath_la_SOURCES     += mp-sqrt.c
-TESTS                  += mp-sqrt.$t
+TESTS                  += mp-sqrt.t$(EXEEXT)
 libmath_la_SOURCES     += mp-test.c
 EXTRA_DIST             += t/mp
 
 ## Computing Fibonacci numbers.
 pkginclude_HEADERS     += mp-fibonacci.h
 libmath_la_SOURCES     += mp-fibonacci.c
-TESTS                  += mp-fibonacci.$t
+TESTS                  += mp-fibonacci.t$(EXEEXT)
 
 ## Special memory allocation for multiprecision integers.
 pkginclude_HEADERS     += mparena.h
@@ -115,36 +115,36 @@ libmath_la_SOURCES        += mparena.c
 ## Barrett reduction, an efficient method for modular reduction.
 pkginclude_HEADERS     += mpbarrett.h
 libmath_la_SOURCES     += mpbarrett.c
-TESTS                  += mpbarrett.$t
+TESTS                  += mpbarrett.t$(EXEEXT)
 libmath_la_SOURCES     += mpbarrett-exp.c mpbarrett-mexp.c mpbarrett-exp.h
-TESTS                  += mpbarrett-exp.$t mpbarrett-mexp.$t
-TESTS                  += mpbarrett.$t
+TESTS                  += mpbarrett-exp.t$(EXEEXT) mpbarrett-mexp.t$(EXEEXT)
+TESTS                  += mpbarrett.t$(EXEEXT)
 EXTRA_DIST             += t/mpbarrett
 
 ## Solving congruences using the Chinese Remainder Theorem.
 pkginclude_HEADERS     += mpcrt.h
 libmath_la_SOURCES     += mpcrt.c
-TESTS                  += mpcrt.$t
+TESTS                  += mpcrt.t$(EXEEXT)
 EXTRA_DIST             += t/mpcrt
 
 ## Conversions between machine-native and multiprecision integers.
 pkginclude_HEADERS     += mpint.h
 libmath_la_SOURCES     += mpint.c
-TESTS                  += mpint.$t
+TESTS                  += mpint.t$(EXEEXT)
 EXTRA_DIST             += t/mpint
 
 ## Montgomery reduction, a clever method for modular arithmetic.
 pkginclude_HEADERS     += mpmont.h
 libmath_la_SOURCES     += mpmont.c
-TESTS                  += mpmont.$t
+TESTS                  += mpmont.t$(EXEEXT)
 libmath_la_SOURCES     += mpmont-exp.c mpmont-mexp.c mpmont-exp.h
-TESTS                  += mpmont-exp.$t mpmont-mexp.$t
+TESTS                  += mpmont-exp.t$(EXEEXT) mpmont-mexp.t$(EXEEXT)
 EXTRA_DIST             += t/mpmont
 
 ## Efficient multiplication of many small numbers.
 pkginclude_HEADERS     += mpmul.h
 libmath_la_SOURCES     += mpmul.c
-TESTS                  += mpmul.$t
+TESTS                  += mpmul.t$(EXEEXT)
 
 ## Generating random numbers.
 pkginclude_HEADERS     += mprand.h
@@ -154,7 +154,7 @@ libmath_la_SOURCES  += mprand.c
 ## representations.
 pkginclude_HEADERS     += mpreduce.h
 libmath_la_SOURCES     += mpreduce.c mpreduce-exp.h
-TESTS                  += mpreduce.$t
+TESTS                  += mpreduce.t$(EXEEXT)
 EXTRA_DIST             += t/mpreduce
 
 ## Iteratiion over the bianry representation of multiprecision integers.
@@ -165,7 +165,7 @@ libmath_la_SOURCES  += mpscan.c
 ## representations.
 pkginclude_HEADERS     += mptext.h
 libmath_la_SOURCES     += mptext.c
-TESTS                  += mptext.$t
+TESTS                  += mptext.t$(EXEEXT)
 libmath_la_SOURCES     += mptext-dstr.c
 libmath_la_SOURCES     += mptext-file.c
 libmath_la_SOURCES     += mptext-len.c
@@ -175,13 +175,32 @@ EXTRA_DIST                += t/mptext
 ## Low-level multiprecision arithmetic.
 pkginclude_HEADERS     += mpx.h bitops.h mpw.h
 libmath_la_SOURCES     += mpx.c
-TESTS                  += mpx.$t
+TESTS                  += mpx.t$(EXEEXT)
 libmath_la_SOURCES     += karatsuba.h mpx-kmul.c mpx-ksqr.c
-TESTS                  += mpx-kmul.$t mpx-ksqr.$t
+TESTS                  += mpx-kmul.t$(EXEEXT) mpx-ksqr.t$(EXEEXT)
 noinst_PROGRAMS                += bittest
 TESTS                  += bittest
 EXTRA_DIST             += t/mpx
 
+if CPUFAM_X86
+MPX_MUL4_SOURCES        = mpx-mul4-x86-sse2.S
+check_PROGRAMS         += mpx-mul4.t
+TESTS                  += mpx-mul4.t$(EXEEXT)
+endif
+if CPUFAM_AMD64
+MPX_MUL4_SOURCES        = mpx-mul4-amd64-sse2.S
+check_PROGRAMS         += mpx-mul4.t
+TESTS                  += mpx-mul4.t$(EXEEXT)
+endif
+libmath_la_SOURCES     += $(MPX_MUL4_SOURCES)
+mpx_mul4_t_SOURCES      = mpx-mul4-test.c $(MPX_MUL4_SOURCES)
+mpx_mul4_t_CPPFLAGS     = \
+       $(AM_CPPFLAGS) \
+       -DTEST_MUL4 -DSRCDIR="\"$(srcdir)\""
+mpx_mul4_t_LDFLAGS      = $(TEST_LDFLAGS)
+mpx_mul4_t_LDADD        = $(top_builddir)/libcatacomb.la $(mLib_LIBS)
+EXTRA_DIST             += t/mpx-mul4
+
 ## A quick-and-dirty parser, used for parsing descriptions of groups, fields,
 ## etc.
 pkginclude_HEADERS     += qdparse.h
@@ -190,7 +209,7 @@ libmath_la_SOURCES  += qdparse.c
 ## Pollard's `rho' algorithm for determining discrete logarithms.
 pkginclude_HEADERS     += rho.h
 libmath_la_SOURCES     += rho.c
-TESTS                  += rho.$t
+TESTS                  += rho.t$(EXEEXT)
 
 ###--------------------------------------------------------------------------
 ### Prime number checking, searching, and related jobs.
@@ -211,7 +230,7 @@ if !CROSS_COMPILING
 $(precomp)/math/primetab.h: $(precomp)/math/primetab.c
 $(precomp)/math/primetab.c:
        $(AM_V_at)$(MKDIR_P) $(precomp)/math
-       $(AM_V_at)$(MAKE) genprimes$e
+       $(AM_V_at)$(MAKE) genprimes$(EXEEXT)
        $(AM_V_GEN)./genprimes -sCATACOMB_PRIMETAB_H \
                -h$(precomp)/math/primetab.h -c$(precomp)/math/primetab.c \
                -n256 -t"unsigned short" -iprimetab
@@ -227,9 +246,10 @@ libmath_la_SOURCES += pfilt.c
 pkginclude_HEADERS     += pgen.h
 libmath_la_SOURCES     += pgen.c
 libmath_la_SOURCES     += pgen-gcd.c
+libmath_la_SOURCES     += pgen-granfrob.c
 libmath_la_SOURCES     += pgen-simul.c
 libmath_la_SOURCES     += pgen-stdev.c
-TESTS                  += pgen.$t
+TESTS                  += pgen.t$(EXEEXT) pgen-granfrob.t$(EXEEXT)
 EXTRA_DIST             += t/pgen
 
 ## Finding primitive elements in finite fields.
@@ -239,7 +259,7 @@ libmath_la_SOURCES  += prim.c
 ## Iterating over all prime numbers from a given starting point.
 pkginclude_HEADERS     += primeiter.h
 libmath_la_SOURCES     += primeiter.c
-TESTS                  += primeiter.$t
+TESTS                  += primeiter.t$(EXEEXT)
 primeiter.lo: $(precomp)/math/wheel.h
 
 ## The Miller--Rabin primality test.
@@ -261,7 +281,7 @@ if !CROSS_COMPILING
 $(precomp)/math/wheel.h: $(precomp)/math/wheel.c
 $(precomp)/math/wheel.c:
        $(AM_V_at)$(MKDIR_P) $(precomp)/math
-       $(AM_V_at)$(MAKE) genwheel$e
+       $(AM_V_at)$(MAKE) genwheel$(EXEEXT)
        $(AM_V_GEN)./genwheel -sCATACOMB_WHEEL_H \
                -h$(precomp)/math/wheel.h -c$(precomp)/math/wheel.c \
                -n5 -t"unsigned char" -iwheel
@@ -273,18 +293,18 @@ endif
 ## User-visible binary polynomial arithmetic.
 pkginclude_HEADERS     += gf.h
 libmath_la_SOURCES     += gf-arith.c
-TESTS                  += gf-arith.$t
+TESTS                  += gf-arith.t$(EXEEXT)
 libmath_la_SOURCES     += gf-exp.c gf-exp.h
 libmath_la_SOURCES     += gf-gcd.c
-TESTS                  += gf-gcd.$t
+TESTS                  += gf-gcd.t$(EXEEXT)
 EXTRA_DIST             += t/gf
 
 ## Low-level binary polynomial arithmetic.
 pkginclude_HEADERS     += gfx.h
 libmath_la_SOURCES     += gfx.c
-TESTS                  += gfx.$t
+TESTS                  += gfx.t$(EXEEXT)
 libmath_la_SOURCES     += gfx-kmul.c
-TESTS                  += gfx-kmul.$t
+TESTS                  += gfx-kmul.t$(EXEEXT)
 libmath_la_SOURCES     += gfx-sqr.c
 nodist_libmath_la_SOURCES += ../precomp/math/gfx-sqrtab.c
 PRECOMPS               += $(precomp)/math/gfx-sqrtab.c
@@ -292,25 +312,25 @@ PRECOMP_PROGS             += gfx-sqr-mktab
 if !CROSS_COMPILING
 $(precomp)/math/gfx-sqrtab.c:
        $(AM_V_at)$(MKDIR_P) $(precomp)/math
-       $(AM_V_at)$(MAKE) gfx-sqr-mktab$e
+       $(AM_V_at)$(MAKE) gfx-sqr-mktab$(EXEEXT)
        $(AM_V_GEN)./gfx-sqr-mktab >$(precomp)/math/gfx-sqrtab.c.new && \
                mv $(precomp)/math/gfx-sqrtab.c.new \
                        $(precomp)/math/gfx-sqrtab.c
 endif
-TESTS                  += gfx-sqr.$t
+TESTS                  += gfx-sqr.t$(EXEEXT)
 EXTRA_DIST             += t/gfx
 
 ## Conversions between normal and polynomial basis representations for binary
 ## fields.
 pkginclude_HEADERS     += gfn.h
 libmath_la_SOURCES     += gfn.c
-TESTS                  += gfn.$t
+TESTS                  += gfn.t$(EXEEXT)
 EXTRA_DIST             += t/gfn
 
 ## Efficient reduction modulo sparse polynomials.
 pkginclude_HEADERS     += gfreduce.h
 libmath_la_SOURCES     += gfreduce.c gfreduce-exp.h
-TESTS                  += gfreduce.$t
+TESTS                  += gfreduce.t$(EXEEXT)
 EXTRA_DIST             += t/gfreduce
 
 ###--------------------------------------------------------------------------
@@ -328,7 +348,7 @@ libmath_la_SOURCES  += g-bin.c
 libmath_la_SOURCES     += g-prime.c
 libmath_la_SOURCES     += g-ec.c
 EXTRA_DIST             += group-test.c
-TESTS                  += group-test.$t
+TESTS                  += group-test.t$(EXEEXT)
 EXTRA_DIST             += t/group
 
 ## Abstract finite fields.
@@ -366,11 +386,11 @@ pkginclude_HEADERS        += ec.h ec-guts.h
 libmath_la_SOURCES     += ec.c
 libmath_la_SOURCES     += ec-exp.c ec-exp.h
 libmath_la_SOURCES     += ec-info.c
-TESTS                  += ec-info.$t
+TESTS                  += ec-info.t$(EXEEXT)
 libmath_la_SOURCES     += ec-bin.c
-TESTS                  += ec-bin.$t
+TESTS                  += ec-bin.t$(EXEEXT)
 libmath_la_SOURCES     += ec-prime.c
-TESTS                  += ec-prime.$t
+TESTS                  += ec-prime.t$(EXEEXT)
 EXTRA_DIST             += t/ec
 
 ## The standard `raw' encoding (`EC2OSP') of elliptic curve points.
@@ -384,7 +404,7 @@ libmath_la_SOURCES  += ec-fetch.c
 ## Test infrastructure for elliptic curves.
 pkginclude_HEADERS     += ec-test.h
 libmath_la_SOURCES     += ec-test.c
-TESTS                  += ec-test.$t
+TESTS                  += ec-test.t$(EXEEXT)
 
 ## Table of built-in elliptic-curve groups.
 pkginclude_HEADERS     += ectab.h
@@ -395,4 +415,43 @@ ectab.c: $(mpgen) typeinfo.py ectab.in
        $(MPGEN) ectab $(srcdir)/ectab.in >ectab.c.new && \
                mv ectab.c.new ectab.c
 
+###--------------------------------------------------------------------------
+### Other strange things.
+
+pkginclude_HEADERS     += qfarith.h
+
+pkginclude_HEADERS     += f25519.h
+libmath_la_SOURCES     += f25519.c
+TESTS                  += f25519.t$(EXEEXT)
+TESTS                  += f25519-p10.t$(EXEEXT)
+EXTRA_DIST             += t/f25519
+
+check_PROGRAMS         += f25519-p10.t
+f25519_p10_t_SOURCES    = f25519.c
+f25519_p10_t_CPPFLAGS   = $(AM_CPPFLAGS) -DTEST_RIG -DSRCDIR="\"$(srcdir)\""
+f25519_p10_t_CPPFLAGS  += -DF25519_IMPL=10
+f25519_p10_t_LDFLAGS    = $(TEST_LDFLAGS)
+f25519_p10_t_LDADD      = $(TEST_LIBS) $(top_builddir)/libcatacomb.la
+f25519_p10_t_LDADD     += $(mLib_LIBS) $(CATACOMB_LIBS) $(LIBS)
+
+pkginclude_HEADERS     += fgoldi.h
+libmath_la_SOURCES     += fgoldi.c
+TESTS                  += fgoldi.t$(EXEEXT)
+TESTS                  += fgoldi-p12.t$(EXEEXT)
+EXTRA_DIST             += t/fgoldi
+
+check_PROGRAMS         += fgoldi-p12.t
+fgoldi_p12_t_SOURCES    = fgoldi.c
+fgoldi_p12_t_CPPFLAGS   = $(AM_CPPFLAGS) -DTEST_RIG -DSRCDIR="\"$(srcdir)\""
+fgoldi_p12_t_CPPFLAGS  += -DFGOLDI_IMPL=12
+fgoldi_p12_t_LDFLAGS    = $(TEST_LDFLAGS)
+fgoldi_p12_t_LDADD      = $(TEST_LIBS) $(top_builddir)/libcatacomb.la
+fgoldi_p12_t_LDADD     += $(mLib_LIBS) $(CATACOMB_LIBS) $(LIBS)
+
+pkginclude_HEADERS     += scaf.h
+libmath_la_SOURCES     += scaf.c
+
+pkginclude_HEADERS     += montladder.h
+pkginclude_HEADERS     += scmul.h
+
 ###----- That's all, folks --------------------------------------------------