Essentially, the Automake developers want to put the objects for
`PATH/TO/FILE.c' in `PATH/TO/FILE.o'. This is wrongheaded, but we don't
seem to get much choice. Unfortunately, it's also buggered.
This causes trouble for our precomputed source files. The obvious
trouble happens if the source file we reference is explicitly in the
source tree, so we'll need to refer to the files differently in
`mumble_SOURCES' lines and the machinery which makes the generates the
files. The obvious answer would be to introduce two variables for
referring to the precomptations tree. This is where Automake's bugs
start to really bite.
The main problem is with Automake's automatic dependency-tracking
machinery. For each object `FILE.o' which is going to be built, it
wants to make a `.deps/FILE.Po' file to track the detected dependencies.
Furthermore, the generated makefiles get unhappy if these files don't
already exist, so there's magic hung off the side of `config.status' to
make them.
This would be great, but the Automake machinery doesn't actually work
properly. If you refer to a source file via a variable reference,
something like `$(things)/file.c', then Automake's `config.status' magic
creates a dependency-tracking file which is literally named
`.deps/$(things)/file.Po', and then the makefile gets upset when it
tries to include `$(things)/.deps/file.Po'.
So we have to write explicit relative paths to precomputed source file
names in `nodist_mumble_SOURCES' lists (because we make our own
arrangements for distributing them).
Even worse, in older Automake versions, the `distclean' rule prematurely
zaps the dependency-tracking files under `precomps/', so I've had to
split the precomputed sources into subdirectories for each main source
directory.
On the plus side, the `symm/' build tree is less of a mess now that all
of the boring per-mode objects are tucked away in their own
subdirectory.
AC_INIT([catacomb], AUTO_VERSION, [mdw@distorted.org.uk])
AC_CONFIG_SRCDIR([catacomb.pc.in])
AC_CONFIG_AUX_DIR([config])
AC_INIT([catacomb], AUTO_VERSION, [mdw@distorted.org.uk])
AC_CONFIG_SRCDIR([catacomb.pc.in])
AC_CONFIG_AUX_DIR([config])
-AM_INIT_AUTOMAKE([foreign parallel-tests])
+AM_INIT_AUTOMAKE([foreign parallel-tests subdir-objects])
mdw_SILENT_RULES
AC_PROG_CC
mdw_SILENT_RULES
AC_PROG_CC
libmath_la_SOURCES += limlee.c
## A table of small prime numbers.
libmath_la_SOURCES += limlee.c
## A table of small prime numbers.
-pkginclude_HEADERS += $(precomp)/primetab.h
-libmath_la_SOURCES += $(precomp)/primetab.c
-PRECOMPS += $(precomp)/primetab.h $(precomp)/primetab.c
+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)
if !CROSS_COMPILING
PRECOMP_PROGS += genprimes
genprimes_LDADD = $(mLib_LIBS)
if !CROSS_COMPILING
-$(precomp)/primetab.h: $(precomp)/primetab.c
-$(precomp)/primetab.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(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_GEN)./genprimes -sCATACOMB_PRIMETAB_H \
$(AM_V_at)$(MAKE) genprimes$e
$(AM_V_GEN)./genprimes -sCATACOMB_PRIMETAB_H \
- -h$(precomp)/primetab.h -c$(precomp)/primetab.c \
+ -h$(precomp)/math/primetab.h -c$(precomp)/math/primetab.c \
-n256 -t"unsigned short" -iprimetab
endif
-n256 -t"unsigned short" -iprimetab
endif
pkginclude_HEADERS += primeiter.h
libmath_la_SOURCES += primeiter.c
TESTS += primeiter.$t
pkginclude_HEADERS += primeiter.h
libmath_la_SOURCES += primeiter.c
TESTS += primeiter.$t
-primeiter.lo: $(precomp)/wheel.h
+primeiter.lo: $(precomp)/math/wheel.h
## The Miller--Rabin primality test.
pkginclude_HEADERS += rabin.h
## The Miller--Rabin primality test.
pkginclude_HEADERS += rabin.h
libmath_la_SOURCES += strongprime.c
## A `wheel', used by the prime iteration machinery.
libmath_la_SOURCES += strongprime.c
## A `wheel', used by the prime iteration machinery.
-pkginclude_HEADERS += $(precomp)/wheel.h
-libmath_la_SOURCES += $(precomp)/wheel.c
-PRECOMPS += $(precomp)/wheel.h $(precomp)/wheel.c
+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)
if !CROSS_COMPILING
PRECOMP_PROGS += genwheel
genwheel_LDADD = $(mLib_LIBS)
if !CROSS_COMPILING
-$(precomp)/wheel.h: $(precomp)/wheel.c
-$(precomp)/wheel.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(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_GEN)./genwheel -sCATACOMB_WHEEL_H \
$(AM_V_at)$(MAKE) genwheel$e
$(AM_V_GEN)./genwheel -sCATACOMB_WHEEL_H \
- -h$(precomp)/wheel.h -c$(precomp)/wheel.c \
+ -h$(precomp)/math/wheel.h -c$(precomp)/math/wheel.c \
-n5 -t"unsigned char" -iwheel
endif
-n5 -t"unsigned char" -iwheel
endif
TESTS += gfx.$t
libmath_la_SOURCES += gfx-kmul.c
TESTS += gfx-kmul.$t
TESTS += gfx.$t
libmath_la_SOURCES += gfx-kmul.c
TESTS += gfx-kmul.$t
-libmath_la_SOURCES += gfx-sqr.c $(precomp)/gfx-sqrtab.c
-PRECOMPS += $(precomp)/gfx-sqrtab.c
+libmath_la_SOURCES += gfx-sqr.c
+nodist_libmath_la_SOURCES += ../precomp/math/gfx-sqrtab.c
+PRECOMPS += $(precomp)/math/gfx-sqrtab.c
PRECOMP_PROGS += gfx-sqr-mktab
if !CROSS_COMPILING
PRECOMP_PROGS += gfx-sqr-mktab
if !CROSS_COMPILING
-$(precomp)/gfx-sqrtab.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(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$e
- $(AM_V_GEN)./gfx-sqr-mktab >$(precomp)/gfx-sqrtab.c.new && \
- mv $(precomp)/gfx-sqrtab.c.new $(precomp)/gfx-sqrtab.c
+ $(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
EXTRA_DIST += t/gfx
endif
TESTS += gfx-sqr.$t
EXTRA_DIST += t/gfx
noinst_LTLIBRARIES = libmisc.la
libmisc_la_SOURCES =
noinst_LTLIBRARIES = libmisc.la
libmisc_la_SOURCES =
+nodist_libmisc_la_SOURCES =
## Efficient sharing over GF(2^8).
pkginclude_HEADERS += gfshare.h
libmisc_la_SOURCES += gfshare.c
## Efficient sharing over GF(2^8).
pkginclude_HEADERS += gfshare.h
libmisc_la_SOURCES += gfshare.c
-libmisc_la_SOURCES += $(precomp)/gfshare-tab.c
-PRECOMPS += $(precomp)/gfshare-tab.c
+nodist_libmisc_la_SOURCES += ../precomp/misc/gfshare-tab.c
+PRECOMPS += $(precomp)/misc/gfshare-tab.c
PRECOMP_PROGS += gfshare-mktab
if !CROSS_COMPILING
PRECOMP_PROGS += gfshare-mktab
if !CROSS_COMPILING
-$(precomp)/gfshare-tab.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/misc/gfshare-tab.c:
+ $(AM_V_at)$(MKDIR_P) $(precomp)/misc
$(AM_V_at)$(MAKE) gfshare-mktab$e
$(AM_V_at)$(MAKE) gfshare-mktab$e
- $(AM_V_GEN)./gfshare-mktab >$(precomp)/gfshare-tab.c.new && \
- mv $(precomp)/gfshare-tab.c.new $(precomp)/gfshare-tab.c
+ $(AM_V_GEN)./gfshare-mktab >$(precomp)/misc/gfshare-tab.c.new && \
+ mv $(precomp)/misc/gfshare-tab.c.new \
+ $(precomp)/misc/gfshare-tab.c
endif
TESTS += gfshare.$t
endif
TESTS += gfshare.$t
## Schneier's `Blowfish' block cipher.
BLKCS += blowfish
## Schneier's `Blowfish' block cipher.
BLKCS += blowfish
-libsymm_la_SOURCES += $(precomp)/blowfish-tab.c
-PRECOMPS += $(precomp)/blowfish-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/blowfish-tab.c
+PRECOMPS += $(precomp)/symm/blowfish-tab.c
PRECOMP_PROGS += blowfish-mktab
blowfish_mktab_CPPFLAGS = $(AM_CPPFLAGS) -DQUIET
if !CROSS_COMPILING
PRECOMP_PROGS += blowfish-mktab
blowfish_mktab_CPPFLAGS = $(AM_CPPFLAGS) -DQUIET
if !CROSS_COMPILING
-$(precomp)/blowfish-tab.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/blowfish-tab.c:
+ $(AM_V_at)$(MKDIR_P) $(precomp)/symm
$(AM_V_at)$(MAKE) blowfish-mktab$e
$(AM_V_at)$(MAKE) blowfish-mktab$e
- $(AM_V_GEN)./blowfish-mktab >$(precomp)/blowfish-tab.c.new && \
- mv $(precomp)/blowfish-tab.c.new $(precomp)/blowfish-tab.c
+ $(AM_V_GEN)./blowfish-mktab >$(precomp)/symm/blowfish-tab.c.new && \
+ mv $(precomp)/symm/blowfish-tab.c.new \
+ $(precomp)/symm/blowfish-tab.c
endif
## Adams and Tavares' `CAST' block ciphers.
endif
## Adams and Tavares' `CAST' block ciphers.
## IBM's `DES' block cipher, by Feistel, Coppersmith, and others.
BLKCS += des des3
## IBM's `DES' block cipher, by Feistel, Coppersmith, and others.
BLKCS += des des3
-libsymm_la_SOURCES += des-base.h $(precomp)/des-tab.c
-PRECOMPS += $(precomp)/des-tab.c
+libsymm_la_SOURCES += des-base.h
+nodist_libsymm_la_SOURCES += ../precomp/symm/des-tab.c
+PRECOMPS += $(precomp)/symm/des-tab.c
PRECOMP_PROGS += des-mktab
if !CROSS_COMPILING
PRECOMP_PROGS += des-mktab
if !CROSS_COMPILING
-$(precomp)/des-tab.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/des-tab.c:
+ $(AM_V_at)$(MKDIR_P) $(precomp)/symm
$(AM_V_at)$(MAKE) des-mktab$e
$(AM_V_at)$(MAKE) des-mktab$e
- $(AM_V_GEN)./des-mktab >$(precomp)/des-tab.c.new && \
- mv $(precomp)/des-tab.c.new $(precomp)/des-tab.c
+ $(AM_V_GEN)./des-mktab >$(precomp)/symm/des-tab.c.new && \
+ mv $(precomp)/symm/des-tab.c.new $(precomp)/symm/des-tab.c
endif
## Rivest's `DESX' variant, with pre- and post-whitening.
endif
## Rivest's `DESX' variant, with pre- and post-whitening.
## IBM's `MARS' block cipher.
BLKCS += mars
## IBM's `MARS' block cipher.
BLKCS += mars
-libsymm_la_SOURCES += $(precomp)/mars-tab.c
-PRECOMPS += $(precomp)/mars-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/mars-tab.c
+PRECOMPS += $(precomp)/symm/mars-tab.c
PRECOMP_PROGS += mars-mktab
if !CROSS_COMPILING
PRECOMP_PROGS += mars-mktab
if !CROSS_COMPILING
-$(precomp)/mars-tab.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/mars-tab.c:
+ $(AM_V_at)$(MKDIR_P) $(precomp)/symm
$(AM_V_at)$(MAKE) mars-mktab$e
$(AM_V_at)$(MAKE) mars-mktab$e
- $(AM_V_GEN)./mars-mktab >$(precomp)/mars-tab.c.new && \
- mv $(precomp)/mars-tab.c.new $(precomp)/mars-tab.c
+ $(AM_V_GEN)./mars-mktab >$(precomp)/symm/mars-tab.c.new && \
+ mv $(precomp)/symm/mars-tab.c.new $(precomp)/symm/mars-tab.c
endif
mars.$t: t/mars
EXTRA_DIST += t/mars.aes
endif
mars.$t: t/mars
EXTRA_DIST += t/mars.aes
## Daemen and Rijmen's `Rijndael' block cipher, selected as AES.
BLKCS += rijndael rijndael192 rijndael256
libsymm_la_SOURCES += rijndael-base.h rijndael-base.c
## Daemen and Rijmen's `Rijndael' block cipher, selected as AES.
BLKCS += rijndael rijndael192 rijndael256
libsymm_la_SOURCES += rijndael-base.h rijndael-base.c
-libsymm_la_SOURCES += $(precomp)/rijndael-tab.c
-PRECOMPS += $(precomp)/rijndael-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/rijndael-tab.c
+PRECOMPS += $(precomp)/symm/rijndael-tab.c
PRECOMP_PROGS += rijndael-mktab
if !CROSS_COMPILING
PRECOMP_PROGS += rijndael-mktab
if !CROSS_COMPILING
-$(precomp)/rijndael-tab.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/rijndael-tab.c:
+ $(AM_V_at)$(MKDIR_P) $(precomp)/symm
$(AM_V_at)$(MAKE) rijndael-mktab$e
$(AM_V_at)$(MAKE) rijndael-mktab$e
- $(AM_V_GEN)./rijndael-mktab >$(precomp)/rijndael-tab.c.new && \
- mv $(precomp)/rijndael-tab.c.new $(precomp)/rijndael-tab.c
+ $(AM_V_GEN)./rijndael-mktab >$(precomp)/symm/rijndael-tab.c.new && \
+ mv $(precomp)/symm/rijndael-tab.c.new \
+ $(precomp)/symm/rijndael-tab.c
endif
rijndael.$t: t/rijndael
EXTRA_DIST += t/rijndael.aes
endif
rijndael.$t: t/rijndael
EXTRA_DIST += t/rijndael.aes
## Massey's `SAFER' block ciphers.
BLKCS += safer safersk
## Massey's `SAFER' block ciphers.
BLKCS += safer safersk
-libsymm_la_SOURCES += $(precomp)/safer-tab.c
-PRECOMPS += $(precomp)/safer-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/safer-tab.c
+PRECOMPS += $(precomp)/symm/safer-tab.c
PRECOMP_PROGS += safer-mktab
STUBS_HDR += SAFER-SK,safersk,safer
if !CROSS_COMPILING
PRECOMP_PROGS += safer-mktab
STUBS_HDR += SAFER-SK,safersk,safer
if !CROSS_COMPILING
-$(precomp)/safer-tab.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/safer-tab.c:
+ $(AM_V_at)$(MKDIR_P) $(precomp)/symm
$(AM_V_at)$(MAKE) safer-mktab$e
$(AM_V_at)$(MAKE) safer-mktab$e
- $(AM_V_GEN)./safer-mktab >$(precomp)/safer-tab.c.new && \
- mv $(precomp)/safer-tab.c.new $(precomp)/safer-tab.c
+ $(AM_V_GEN)./safer-mktab >$(precomp)/symm/safer-tab.c.new && \
+ mv $(precomp)/symm/safer-tab.c.new \
+ $(precomp)/symm/safer-tab.c
endif
## Anderson, Biham and Knudsen's `Serpent' block cipher.
endif
## Anderson, Biham and Knudsen's `Serpent' block cipher.
## Daemen and Rijmen's `Square' block cipher.
BLKCS += square
## Daemen and Rijmen's `Square' block cipher.
BLKCS += square
-libsymm_la_SOURCES += $(precomp)/square-tab.c
-PRECOMPS += $(precomp)/square-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/square-tab.c
+PRECOMPS += $(precomp)/symm/square-tab.c
PRECOMP_PROGS += square-mktab
if !CROSS_COMPILING
PRECOMP_PROGS += square-mktab
if !CROSS_COMPILING
-$(precomp)/square-tab.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/square-tab.c:
+ $(AM_V_at)$(MKDIR_P) $(precomp)/symm
$(AM_V_at)$(MAKE) square-mktab$e
$(AM_V_at)$(MAKE) square-mktab$e
- $(AM_V_GEN)./square-mktab >$(precomp)/square-tab.c.new && \
- mv $(precomp)/square-tab.c.new $(precomp)/square-tab.c
+ $(AM_V_GEN)./square-mktab >$(precomp)/symm/square-tab.c.new && \
+ mv $(precomp)/symm/square-tab.c.new \
+ $(precomp)/symm/square-tab.c
endif
## Wheeler and Needham's `TEA' and `XTEA' block ciphers.
endif
## Wheeler and Needham's `TEA' and `XTEA' block ciphers.
## Schneier, Kelsey, Whiting, Wagner, Hall and Ferguson's `Twofish' block
## cipher.
BLKCS += twofish
## Schneier, Kelsey, Whiting, Wagner, Hall and Ferguson's `Twofish' block
## cipher.
BLKCS += twofish
-libsymm_la_SOURCES += $(precomp)/twofish-tab.c
-PRECOMPS += $(precomp)/twofish-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/twofish-tab.c
+PRECOMPS += $(precomp)/symm/twofish-tab.c
PRECOMP_PROGS += twofish-mktab
if !CROSS_COMPILING
PRECOMP_PROGS += twofish-mktab
if !CROSS_COMPILING
-$(precomp)/twofish-tab.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/twofish-tab.c:
+ $(AM_V_at)$(MKDIR_P) $(precomp)/symm
$(AM_V_at)$(MAKE) twofish-mktab$e
$(AM_V_at)$(MAKE) twofish-mktab$e
- $(AM_V_GEN)./twofish-mktab >$(precomp)/twofish-tab.c.new && \
- mv $(precomp)/twofish-tab.c.new $(precomp)/twofish-tab.c
+ $(AM_V_GEN)./twofish-mktab >$(precomp)/symm/twofish-tab.c.new && \
+ mv $(precomp)/symm/twofish-tab.c.new \
+ $(precomp)/symm/twofish-tab.c
endif
twofish.$t: t/twofish
EXTRA_DIST += t/twofish.aes
endif
twofish.$t: t/twofish
EXTRA_DIST += t/twofish.aes
## Anderson and Biham's `Tiger' hash function.
HASHES += tiger
## Anderson and Biham's `Tiger' hash function.
HASHES += tiger
-libsymm_la_SOURCES += tiger-base.h $(precomp)/tiger-tab.c
-PRECOMPS += $(precomp)/tiger-tab.c
+libsymm_la_SOURCES += tiger-base.h
+nodist_libsymm_la_SOURCES += ../precomp/symm/tiger-tab.c
+PRECOMPS += $(precomp)/symm/tiger-tab.c
PRECOMP_PROGS += tiger-mktab
if !CROSS_COMPILING
PRECOMP_PROGS += tiger-mktab
if !CROSS_COMPILING
-$(precomp)/tiger-tab.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/tiger-tab.c:
+ $(AM_V_at)$(MKDIR_P) $(precomp)/symm
$(AM_V_at)$(MAKE) tiger-mktab$e
$(AM_V_at)$(MAKE) tiger-mktab$e
- $(AM_V_GEN)./tiger-mktab >$(precomp)/tiger-tab.c.new && \
- mv $(precomp)/tiger-tab.c.new $(precomp)/tiger-tab.c
+ $(AM_V_GEN)./tiger-mktab >$(precomp)/symm/tiger-tab.c.new && \
+ mv $(precomp)/symm/tiger-tab.c.new \
+ $(precomp)/symm/tiger-tab.c
endif
## Barreto and Rijmen's `Whirlpool' hash function.
HASHES += whirlpool whirlpool256
endif
## Barreto and Rijmen's `Whirlpool' hash function.
HASHES += whirlpool whirlpool256
-libsymm_la_SOURCES += $(precomp)/whirlpool-tab.c
-PRECOMPS += $(precomp)/whirlpool-tab.c
+nodist_libsymm_la_SOURCES += ../precomp/symm/whirlpool-tab.c
+PRECOMPS += $(precomp)/symm/whirlpool-tab.c
PRECOMP_PROGS += whirlpool-mktab
STUBS_HDR += Whirlpool-256,whirlpool256,whirlpool
if !CROSS_COMPILING
PRECOMP_PROGS += whirlpool-mktab
STUBS_HDR += Whirlpool-256,whirlpool256,whirlpool
if !CROSS_COMPILING
-$(precomp)/whirlpool-tab.c:
- $(AM_V_at)$(MKDIR_P) $(precomp)
+$(precomp)/symm/whirlpool-tab.c:
+ $(AM_V_at)$(MKDIR_P) $(precomp)/symm
$(AM_V_at)$(MAKE) whirlpool-mktab$e
$(AM_V_at)$(MAKE) whirlpool-mktab$e
- $(AM_V_GEN)./whirlpool-mktab >$(precomp)/whirlpool-tab.c.new && \
- mv $(precomp)/whirlpool-tab.c.new $(precomp)/whirlpool-tab.c
+ $(AM_V_GEN)./whirlpool-mktab \
+ >$(precomp)/symm/whirlpool-tab.c.new && \
+ mv $(precomp)/symm/whirlpool-tab.c.new \
+ $(precomp)/symm/whirlpool-tab.c
endif
## Bellare, Canetti and Krawczyk's `HMAC' mode for message authentication.
endif
## Bellare, Canetti and Krawczyk's `HMAC' mode for message authentication.
CATACOMB_INCLUDES = \
-I$(top_srcdir) \
CATACOMB_INCLUDES = \
-I$(top_srcdir) \
+ -I$(precomp)/math \
+ -I$(precomp)/misc \
+ -I$(precomp)/symm \
-I$(top_srcdir)/base \
-I$(top_srcdir)/key \
-I$(top_srcdir)/math \
-I$(top_srcdir)/base \
-I$(top_srcdir)/key \
-I$(top_srcdir)/math \