utils/naf.c: Non-adjacent form calculator, from math/mpreduce.c.
[u/mdw/catacomb] / configure.ac
1 dnl -*-autoconf-*-
2 dnl
3 dnl Configuration script for Catacomb
4 dnl
5 dnl (c) 2013 Straylight/Edgeware
6 dnl
7
8 dnl----- Licensing notice ---------------------------------------------------
9 dnl
10 dnl This file is part of Catacomb.
11 dnl
12 dnl Catacomb is free software; you can redistribute it and/or modify
13 dnl it under the terms of the GNU Library General Public License as
14 dnl published by the Free Software Foundation; either version 2 of the
15 dnl License, or (at your option) any later version.
16 dnl
17 dnl Catacomb is distributed in the hope that it will be useful,
18 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
19 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 dnl GNU Library General Public License for more details.
21 dnl
22 dnl You should have received a copy of the GNU Library General Public
23 dnl License along with Catacomb; if not, write to the Free
24 dnl Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
25 dnl MA 02111-1307, USA.
26
27 dnl--------------------------------------------------------------------------
28 dnl Initialization.
29
30 mdw_AUTO_VERSION
31 AC_INIT([catacomb], AUTO_VERSION, [mdw@distorted.org.uk])
32 AC_CONFIG_SRCDIR([catacomb.pc.in])
33 AC_CONFIG_AUX_DIR([config])
34 AM_INIT_AUTOMAKE([foreign parallel-tests])
35 mdw_SILENT_RULES
36
37 AC_PROG_CC
38 AX_CFLAGS_WARN_ALL
39 AM_PROG_LIBTOOL
40 mdw_LIBTOOL_VERSION_INFO
41
42 AC_PROG_YACC
43
44 AC_SUBST(AM_CFLAGS)
45
46 dnl--------------------------------------------------------------------------
47 dnl C programming environment.
48
49 dnl Find out if we're cross-compiling.
50 AM_CONDITIONAL([CROSS_COMPILING], [test "$cross_compiling" = yes])
51
52 dnl Various standard types.
53 AC_CHECK_TYPE([pid_t], [int])
54 AC_TYPE_UID_T
55 AC_CHECK_TYPE([ssize_t], [int])
56 AC_CHECK_TYPE([socklen_t], [int])
57
58 dnl The maths library.
59 mdw_ORIG_LIBS=$LIBS
60 AC_SEARCH_LIBS([log], [m])
61 AC_SEARCH_LIBS([sqrt], [m])
62 AC_SUBST([CATACOMB_LIBS], [$LIBS])
63 LIBS=$mdw_ORIG_LIBS
64
65 dnl Find out whether very long integer types are available.
66 AC_CHECK_HEADERS([stdint.h])
67 AC_SUBST([have_stdint_h])
68 AC_C_LONG_LONG
69
70 dnl Find the bit lengths of the obvious integer types. This will be useful
71 dnl when deciding on a representation for multiprecision integers.
72 type_bits="" type_bits_sep=""
73 AC_DEFUN([catacomb_UINT_BITS],
74 [mdw_UINT_BITS([$2], [$1])
75 type_bits="$type_bits$type_bits_sep('$1', $[]$1_bits)"
76 type_bits_sep=", "])
77 catacomb_UINT_BITS([uchar], [unsigned char])
78 catacomb_UINT_BITS([ushort], [unsigned short])
79 catacomb_UINT_BITS([uint], [unsigned int])
80 catacomb_UINT_BITS([ulong], [unsigned long])
81 if test "$ac_cv_c_long_long" = "yes"; then
82 catacomb_UINT_BITS([ullong], [unsigned long long])
83 fi
84 if test "$ac_cv_header_stdint_h" = "yes"; then
85 catacomb_UINT_BITS([uintmax], [uintmax_t])
86 fi
87 AC_SUBST([type_bits])
88
89 dnl Determine the limits of common C integer types.
90 limits="" limits_sep=""
91 AC_DEFUN([catacomb_COMPILE_TIME_CONSTANT],
92 [case "$2" in
93 =*)
94 $1="$2"; $1=${$1#=}
95 ;;
96 *)
97 AC_CACHE_CHECK([compile-time value of $2], [mdw_cv_constant_$3],
98 [mdw_PROBE_CONSTANT([mdw_cv_constant_$3], [$2], [$4])])
99 $1=$mdw_cv_constant_$3
100 ;;
101 esac])
102 AC_DEFUN([catacomb_LIMIT],
103 [catacomb_COMPILE_TIME_CONSTANT([lo], [$2], [$1_min],
104 [#include <limits.h>
105 #include <stddef.h>])
106 catacomb_COMPILE_TIME_CONSTANT([hi], [$3], [$1_max],
107 [#include <limits.h>
108 #include <stddef.h>])
109 limits="$limits$limits_sep('$1', $lo, $hi)" limits_sep=", "])
110 catacomb_LIMIT([SCHAR], [SCHAR_MIN], [SCHAR_MAX])
111 catacomb_LIMIT([CHAR], [CHAR_MIN], [CHAR_MAX])
112 catacomb_LIMIT([UCHAR], [=0], [UCHAR_MAX])
113 catacomb_LIMIT([UINT8], [=0], [=0xff])
114 catacomb_LIMIT([SHRT], [SHRT_MIN], [SHRT_MAX])
115 catacomb_LIMIT([USHRT], [=0], [USHRT_MAX])
116 catacomb_LIMIT([UINT16], [=0], [=0xffff])
117 catacomb_LIMIT([INT], [INT_MIN], [INT_MAX])
118 catacomb_LIMIT([UINT], [=0], [UINT_MAX])
119 catacomb_LIMIT([LONG], [LONG_MIN], [LONG_MAX])
120 catacomb_LIMIT([ULONG], [=0], [ULONG_MAX])
121 catacomb_LIMIT([UINT32], [=0], [=0xffffffff])
122 if test "$ac_cv_c_long_long" = "yes"; then
123 catacomb_LIMIT([LLONG], [LLONG_MIN], [LLONG_MAX])
124 catacomb_LIMIT([ULLONG], [=0], [ULLONG_MAX])
125 fi
126 catacomb_LIMIT([SIZET], [=0], [~(size_t)0])
127 AC_SUBST([limits])
128
129 dnl Functions used for noise-gathering.
130 AC_CHECK_FUNCS([setgroups])
131 AC_CACHE_CHECK([whether the freewheel noise generator will work],
132 [catacomb_cv_freewheel],
133 [AC_TRY_LINK(
134 [#include <setjmp.h>
135 #include <sys/time.h>],
136 [struct itimerval itv = { { 0, 0 }, { 0, 5000 } };
137 jmp_buf j;
138 setitimer(ITIMER_REAL, &itv, 0);
139 sigsetjump(j, 1);],
140 [catacomb_cv_freewheel=yes],
141 [catacomb_cv_freewheel=no])])
142 case $catacomb_cv_freewheel in
143 yes)
144 AC_DEFINE([USE_FREEWHEEL], [1],
145 [Define if you want to use the freewheel noise generator.])
146 ;;
147 esac
148
149 dnl Support for the passphrase pixie.
150 mdw_ORIG_LIBS=$LIBS
151 AC_SEARCH_LIBS([socket], [socket])
152 AC_SUBST([PIXIE_LIBS], [$LIBS])
153 LIBS=$mdw_ORIG_LIBS
154
155 dnl Memory locking support.
156 AC_CHECK_FUNCS([mlock])
157
158 dnl Necessary support libraries.
159 PKG_CHECK_MODULES([mLib], [mLib >= 2.2.1])
160 AM_CFLAGS="$AM_CFLAGS $mLib_CFLAGS"
161
162 dnl--------------------------------------------------------------------------
163 dnl Python.
164
165 dnl Make sure we have a suitable version.
166 AM_PATH_PYTHON([2.5])
167
168 dnl--------------------------------------------------------------------------
169 dnl Special debugging options.
170
171 AC_ARG_ENABLE([mpw],
172 [AS_HELP_STRING([--enable-mpw], [force small-width mp digits])],
173 [case "$enableval" in
174 y*|t*|short)
175 AC_DEFINE([FORCE_MPW_SHORT], [1],
176 [Define to force small-width mp digits.])
177 ;;
178 cussid)
179 AC_DEFINE([FORCE_MPW_CUSSID], [1],
180 [Define to force strange-width mp digits.])
181 ;;
182 esac])
183
184 dnl--------------------------------------------------------------------------
185 dnl Produce output.
186
187 AC_CONFIG_HEADER([config/config.h])
188
189 AC_CONFIG_FILES(
190 [Makefile]
191 [base/Makefile]
192 [key/Makefile]
193 [math/Makefile]
194 [misc/Makefile]
195 [pub/Makefile]
196 [rand/Makefile]
197 [symm/Makefile]
198 [progs/Makefile])
199 AC_OUTPUT
200
201 dnl----- That's all, folks --------------------------------------------------