NT version compiles
[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.0.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 fi
23
24 dnl some additional macros
25
26 dnl WK_CHECK_TYPEDEF(TYPE, HAVE_NAME)
27 AC_DEFUN(WK_CHECK_TYPEDEF,
28 [AC_MSG_CHECKING(for $1 typedef)
29 AC_CACHE_VAL(wk_cv_typedef_$1,
30 [AC_TRY_COMPILE([#include <stdlib.h>
31 #include <sys/types.h>], [
32 #undef $1
33 int a = sizeof($1);
34 ], wk_cv_typedef_$1=yes, wk_cv_typedef_$1=no )])
35 AC_MSG_RESULT($wk_cv_typedef_$1)
36 if test "$wk_cv_typedef_$1" = yes; then
37     AC_DEFINE($2)
38 fi
39 ])
40
41
42
43
44 dnl
45 AC_CANONICAL_SYSTEM
46 AC_MSG_CHECKING(cached information)
47 hostcheck="$target"
48 AC_CACHE_VAL(ac_cv_mpi_hostcheck, [ ac_cv_mpi_hostcheck="$hostcheck" ])
49 if test "$ac_cv_mpi_hostcheck" != "$hostcheck"; then
50     AC_MSG_RESULT(changed)
51     AC_MSG_WARN(config.cache exists!)
52     AC_MSG_ERROR(you must do 'make distclean' first to compile for
53 different target or different parameters.)
54 else
55     AC_MSG_RESULT(ok)
56 fi
57
58
59 dnl Checks for programs.
60
61 AC_PROG_MAKE_SET
62
63 case "${target}" in
64     i386--mingw32)
65         # special stuff for Windoze NT
66         cross_compiling=yes
67         CC="i386--mingw32-gcc"
68         CPP="i386--mingw32-gcc -E"
69         RANLIB="i386--mingw32-ranlib"
70         ac_cv_have_dev_random=no
71         ;;
72     *)
73 AC_PROG_RANLIB
74 AC_PROG_INSTALL
75 AC_PROG_CC
76 AC_PROG_CPP
77        ;;
78 esac
79
80
81 AC_ARG_PROGRAM
82
83 dnl Checks for libraries.
84
85 dnl Checks for header files.
86 AC_HEADER_STDC
87 AC_CHECK_HEADERS(unistd.h)
88 AC_CHECK_HEADERS(zlib.h,
89                  [LIBS="$LIBS -lz"],
90                  AC_MSG_WARN([zlib missing - creating without ZLIB support!])
91                 )
92
93
94 dnl Checks for typedefs, structures, and compiler characteristics.
95 AC_C_CONST
96 AC_C_INLINE
97 AC_TYPE_SIZE_T
98
99
100 dnl autoconf doesn't support a default value for AC_C_BIGENDIAN
101 dnl so here is the modified version
102 if test "$cross_compiling" = yes; then
103     AC_MSG_WARN(cross compiling; assuming little endianess)
104 fi
105 AC_CACHE_CHECK(for little endianess, ac_cv_c_littleendian,
106 [ac_cv_c_littleendian=unknown
107 # See if sys/param.h defines the BYTE_ORDER macro.
108 AC_TRY_COMPILE([#include <sys/types.h>
109 #include <sys/param.h>], [
110 #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
111  bogus endian macros
112 #endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
113 AC_TRY_COMPILE([#include <sys/types.h>
114 #include <sys/param.h>], [
115 #if BYTE_ORDER != BIG_ENDIAN
116  not big endian
117 #endif], ac_cv_c_littleendian=no, ac_cv_c_littleendian=yes)])
118 if test "$ac_cv_c_littleendian" = unknown; then
119 AC_TRY_RUN([main () {
120   /* Are we little or big endian?  From Harbison&Steele.  */
121   union
122   {
123     long l;
124     char c[sizeof (long)];
125   } u;
126   u.l = 1;
127   exit (u.c[sizeof (long) - 1] == 1);
128 }], ac_cv_c_littleendian=yes, ac_cv_c_littleendian=no, ac_cv_c_littleendian=yes)
129 fi])
130
131 if test "$ac_cv_c_littleendian" = yes; then
132   AC_DEFINE(LITTLE_ENDIAN_HOST)
133 else
134   AC_DEFINE(BIG_ENDIAN_HOST)
135 fi
136
137
138 WK_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
139 WK_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
140 WK_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
141 WK_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
142 WK_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
143
144 AC_CHECK_SIZEOF(unsigned short, 16)
145 AC_CHECK_SIZEOF(unsigned int, 32)
146 AC_CHECK_SIZEOF(unsigned long, 32)
147
148
149
150
151 dnl Checks for library functions.
152 AC_FUNC_VPRINTF
153 AC_CHECK_FUNCS(strerror strtol strtoul stpcpy tcgetattr)
154
155 dnl check wether we have a random device
156 AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
157 [if test -c /dev/random && test -c /dev/urandom ; then
158   ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
159 if test "$ac_cv_have_dev_random" = yes; then
160     AC_DEFINE(HAVE_DEV_RANDOM)
161 fi
162
163
164 dnl setup assembler stuff
165 AC_MSG_CHECKING(configure mpi)
166 mpi_config_done="no"
167 AC_CACHE_VAL(ac_cv_mpi_config_done,
168              [ ac_cv_mpi_config_done="$mpi_config_done" ])
169 if test "$ac_cv_mpi_config_done" = yes; then
170     AC_MSG_RESULT(done)
171 else
172 ac_cv_mpi_config_done=""
173 if test -f ./mpi/config.links ; then
174     . ./mpi/config.links
175     AC_LINK_FILES( ${mpi_ln_src}, ${mpi_ln_dst} )
176     ac_cv_mpi_config_done="yes"
177     AC_MSG_RESULT(done)
178 else
179     AC_MSG_RESULT(failed)
180     AC_MSG_ERROR([mpi/config.links missing!])
181 fi
182 fi
183
184
185 dnl checking whether we have the RSA source
186 dnl Add stuff to insert this into the makefile
187 dnl AC_SUBST(add_cipher_SOURCES)
188 AC_CACHE_CHECK(for rsa source, ac_cv_have_rsa_cipher,
189 [if test -f cipher/rsa.c && test -f cipher/rsa.h; then
190   ac_cv_have_rsa_cipher=yes; else ac_cv_have_rsa_cipher=no; fi])
191 if test $ac_cv_have_rsa_cipher = yes; then
192     AC_DEFINE(HAVE_RSA_CIPHER)
193 fi
194
195
196 AC_OUTPUT([ Makefile    \
197             util/Makefile    \
198             mpi/Makefile \
199             cipher/Makefile \
200             g10/Makefile     \
201             tools/Makefile   \
202 ], [echo timestamp > stamp-h ] )
203