updates.
[silc.git] / configure.in.pre
1 #
2 #  configure.in
3 #
4 #  Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
5 #
6 #  Copyright (C) 2000 - 2001 Pekka Riikonen
7 #
8 #  This program is free software; you can redistribute it and/or modify
9 #  it under the terms of the GNU General Public License as published by
10 #  the Free Software Foundation; either version 2 of the License, or
11 #  (at your option) any later version.
12 #
13 #  This program is distributed in the hope that it will be useful,
14 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
15 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 #  GNU General Public License for more details.
17 #
18
19 AC_INIT(includes/version.h)
20
21 # Compiler settings
22 CFLAGS="-Wall $CFLAGS"
23
24 #
25 # Put here any platform specific stuff
26 #
27 AC_CANONICAL_SYSTEM
28 case "$target" in
29   *-*-linux*|*-*-mklinux*)
30     CFLAGS="-D_GNU_SOURCE $CFLAGS"
31     ;;
32   *)
33     ;;
34 esac
35
36 # ./prepare script will automatically put the correct date. Do not edit!
37 AM_INIT_AUTOMAKE(silc, YYYYMMDD)
38 AC_PREREQ(2.3)
39 AM_CONFIG_HEADER(includes/silcdefs.h)
40
41 AC_PROG_CC
42 AC_C_INLINE
43 AC_C_CONST
44 AC_ARG_PROGRAM
45
46 AC_PROG_LN_S
47 AC_SUBST(LN_S)
48
49 # XXX
50 # Compiler flags
51 if test "$GCC"; then
52   CFLAGS="-finline-functions $CFLAGS"
53 else
54   # Currently GCC is only supported compiler
55   AC_MSG_ERROR(GCC is only supported compiler currently)
56 fi
57
58 # Program checking
59 AC_PROG_INSTALL
60 AC_PROG_RANLIB
61 AC_PROG_MAKE_SET
62
63 # Header checking
64 AC_HEADER_STDC
65 AC_HEADER_TIME
66 AC_HEADER_STAT
67
68 # More header checking
69 AC_CHECK_HEADERS(unistd.h string.h getopt.h errno.h fcntl.h assert.h)
70 AC_CHECK_HEADERS(sys/types.h sys/stat.h sys/time.h)
71 AC_CHECK_HEADERS(netinet/in.h netinet/tcp.h netdb.h)
72 AC_CHECK_HEADERS(pwd.h grp.h termcap.h paths.h)
73 AC_CHECK_HEADERS(ncurses.h signal.h ctype.h regex.h)
74 AC_CHECK_HEADERS(arpa/inet.h sys/mman.h)
75
76 # Data type checking
77 AC_TYPE_SIGNAL
78 AC_TYPE_SIZE_T
79 AC_TYPE_MODE_T
80 AC_TYPE_UID_T
81 AC_TYPE_PID_T
82
83 AC_CHECK_SIZEOF(long long, 0)
84 AC_DEFINE_UNQUOTED(SILC_SIZEOF_LONG_LONG, $ac_cv_sizeof_long_long)
85 AC_CHECK_SIZEOF(long, 0)
86 AC_DEFINE_UNQUOTED(SILC_SIZEOF_LONG, $ac_cv_sizeof_long)
87 AC_CHECK_SIZEOF(int, 0)
88 AC_DEFINE_UNQUOTED(SILC_SIZEOF_INT, $ac_cv_sizeof_int)
89 AC_CHECK_SIZEOF(short, 0)
90 AC_DEFINE_UNQUOTED(SILC_SIZEOF_SHORT, $ac_cv_sizeof_short)
91 AC_CHECK_SIZEOF(char, 0)
92 AC_DEFINE_UNQUOTED(SILC_SIZEOF_CHAR, $ac_cv_sizeof_char)
93 AC_CHECK_SIZEOF(void *, 0)
94 AC_DEFINE_UNQUOTED(SILC_SIZEOF_VOID_P, $ac_cv_sizeof_void_p)
95
96 # Function and library checking
97 AC_CHECK_FUNCS(initscr)
98 AC_CHECK_LIB(ncurses, initscr, LIBS="$LIBS -lncurses")
99 AC_CHECK_FUNCS(gethostbyname)
100 AC_CHECK_LIB(nsl, gethostbyname, LIBS="$LIBS -lnsl -lresolv")
101 AC_CHECK_FUNCS(socket)
102 AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket")
103 AC_CHECK_FUNCS(gethostname gethostbyaddr getservbyname getservbyport)
104 AC_CHECK_FUNCS(select listen bind shutdown close connect)
105 AC_CHECK_FUNCS(fcntl setsockopt)
106 AC_CHECK_FUNCS(getopt_long time)
107 AC_CHECK_FUNCS(mlock munlock)
108 AC_CHECK_FUNCS(chmod stat fstat getenv putenv strerror ctime gettimeofday)
109 AC_CHECK_FUNCS(getpid getgid getsid getpgid getpgrp getuid)
110 AC_CHECK_FUNCS(strchr strstr strcpy strncpy memcpy memset memmove)
111
112 # SIM support checking
113 # XXX These needs to be changed as more supported platforms appear.
114 # XXX This probably needs to be made platform dependant check.
115 AC_CHECKING(for SIM support)
116 AC_CHECK_HEADERS(dlfcn.h, 
117   AC_CHECK_LIB(dl, dlopen, 
118     AC_DEFINE(SILC_SIM) 
119     AC_MSG_RESULT(enabled SIM support)
120     LIBS="$LIBS -ldl",
121     AC_MSG_RESULT(no SIM support found)),
122   AC_MSG_RESULT(no SIM support found))
123
124 #
125 # Installation
126 #
127
128 # Default installation destination
129 AC_PREFIX_DEFAULT(/usr/local/silc/)
130
131 # etc directory
132 ETCDIR="/etc/silc"
133 AC_ARG_WITH(etcdir,
134 [  --with-etcdir[=PATH]    Directory for system files [/etc/silc]],
135 [ case "$withval" in
136   no)
137     ;;
138   yes)
139     ;;
140   *)
141     ETCDIR="$withwal"
142     ;;
143   esac ],
144 )
145 AC_SUBST(ETCDIR)
146
147 # help directory
148 HELPDIR="help"
149 AC_ARG_WITH(helpdir,
150 [  --with-helpdir[=PATH]   Directory for SILC help files [PREFIX/help]],
151 [ case "$withval" in
152   no)
153     ;;
154   yes)
155     ;;
156   *)
157     HELPDIR="$withwal"
158     ;;
159   esac ],
160 )
161 AC_SUBST(HELPDIR)
162
163 # doc directory
164 DOCDIR="doc"
165 AC_ARG_WITH(docdir,
166 [  --with-docdir[=PATH]    Directory for SILC documentation [PREFIX/doc]],
167 [ case "$withval" in
168   no)
169     ;;
170   yes)
171     ;;
172   *)
173     DOCDIR="$withwal"
174     ;;
175   esac ],
176 )
177 AC_SUBST(DOCDIR)
178
179 # SIM modules directory
180 MODULESDIR="modules"
181 AC_ARG_WITH(simdir,
182 [  --with-simdir[=PATH]    Directory for SIM modules [PREFIX/modules]],
183 [ case "$withval" in
184   no)
185     ;;
186   yes)
187     ;;
188   *)
189     MODULESDIR="$withwal"
190     ;;
191   esac ],
192 )
193 AC_SUBST(MODULESDIR)
194
195 # Debug checking
196 AC_MSG_CHECKING(for enabled debugging)
197 AC_ARG_ENABLE(debug,
198 [  --enable-debug          Enable debugging (warning: it is heavy!)],
199 [ case "${enableval}" in
200   yes) 
201     AC_MSG_RESULT(yes)
202     AC_DEFINE(SILC_DEBUG)
203     CFLAGS="-O -g $CFLAGS"
204     ;;
205   *)
206     AC_MSG_RESULT(no)
207     CFLAGS="-O2 -g $CFLAGS"
208     ;;
209 esac ], CFLAGS="-O2 -g $CFLAGS"
210         AC_MSG_RESULT(no))
211
212 # SOCKS4 support checking
213 AC_MSG_CHECKING(whether to support SOCKS4)
214 AC_ARG_WITH(socks4,
215 [  --with-socks4[=PATH]    Compile with SOCKS4 support.],
216 [ case "$withval" in
217   no)
218     AC_MSG_RESULT(no)
219     ;;
220   *)
221     AC_MSG_RESULT(yes)
222     socks=4
223
224     if test -d "$withval/include"; then
225       CFLAGS="$CFLAGS -I$withval/include"
226     else
227       CFLAGS="$CFLAGS -I$withval"
228     fi
229     if test -d "$withval/lib"; then
230       withval="-L$withval/lib -lsocks"
231     else
232       withval="-L$withval -lsocks"
233     fi
234
235     LIBS="$withval $LIBS"
236
237     AC_TRY_LINK([],
238                 [ Rconnect(); ],
239                 [],
240                 [ AC_MSG_ERROR(Could not find SOCKS4 library.)])
241       ;;
242   esac ],
243   AC_MSG_RESULT(no)
244 )   
245
246 # SOCKS5 support checking
247 AC_MSG_CHECKING(whether to support SOCKS5)
248 AC_ARG_WITH(socks5,
249 [  --with-socks5[=PATH]    Compile with SOCKS5 support.],
250 [ case "$withval" in
251   no)
252     AC_MSG_RESULT(no)
253     ;;
254   *)
255     AC_MSG_RESULT(yes)
256     socks=5
257
258     if test -d "$withval/include"; then
259       CFLAGS="$CFLAGS -I$withval/include"
260     else
261       CFLAGS="$CFLAGS -I$withval"
262     fi
263     if test -d "$withval/lib"; then
264       withval="-L$withval/lib -lsocks5"
265     else
266       withval="-L$withval -lsocks5"
267     fi 
268
269     LIBS="$withval $LIBS"
270
271     AC_TRY_LINK([],
272                 [ SOCKSconnect(); ],
273                 [],
274                 [ AC_MSG_ERROR(Could not find SOCKS5 library.)])
275       ;;
276   esac ],
277   AC_MSG_RESULT(no)
278 )   
279
280 if test "x$socks" = "x4"; then
281   AC_DEFINE(SOCKS)
282   CFLAGS="$CFLAGS -Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dbind=Rbind -Daccept=Raccept -Dlisten=Rlisten -Dselect=Rselect"
283 fi
284
285 if test "x$socks" = "x5"; then
286   AC_DEFINE(SOCKS)
287   AC_DEFINE(SOCKS5)
288   AC_DEFINE(Rconnect, SOCKSconnect)
289   AC_DEFINE(Rgetsockname, SOCKSgetsockname)
290   AC_DEFINE(Rgetpeername, SOCKSgetpeername)
291   AC_DEFINE(Rbind, SOCKSbind)
292   AC_DEFINE(Raccept, SOCKSaccept)
293   AC_DEFINE(Rlisten, SOCKSlisten)
294   AC_DEFINE(Rselect, SOCKSselect)
295   AC_DEFINE(Rrecvfrom, SOCKSrecvfrom)
296   AC_DEFINE(Rsendto, SOCKSsendto)
297   AC_DEFINE(Rrecv, SOCKSrecv)
298   AC_DEFINE(Rsend, SOCKSsend)
299   AC_DEFINE(Rread, SOCKSread)
300   AC_DEFINE(Rwrite, SOCKSwrite)
301   AC_DEFINE(Rrresvport, SOCKSrresvport)
302   AC_DEFINE(Rshutdown, SOCKSshutdown)
303   AC_DEFINE(Rlisten, SOCKSlisten)
304   AC_DEFINE(Rclose, SOCKSclose)
305   AC_DEFINE(Rdup, SOCKSdup)
306   AC_DEFINE(Rdup2, SOCKSdup2)
307   AC_DEFINE(Rfclose, SOCKSfclose)
308   AC_DEFINE(Rgethostbyname, SOCKSgethostbyname)
309 fi
310
311 # GMP Library checking
312 AC_MSG_CHECKING(whether to compile GMP)
313 AC_ARG_WITH(gmp,
314 [  --with-gmp              Build the GMP in the SILC source tree],
315 [ case "${withval}" in
316   yes) 
317     AM_CONDITIONAL(SILC_BUILD_GMP, test x$withval = xyes)
318     AC_MSG_RESULT(yes)
319     ;;
320   *)
321     AC_CHECK_HEADER(gmp.h,
322       AC_CHECK_LIB(gmp, __gmpz_init,
323         AM_CONDITIONAL(SILC_BUILD_GMP, test x$withval = yes)
324         AC_MSG_RESULT(GMP will not be compiled),
325         AM_CONDITIONAL(SILC_BUILD_GMP, test x$withval != yes)
326         AC_MSG_RESULT(GMP will be compiled)
327       ),
328       AM_CONDITIONAL(SILC_BUILD_GMP, test x$withval != yes)
329       AC_MSG_RESULT(GMP will be compiled)
330     )
331     ;;
332 esac ], [
333   AC_CHECK_HEADER(gmp.h,
334     AC_CHECK_LIB(gmp, __gmpz_init,
335       build_gmp=false
336       AM_CONDITIONAL(SILC_BUILD_GMP, test x$build_gmp = xtrue)
337       AC_MSG_RESULT(GMP will not be compiled),
338       build_gmp=true
339       AM_CONDITIONAL(SILC_BUILD_GMP, test x$build_gmp = xtrue)
340       AC_MSG_RESULT(GMP will be compiled)
341     ),
342     build_gmp=true
343     AM_CONDITIONAL(SILC_BUILD_GMP, test x$build_gmp = xtrue)
344     AC_MSG_RESULT(GMP will be compiled)
345   )
346 ])
347
348 AC_ARG_WITH(silcd-config-file,
349 [  --with-silcd-config-file[=PATH]
350                           Use PATH as default configuration file in SILC
351                           server.],
352 [ AC_DEFINE_UNQUOTED(SILC_SERVER_CONFIG_FILE, "$withval") ])
353
354 # XXX
355 #LIBS="$LIBS -lefence"
356
357 # Other configure scripts
358 #AC_CONFIG_SUBDIRS(lib/zlib)
359 AC_CONFIG_SUBDIRS(lib/dotconf)
360 AC_CONFIG_SUBDIRS(lib/silcmath/gmp)
361 AC_CONFIG_SUBDIRS(lib/trq)
362
363 AC_OUTPUT( \
364 Makefile
365 doc/Makefile
366 includes/Makefile
367 lib/Makefile
368 lib/contrib/Makefile
369 lib/silcclient/Makefile
370 lib/silccore/Makefile
371 lib/silccrypt/Makefile
372 lib/silcmath/Makefile
373 lib/silcsim/Makefile
374 lib/silcsim/modules/Makefile
375 lib/silcske/Makefile
376 lib/silcutil/Makefile
377 silc/Makefile
378 silcd/Makefile)