distributed version 0.1.0
[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=0.1.0
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     CFLAGS=-g
23 fi
24
25 dnl some additional macros
26
27 dnl WK_CHECK_TYPEDEF(TYPE, HAVE_NAME)
28 AC_DEFUN(WK_CHECK_TYPEDEF,
29 [AC_MSG_CHECKING(for $1 typedef)
30 AC_CACHE_VAL(wk_cv_typedef_$1,
31 [AC_TRY_COMPILE([#include <stdlib.h>
32 #include <sys/types.h>], [
33 #undef $1
34 int a = sizeof($1);
35 ], wk_cv_typedef_$1=yes, wk_cv_typedef_$1=no )])
36 AC_MSG_RESULT($wk_cv_typedef_$1)
37 if test "$wk_cv_typedef_$1" = yes; then
38     AC_DEFINE($2)
39 fi
40 ])
41
42
43
44
45 dnl
46 AC_CANONICAL_SYSTEM
47 AC_MSG_CHECKING(cached information)
48 hostcheck="$target"
49 AC_CACHE_VAL(ac_cv_mpi_hostcheck, [ ac_cv_mpi_hostcheck="$hostcheck" ])
50 if test "$ac_cv_mpi_hostcheck" != "$hostcheck"; then
51     AC_MSG_RESULT(changed)
52     AC_MSG_WARN(config.cache exists!)
53     AC_MSG_ERROR(you must do 'make distclean' first to compile for
54 different target or different parameters.)
55 else
56     AC_MSG_RESULT(ok)
57 fi
58
59
60 dnl Checks for programs.
61
62 AC_PROG_MAKE_SET
63
64 case "${target}" in
65     i386--mingw32)
66         # special stuff for Windoze NT
67         cross_compiling=yes
68         CC="i386--mingw32-gcc"
69         CPP="i386--mingw32-gcc -E"
70         RANLIB="i386--mingw32-ranlib"
71         ac_cv_have_dev_random=no
72         ;;
73     *)
74 AC_PROG_RANLIB
75 AC_PROG_INSTALL
76 AC_PROG_CC
77 AC_PROG_CPP
78        ;;
79 esac
80
81
82 AC_ARG_PROGRAM
83
84 dnl Checks for libraries.
85
86 dnl Checks for header files.
87 AC_HEADER_STDC
88 AC_CHECK_HEADERS(unistd.h)
89 AC_CHECK_HEADERS(zlib.h,
90                  [LIBS="$LIBS -lz"],
91                  AC_MSG_WARN([zlib missing - creating without ZLIB support!])
92                 )
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
150
151
152 dnl Checks for library functions.
153 AC_FUNC_VPRINTF
154 AC_CHECK_FUNCS(strerror strtol strtoul stpcpy tcgetattr)
155
156 dnl check wether we have a random device
157 AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
158 [if test -c /dev/random && test -c /dev/urandom ; then
159   ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
160 if test "$ac_cv_have_dev_random" = yes; then
161     AC_DEFINE(HAVE_DEV_RANDOM)
162 fi
163
164
165 dnl setup assembler stuff
166 AC_MSG_CHECKING(configure mpi)
167 mpi_config_done="no"
168 AC_CACHE_VAL(ac_cv_mpi_config_done,
169              [ ac_cv_mpi_config_done="$mpi_config_done" ])
170 if test "$ac_cv_mpi_config_done" = yes; then
171     AC_MSG_RESULT(done)
172 else
173 ac_cv_mpi_config_done=""
174 if test -f ./mpi/config.links ; then
175     . ./mpi/config.links
176     AC_LINK_FILES( ${mpi_ln_src}, ${mpi_ln_dst} )
177     ac_cv_mpi_config_done="yes"
178     AC_MSG_RESULT(done)
179 else
180     AC_MSG_RESULT(failed)
181     AC_MSG_ERROR([mpi/config.links missing!])
182 fi
183 fi
184
185
186 dnl checking whether we have the RSA source
187 dnl Add stuff to insert this into the makefile
188 dnl AC_SUBST(add_cipher_SOURCES)
189 AC_CACHE_CHECK(for rsa source, ac_cv_have_rsa_cipher,
190 [if test -f cipher/rsa.c && test -f cipher/rsa.h; then
191   ac_cv_have_rsa_cipher=yes; else ac_cv_have_rsa_cipher=no; fi])
192 if test $ac_cv_have_rsa_cipher = yes; then
193     AC_DEFINE(HAVE_RSA_CIPHER)
194 fi
195
196
197 AC_OUTPUT([ Makefile    \
198             util/Makefile    \
199             mpi/Makefile \
200             cipher/Makefile \
201             g10/Makefile     \
202             tools/Makefile   \
203 ], [echo timestamp > stamp-h ] )
204