backup
[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 ./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 AC_CHECK_HEADERS(zlib.h,
94                  [LIBS="$LIBS -lz"],
95                  AC_MSG_WARN([zlib missing - creating without ZLIB support!])
96                 )
97
98
99 dnl Checks for typedefs, structures, and compiler characteristics.
100 AC_C_CONST
101 AC_C_INLINE
102 AC_TYPE_SIZE_T
103
104
105 dnl autoconf doesn't support a default value for AC_C_BIGENDIAN
106 dnl so here is the modified version
107 if test "$cross_compiling" = yes; then
108     AC_MSG_WARN(cross compiling; assuming little endianess)
109 fi
110 AC_CACHE_CHECK(for little endianess, ac_cv_c_littleendian,
111 [ac_cv_c_littleendian=unknown
112 # See if sys/param.h defines the BYTE_ORDER macro.
113 AC_TRY_COMPILE([#include <sys/types.h>
114 #include <sys/param.h>], [
115 #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
116  bogus endian macros
117 #endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
118 AC_TRY_COMPILE([#include <sys/types.h>
119 #include <sys/param.h>], [
120 #if BYTE_ORDER != BIG_ENDIAN
121  not big endian
122 #endif], ac_cv_c_littleendian=no, ac_cv_c_littleendian=yes)])
123 if test "$ac_cv_c_littleendian" = unknown; then
124 AC_TRY_RUN([main () {
125   /* Are we little or big endian?  From Harbison&Steele.  */
126   union
127   {
128     long l;
129     char c[sizeof (long)];
130   } u;
131   u.l = 1;
132   exit (u.c[sizeof (long) - 1] == 1);
133 }], ac_cv_c_littleendian=yes, ac_cv_c_littleendian=no, ac_cv_c_littleendian=yes)
134 fi])
135
136 if test "$ac_cv_c_littleendian" = yes; then
137   AC_DEFINE(LITTLE_ENDIAN_HOST)
138 else
139   AC_DEFINE(BIG_ENDIAN_HOST)
140 fi
141
142
143 WK_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
144 WK_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
145 WK_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
146 WK_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
147 WK_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
148
149 AC_CHECK_SIZEOF(unsigned short, 2)
150 AC_CHECK_SIZEOF(unsigned int, 4)
151 AC_CHECK_SIZEOF(unsigned long, 4)
152
153
154
155
156 dnl Checks for library functions.
157 AC_FUNC_VPRINTF
158 AC_CHECK_FUNCS(strerror stpcpy strlwr tcgetattr)
159
160 dnl check wether we have a random device
161 AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
162 [if test -c /dev/random && test -c /dev/urandom ; then
163   ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
164 if test "$ac_cv_have_dev_random" = yes; then
165     AC_DEFINE(HAVE_DEV_RANDOM)
166 fi
167
168
169 dnl setup assembler stuff
170 AC_MSG_CHECKING(for mpi assembler functions)
171 mpi_config_done="no"
172 AC_CACHE_VAL(ac_cv_mpi_config_done,
173              [ ac_cv_mpi_config_done="$mpi_config_done" ])
174 if test "$ac_cv_mpi_config_done" = yes; then
175     AC_MSG_RESULT(done)
176 else
177 ac_cv_mpi_config_done=""
178 if test -f ./mpi/config.links ; then
179     . ./mpi/config.links
180     ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
181     AC_LINK_FILES( ${mpi_ln_src}, ${mpi_ln_dst} )
182     ac_cv_mpi_config_done="yes"
183     AC_MSG_RESULT(done)
184 else
185     AC_MSG_RESULT(failed)
186     AC_MSG_ERROR([mpi/config.links missing!])
187 fi
188 fi
189 MPI_EXTRA_ASM_OBJS=""
190 if test "$ac_cv_mpi_extra_asm_modules" != ""; then
191 WK_MSG_PRINT([mpi extra asm functions:])
192 for i in $ac_cv_mpi_extra_asm_modules; do
193     WK_MSG_PRINT([$i])
194     MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
195 done
196 AC_MSG_RESULT()
197 fi
198 AC_SUBST(MPI_EXTRA_ASM_OBJS)
199
200
201 dnl checking whether we have other cipher source files
202 CIPHER_EXTRA_OBJS=""
203 CIPHER_EXTRA_DIST=""
204 AC_CACHE_CHECK(for extra cipher modules, ac_cv_have_rsa_cipher,
205 [if test -f cipher/rsa.c && test -f cipher/rsa.h; then
206   ac_cv_have_rsa_cipher=yes; else ac_cv_have_rsa_cipher=no; fi])
207 if test $ac_cv_have_rsa_cipher = yes; then
208     AC_DEFINE(HAVE_RSA_CIPHER)
209     CIPHER_EXTRA_OBJS="rsa.o"
210     CIPHER_EXTRA_DIST="rsa.c rsa.h"
211 fi
212 AC_SUBST(CIPHER_EXTRA_OBJS)
213 AC_SUBST(CIPHER_EXTRA_DIST)
214
215 AC_OUTPUT([ Makefile    \
216             util/Makefile    \
217             mpi/Makefile \
218             cipher/Makefile \
219             g10/Makefile     \
220             tools/Makefile   \
221 ], [echo timestamp > stamp-h ] )
222