Trust stuff works partly.
[gnupg.git] / configure.in
1 dnl
2 dnl Configure template for G10
3 dnl
4 dnl (Process this file with autoconf to produce a configure script.)
5
6 AC_INIT(g10/g10.c)
7 AC_CONFIG_AUX_DIR(scripts)
8 AC_CONFIG_HEADER(config.h)
9
10
11 VERSION=`cat $srcdir/VERSION`
12 PACKAGE=g10
13 AC_SUBST(VERSION)
14 AC_SUBST(PACKAGE)
15 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
16 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
17
18 AC_ARG_ENABLE(m-debug,
19 [  --enable-m-debug    Enable debugging of memory allocation])
20 if test "$enableval" = y || test "$enableval" = yes; then
21     AC_DEFINE(M_DEBUG)
22 fi
23 CFLAGS="-g -Wall"
24
25 dnl some additional macros
26
27 dnl WK_MSG_PRINT(STRING)
28 define(WK_MSG_PRINT,
29 [echo $ac_n "$1"" $ac_c" 1>&AC_FD_MSG ])
30
31 dnl WK_CHECK_TYPEDEF(TYPE, HAVE_NAME)
32 AC_DEFUN(WK_CHECK_TYPEDEF,
33 [AC_MSG_CHECKING(for $1 typedef)
34 AC_CACHE_VAL(wk_cv_typedef_$1,
35 [AC_TRY_COMPILE([#include <stdlib.h>
36 #include <sys/types.h>], [
37 #undef $1
38 int a = sizeof($1);
39 ], wk_cv_typedef_$1=yes, wk_cv_typedef_$1=no )])
40 AC_MSG_RESULT($wk_cv_typedef_$1)
41 if test "$wk_cv_typedef_$1" = yes; then
42     AC_DEFINE($2)
43 fi
44 ])
45
46
47
48
49 dnl
50 AC_CANONICAL_SYSTEM
51 AC_MSG_CHECKING(cached information)
52 hostcheck="$target"
53 AC_CACHE_VAL(ac_cv_mpi_hostcheck, [ ac_cv_mpi_hostcheck="$hostcheck" ])
54 if test "$ac_cv_mpi_hostcheck" != "$hostcheck"; then
55     AC_MSG_RESULT(changed)
56     AC_MSG_WARN(config.cache exists!)
57     AC_MSG_ERROR(you must do 'make distclean' first to compile for
58 different target or different parameters.)
59 else
60     AC_MSG_RESULT(ok)
61 fi
62
63
64 dnl Checks for programs.
65
66 AC_PROG_MAKE_SET
67
68 case "${target}" in
69     i386--mingw32)
70         # special stuff for Windoze NT
71         cross_compiling=yes
72         CC="i386--mingw32-gcc"
73         CPP="i386--mingw32-gcc -E"
74         RANLIB="i386--mingw32-ranlib"
75         ac_cv_have_dev_random=no
76         ;;
77     *)
78 AC_PROG_RANLIB
79 AC_PROG_INSTALL
80 AC_PROG_CC
81 AC_PROG_CPP
82        ;;
83 esac
84
85
86 AC_ARG_PROGRAM
87
88 dnl Checks for libraries.
89
90 dnl Checks for header files.
91 AC_HEADER_STDC
92 AC_CHECK_HEADERS(unistd.h)
93
94
95 dnl Checks for typedefs, structures, and compiler characteristics.
96 AC_C_CONST
97 AC_C_INLINE
98 AC_TYPE_SIZE_T
99
100
101 dnl autoconf doesn't support a default value for AC_C_BIGENDIAN
102 dnl so here is the modified version
103 if test "$cross_compiling" = yes; then
104     AC_MSG_WARN(cross compiling; assuming little endianess)
105 fi
106 AC_CACHE_CHECK(for little endianess, ac_cv_c_littleendian,
107 [ac_cv_c_littleendian=unknown
108 # See if sys/param.h defines the BYTE_ORDER macro.
109 AC_TRY_COMPILE([#include <sys/types.h>
110 #include <sys/param.h>], [
111 #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
112  bogus endian macros
113 #endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
114 AC_TRY_COMPILE([#include <sys/types.h>
115 #include <sys/param.h>], [
116 #if BYTE_ORDER != BIG_ENDIAN
117  not big endian
118 #endif], ac_cv_c_littleendian=no, ac_cv_c_littleendian=yes)])
119 if test "$ac_cv_c_littleendian" = unknown; then
120 AC_TRY_RUN([main () {
121   /* Are we little or big endian?  From Harbison&Steele.  */
122   union
123   {
124     long l;
125     char c[sizeof (long)];
126   } u;
127   u.l = 1;
128   exit (u.c[sizeof (long) - 1] == 1);
129 }], ac_cv_c_littleendian=yes, ac_cv_c_littleendian=no, ac_cv_c_littleendian=yes)
130 fi])
131
132 if test "$ac_cv_c_littleendian" = yes; then
133   AC_DEFINE(LITTLE_ENDIAN_HOST)
134 else
135   AC_DEFINE(BIG_ENDIAN_HOST)
136 fi
137
138
139 WK_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
140 WK_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
141 WK_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
142 WK_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
143 WK_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
144
145 AC_CHECK_SIZEOF(unsigned short, 2)
146 AC_CHECK_SIZEOF(unsigned int, 4)
147 AC_CHECK_SIZEOF(unsigned long, 4)
148
149 if test "$ac_cv_sizeof_unsigned_short" = "0" \
150    || test "$ac_cv_sizeof_unsigned_int" = "0" \
151    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
152     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
153 fi
154
155
156
157 dnl Checks for library functions.
158 AC_FUNC_VPRINTF
159 AC_CHECK_FUNCS(strerror stpcpy strlwr tcgetattr rand strtoul)
160
161
162
163
164 dnl check wether we have a random device
165 AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
166 [if test -c /dev/random && test -c /dev/urandom ; then
167   ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
168 if test "$ac_cv_have_dev_random" = yes; then
169     AC_DEFINE(HAVE_DEV_RANDOM)
170 fi
171
172
173 dnl setup assembler stuff
174 AC_MSG_CHECKING(for mpi assembler functions)
175 mpi_config_done="no"
176 AC_CACHE_VAL(ac_cv_mpi_config_done,
177              [ ac_cv_mpi_config_done="$mpi_config_done" ])
178 if test "$ac_cv_mpi_config_done" = yes; then
179     AC_MSG_RESULT(done)
180 else
181 ac_cv_mpi_config_done=""
182 if test -f $srcdir/mpi/config.links ; then
183     . $srcdir/mpi/config.links
184     ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
185     AC_LINK_FILES( ${mpi_ln_src}, ${mpi_ln_dst} )
186     ac_cv_mpi_config_done="yes"
187     AC_MSG_RESULT(done)
188 else
189     AC_MSG_RESULT(failed)
190     AC_MSG_ERROR([mpi/config.links missing!])
191 fi
192 fi
193 MPI_EXTRA_ASM_OBJS=""
194 if test "$ac_cv_mpi_extra_asm_modules" != ""; then
195 WK_MSG_PRINT([mpi extra asm functions:])
196 for i in $ac_cv_mpi_extra_asm_modules; do
197     WK_MSG_PRINT([$i])
198     MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
199 done
200 AC_MSG_RESULT()
201 fi
202 AC_SUBST(MPI_EXTRA_ASM_OBJS)
203
204
205 dnl Do we have zlib? Must do it here because Solaris failed
206 dnl when compiling a conftest (due to the "-lz" from LIBS).
207 AC_CHECK_HEADERS(zlib.h,
208                  [LIBS="$LIBS -lz"],
209                  AC_MSG_WARN([zlib missing - creating without ZLIB support!])
210                 )
211
212 dnl checking whether we have other cipher source files
213 CIPHER_EXTRA_OBJS=""
214 CIPHER_EXTRA_DIST=""
215 AC_CACHE_CHECK(for extra cipher modules, ac_cv_have_rsa_cipher,
216 [if test -f $srcdir/cipher/rsa.c && test -f $srcdir/cipher/rsa.h; then
217   ac_cv_have_rsa_cipher=yes; else ac_cv_have_rsa_cipher=no; fi])
218 if test $ac_cv_have_rsa_cipher = yes; then
219     AC_DEFINE(HAVE_RSA_CIPHER)
220     CIPHER_EXTRA_OBJS="rsa.o"
221     CIPHER_EXTRA_DIST="rsa.c rsa.h"
222 fi
223 AC_SUBST(CIPHER_EXTRA_OBJS)
224 AC_SUBST(CIPHER_EXTRA_DIST)
225
226 AC_OUTPUT([ Makefile    \
227             util/Makefile    \
228             mpi/Makefile \
229             cipher/Makefile \
230             g10/Makefile     \
231             tools/Makefile   \
232 ], [echo timestamp > stamp-h ] )
233