Merge branch '2.4.x' into 2.5.x
[catacomb] / math / Makefile.am
index 5bb546c..7c4ffed 100644 (file)
@@ -34,19 +34,44 @@ libmath_la_LIBADD    =
 TEST_LIBS               = libmath.la
 
 ###--------------------------------------------------------------------------
-### Main multiprecision integer library.
+### Representation of multiprecision integers.
+
+## The `mpgen' tool for dealing with these things.
+mpgen                   = $(srcdir)/mpgen
+EXTRA_DIST             += 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'.
+CLEANFILES             += typeinfo.py
+EXTRA_DIST             += typeinfo.py.in
+typeinfo.py: $(srcdir)/typeinfo.py.in Makefile
+       $(SUBST) $(srcdir)/typeinfo.py.in >typeinfo.py.new \
+               type_bits="@type_bits@" \
+               limits="@limits@" && \
+       mv typeinfo.py.new typeinfo.py
+
+## The header file containing our representation choices.
+BUILT_SOURCES          += mptypes.h
+CLEANFILES             += mptypes.h
+nodist_archinclude_HEADERS += mptypes.h
+mptypes.h: $(mpgen) typeinfo.py
+       $(MPGEN) mptypes >mptypes.h.in && mv mptypes.h.in mptypes.h
 
-## This library is unfortunately intertwined with some of the code generation
-## programs, so we must be rather careful.  The important bits of the maths
-## library needed by these programs is separated out into `libmpbase'.  There
-## is work going on to fix this unpleasant situation by generating the
-## relevant files from Python scripts rather than C programs, using
-## information gathered by `configure'.
-noinst_LTLIBRARIES     += libmpbase.la
-libmath_la_LIBADD      += libmpbase.la
-libmpbase_la_LIBADD     = $(mLib_LIBS)
-libmpbase_la_SOURCES    =
-$(libmpbase_la_OBJECTS): mptypes.h
+## Limits of C types as multiprecision integers.
+BUILT_SOURCES          += mplimits.h mplimits.c
+CLEANFILES             += mplimits.h mplimits.c
+nodist_archinclude_HEADERS += mplimits.h
+nodist_libmath_la_SOURCES += mplimits.c
+mplimits.h: $(mpgen) typeinfo.py
+       $(MPGEN) mplimits_h >mplimits.h.in && mv mplimits.h.in mplimits.h
+mplimits.c: $(mpgen) typeinfo.py
+       $(MPGEN) mplimits_c >mplimits.c.in && mv mplimits.c.in mplimits.c
+
+###--------------------------------------------------------------------------
+### Main multiprecision integer library.
 
 ## Additional buffer I/O functions for mathematical objects.
 pkginclude_HEADERS     += buf.h
@@ -58,84 +83,68 @@ libmath_la_SOURCES  += exp.c
 
 ## Main user-visible multiprecision arithmetic.
 pkginclude_HEADERS     += mp.h
-libmpbase_la_SOURCES   += mp-arith.c
-TESTS                  += mp-arith.$t
-libmpbase_la_SOURCES   += mp-const.c
+libmath_la_SOURCES     += mp-arith.c
+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
-libmpbase_la_SOURCES   += mp-io.c
+TESTS                  += mp-gcd.t$(EXEEXT)
+libmath_la_SOURCES     += mp-io.c
 libmath_la_SOURCES     += mp-jacobi.c
-TESTS                  += mp-jacobi.$t
-libmpbase_la_SOURCES   += mp-mem.c
-libmpbase_la_SOURCES   += mp-misc.c
+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
-libmpbase_la_SOURCES   += mparena.c
+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
 
-## Table of upper and lower limits of various types of machine integers, as
-## multiprecision integers.
-nodist_archinclude_HEADERS += mplimits.h
-nodist_libmath_la_SOURCES += mplimits.c
-CLEANFILES             += mplimits.h mplimits.c
-noinst_PROGRAMS                += genlimits
-genlimits_LDADD                 = libmpbase.la
-mplimits.c: genlimits$e
-       $(AM_V_GEN)./genlimits c >mplimits.c.new && \
-               mv mplimits.c.new mplimits.c
-mplimits.h: genlimits$e
-       $(AM_V_GEN)./genlimits h >mplimits.h.new && \
-               mv mplimits.h.new mplimits.h
-$(genlimits_OBJECTS): mptypes.h
-mplimits.lo: mplimits.h
-
 ## 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
@@ -145,42 +154,53 @@ 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.
 pkginclude_HEADERS     += mpscan.h
-libmpbase_la_SOURCES   += mpscan.c
+libmath_la_SOURCES     += mpscan.c
 
 ## Conversion between multiprecision integers and their textual
 ## representations.
 pkginclude_HEADERS     += mptext.h
-libmpbase_la_SOURCES   += mptext.c
-TESTS                  += mptext.$t
+libmath_la_SOURCES     += mptext.c
+TESTS                  += mptext.t$(EXEEXT)
 libmath_la_SOURCES     += mptext-dstr.c
 libmath_la_SOURCES     += mptext-file.c
 libmath_la_SOURCES     += mptext-len.c
-libmpbase_la_SOURCES   += mptext-string.c
+libmath_la_SOURCES     += mptext-string.c
 EXTRA_DIST             += t/mptext
 
-## Basic types used in the representation of multiprecision integers.
-nodist_archinclude_HEADERS += mptypes.h
-BUILT_SOURCES          += mptypes.h
-CLEANFILES             += mptypes.h
-noinst_PROGRAMS                += mptypes
-mptypes.h: mptypes$e
-       $(AM_V_GEN)./mptypes >mptypes.h.new && mv mptypes.h.new mptypes.h
-
 ## Low-level multiprecision arithmetic.
 pkginclude_HEADERS     += mpx.h bitops.h mpw.h
-libmpbase_la_SOURCES   += mpx.c
-TESTS                  += mpx.$t
-libmpbase_la_SOURCES   += karatsuba.h mpx-kmul.c mpx-ksqr.c
-TESTS                  += mpx-kmul.$t mpx-ksqr.$t
+libmath_la_SOURCES     += mpx.c
+TESTS                  += mpx.t$(EXEEXT)
+libmath_la_SOURCES     += karatsuba.h mpx-kmul.c mpx-ksqr.c
+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
@@ -189,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.
@@ -200,17 +220,21 @@ pkginclude_HEADERS        += limlee.h
 libmath_la_SOURCES     += limlee.c
 
 ## A table of small prime numbers.
-nodist_pkginclude_HEADERS += primetab.h
-nodist_libmath_la_SOURCES += primetab.c
-CLEANFILES             += primetab.h primetab.c
-BUILT_SOURCES          += primetab.h primetab.c
-noinst_PROGRAMS                += genprimes
+pkginclude_HEADERS     += $(precomp)/math/primetab.h
+nodist_libmath_la_SOURCES += ../precomp/math/primetab.c
+PRECOMPS               += $(precomp)/math/primetab.h \
+                          $(precomp)/math/primetab.c
+PRECOMP_PROGS          += genprimes
 genprimes_LDADD                 = $(mLib_LIBS)
-primetab.h: primetab.c
-primetab.c: genprimes$e
-       $(AM_V_GEN)./genprimes -hprimetab.h -cprimetab.c \
-               -sCATACOMB_PRIMETAB_H \
+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$(EXEEXT)
+       $(AM_V_GEN)./genprimes -sCATACOMB_PRIMETAB_H \
+               -h$(precomp)/math/primetab.h -c$(precomp)/math/primetab.c \
                -n256 -t"unsigned short" -iprimetab
+endif
 
 ## Filtering candidate prime numbers by checking for small factors
 ## efficiently.
@@ -222,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.
@@ -234,8 +259,8 @@ 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
-primeiter.lo: wheel.h
+TESTS                  += primeiter.t$(EXEEXT)
+primeiter.lo: $(precomp)/math/wheel.h
 
 ## The Miller--Rabin primality test.
 pkginclude_HEADERS     += rabin.h
@@ -247,16 +272,20 @@ pkginclude_HEADERS        += strongprime.h
 libmath_la_SOURCES     += strongprime.c
 
 ## A `wheel', used by the prime iteration machinery.
-nodist_pkginclude_HEADERS += wheel.h
-nodist_libmath_la_SOURCES += wheel.c
-CLEANFILES             += wheel.h wheel.c
-noinst_PROGRAMS                += genwheel
+pkginclude_HEADERS     += $(precomp)/math/wheel.h
+nodist_libmath_la_SOURCES += ../precomp/math/wheel.c
+PRECOMPS               += $(precomp)/math/wheel.h $(precomp)/math/wheel.c
+PRECOMP_PROGS          += genwheel
 genwheel_LDADD          = $(mLib_LIBS)
-wheel.h: wheel.c
-wheel.c: genwheel$e
-       $(AM_V_GEN)./genwheel -hwheel.h -cwheel.c \
-               -sCATACOMB_WHEEL_H \
+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$(EXEEXT)
+       $(AM_V_GEN)./genwheel -sCATACOMB_WHEEL_H \
+               -h$(precomp)/math/wheel.h -c$(precomp)/math/wheel.c \
                -n5 -t"unsigned char" -iwheel
+endif
 
 ###--------------------------------------------------------------------------
 ### Binary polynomial arithmetic.
@@ -264,39 +293,44 @@ wheel.c: genwheel$e
 ## 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
-gfx-sqr.lo: gfx-sqr-tab.h
-TESTS                  += gfx-sqr.$t
-CLEANFILES             += gfx-sqr-tab.h
-noinst_PROGRAMS                += gfx-sqr-mktab
-gfx-sqr-tab.h: gfx-sqr-mktab$e
-       $(AM_V_GEN)./gfx-sqr-mktab >gfx-sqr-tab.h.in && \
-               mv gfx-sqr-tab.h.in gfx-sqr-tab.h
+nodist_libmath_la_SOURCES += ../precomp/math/gfx-sqrtab.c
+PRECOMPS               += $(precomp)/math/gfx-sqrtab.c
+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$(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$(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
 
 ###--------------------------------------------------------------------------
@@ -314,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.
@@ -328,28 +362,21 @@ libmath_la_SOURCES        += f-prime.c
 
 ## Table of built-in binary fields.
 pkginclude_HEADERS     += bintab.h
-libmath_la_SOURCES     += bintab.c
+nodist_libmath_la_SOURCES += bintab.c
 CLEANFILES             += bintab.c
-EXTRA_DIST             += bintab.in bin-gentab.awk
-bintab.c: bintab.in bin-gentab.awk mpdump$e
-       $(AM_V_GEN)awk -f $(srcdir)/bin-gentab.awk \
-               <$(srcdir)/bintab.in >bintab.c.new && \
-       mv bintab.c.new bintab.c
+EXTRA_DIST             += bintab.in
+bintab.c: $(mpgen) typeinfo.py bintab.in
+       $(MPGEN) bintab $(srcdir)/bintab.in >bintab.c.new && \
+               mv bintab.c.new bintab.c
 
 ## Table of built-in prime fields.
 pkginclude_HEADERS     += ptab.h
-libmath_la_SOURCES     += ptab.c
+nodist_libmath_la_SOURCES += ptab.c
 CLEANFILES             += ptab.c
-EXTRA_DIST             += ptab.in p-gentab.awk
-ptab.c: ptab.in p-gentab.awk mpdump$e
-       $(AM_V_GEN)awk -f $(srcdir)/p-gentab.awk \
-               <$(srcdir)/ptab.in >ptab.c.new && \
-       mv ptab.c.new ptab.c
-
-## A utility for building multiprecision integer constants.
-noinst_PROGRAMS                += mpdump
-mpdump_LDADD            = libmpbase.la
-$(mpdump_OBJECTS): mptypes.h
+EXTRA_DIST             += ptab.in
+ptab.c: $(mpgen) typeinfo.py ptab.in
+       $(MPGEN) ptab $(srcdir)/ptab.in >ptab.c.new && \
+               mv ptab.c.new ptab.c
 
 ###--------------------------------------------------------------------------
 ### Elliptic curve arithmetic.
@@ -359,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.
@@ -377,16 +404,54 @@ 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)
 
-## A table of built-in elliptic curves.
+## Table of built-in elliptic-curve groups.
 pkginclude_HEADERS     += ectab.h
-libmath_la_SOURCES     += ectab.c
+nodist_libmath_la_SOURCES += ectab.c
 CLEANFILES             += ectab.c
-EXTRA_DIST             += ectab.in ec-gentab.awk
-ectab.c: ectab.in ec-gentab.awk mpdump$e
-       $(AM_V_GEN)awk -f $(srcdir)/ec-gentab.awk \
-               <$(srcdir)/ectab.in >ectab.c.new && \
-       mv ectab.c.new ectab.c
+EXTRA_DIST             += ectab.in
+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 --------------------------------------------------