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 #
22 # Put here any platform specific stuff
23 #
24 AC_CANONICAL_SYSTEM
25 case "$target" in
26   *)
27     ;;
28 esac
29
30 # ./prepare script will automatically put the correct version. Do not edit!
31 AM_INIT_AUTOMAKE(SILC_PACKAGE, SILC_VERSION)
32 AC_PREREQ(2.3)
33 AM_CONFIG_HEADER(includes/silcdefs.h)
34
35 AC_PROG_CC
36 AC_C_INLINE
37 AC_C_CONST
38 AC_ARG_PROGRAM
39
40 AC_PROG_LN_S
41 AC_SUBST(LN_S)
42
43 # Distribution definition. ./prepare will automatically add here a correct
44 # value. Do not edit!
45 AC_DEFINE(SILC_DIST_DEFINE)
46
47 # XXX
48 # Compiler flags
49 if test "$GCC"; then
50   CFLAGS="-Wall -finline-functions $CFLAGS"
51 fi
52
53 # Program checking
54 AC_PROG_INSTALL
55 AC_PROG_RANLIB
56 AC_PROG_MAKE_SET
57
58 # Header checking
59 AC_HEADER_STDC
60 AC_HEADER_TIME
61 AC_HEADER_STAT
62
63 # More header checking
64 AC_CHECK_HEADERS(unistd.h string.h getopt.h errno.h fcntl.h assert.h)
65 AC_CHECK_HEADERS(sys/types.h sys/stat.h sys/time.h)
66 AC_CHECK_HEADERS(netinet/in.h netinet/tcp.h netdb.h)
67 AC_CHECK_HEADERS(pwd.h grp.h termcap.h paths.h)
68 AC_CHECK_HEADERS(ncurses.h signal.h ctype.h regex.h)
69 AC_CHECK_HEADERS(arpa/inet.h sys/mman.h limits.h)
70
71 # Data type checking
72 AC_TYPE_SIGNAL
73 AC_TYPE_SIZE_T
74 AC_TYPE_MODE_T
75 AC_TYPE_UID_T
76 AC_TYPE_PID_T
77
78 AC_CHECK_SIZEOF(long long, 0)
79 AC_DEFINE_UNQUOTED(SILC_SIZEOF_LONG_LONG, $ac_cv_sizeof_long_long)
80 AC_CHECK_SIZEOF(long, 0)
81 AC_DEFINE_UNQUOTED(SILC_SIZEOF_LONG, $ac_cv_sizeof_long)
82 AC_CHECK_SIZEOF(int, 0)
83 AC_DEFINE_UNQUOTED(SILC_SIZEOF_INT, $ac_cv_sizeof_int)
84 AC_CHECK_SIZEOF(short, 0)
85 AC_DEFINE_UNQUOTED(SILC_SIZEOF_SHORT, $ac_cv_sizeof_short)
86 AC_CHECK_SIZEOF(char, 0)
87 AC_DEFINE_UNQUOTED(SILC_SIZEOF_CHAR, $ac_cv_sizeof_char)
88 AC_CHECK_SIZEOF(void *, 0)
89 AC_DEFINE_UNQUOTED(SILC_SIZEOF_VOID_P, $ac_cv_sizeof_void_p)
90
91 dnl Curses detection: Munged from Midnight Commander's configure.in
92 AC_DEFUN(AC_CHECK_CURSES,[
93         search_ncurses=true
94         screen_manager=""
95         has_curses=false
96
97         CFLAGS=${CFLAGS--O}
98
99         AC_SUBST(CURSES_LIBS)
100         AC_SUBST(CURSES_INCLUDEDIR)
101
102         AC_ARG_WITH(sunos-curses,
103           [  --with-sunos-curses     Used to force SunOS 4.x curses],[
104           if test x$withval = xyes; then
105                 AC_USE_SUNOS_CURSES
106           fi
107         ])
108
109         AC_ARG_WITH(osf1-curses,
110           [  --with-osf1-curses      Used to force OSF/1 curses],[
111           if test x$withval = xyes; then
112                 AC_USE_OSF1_CURSES
113           fi
114         ])
115
116         AC_ARG_WITH(vcurses,
117           [  --with-vcurses[=incdir] Used to force SysV curses],
118           if test x$withval != xyes; then
119                 CURSES_INCLUDEDIR="-I$withval"
120           fi
121           AC_USE_SYSV_CURSES
122         )
123
124         AC_ARG_WITH(ncurses,
125           [  --with-ncurses[=dir]    Compile with ncurses/locate base dir],
126           if test x$withval = xno ; then
127                 search_ncurses=false
128           elif test x$withval != xyes ; then
129                 AC_NCURSES($withval/include, ncurses.h, -L$withval/lib -lncurses, -I$withval/include, "ncurses on $withval/include")
130           fi
131         )
132
133         if $search_ncurses
134         then
135                 AC_SEARCH_NCURSES()
136         fi
137 ])
138
139
140 AC_DEFUN(AC_USE_SUNOS_CURSES, [
141         search_ncurses=false
142         screen_manager="SunOS 4.x /usr/5include curses"
143         AC_MSG_RESULT(Using SunOS 4.x /usr/5include curses)
144         AC_DEFINE(USE_SUNOS_CURSES)
145         AC_DEFINE(HAS_CURSES)
146         has_curses=true
147         AC_DEFINE(NO_COLOR_CURSES)
148         AC_DEFINE(USE_SYSV_CURSES)
149         CURSES_INCLUDEDIR="-I/usr/5include"
150         CURSES_LIBS="/usr/5lib/libcurses.a /usr/5lib/libtermcap.a"
151         AC_MSG_RESULT(Please note that some screen refreshs may fail)
152 ])
153
154 AC_DEFUN(AC_USE_OSF1_CURSES, [
155        AC_MSG_RESULT(Using OSF1 curses)
156        search_ncurses=false
157        screen_manager="OSF1 curses"
158        AC_DEFINE(HAS_CURSES)
159        has_curses=true
160        AC_DEFINE(NO_COLOR_CURSES)
161        AC_DEFINE(USE_SYSV_CURSES)
162        CURSES_LIBS="-lcurses"
163 ])
164
165 AC_DEFUN(AC_USE_SYSV_CURSES, [
166         AC_MSG_RESULT(Using SysV curses)
167         AC_DEFINE(HAS_CURSES)
168         has_curses=true
169         AC_DEFINE(USE_SYSV_CURSES)
170         search_ncurses=false
171         screen_manager="SysV/curses"
172         CURSES_LIBS="-lcurses"
173 ])
174
175 dnl
176 dnl Parameters: directory filename cureses_LIBS curses_INCLUDEDIR nicename
177 dnl
178 AC_DEFUN(AC_NCURSES, [
179     if $search_ncurses
180     then
181         if test -f $1/$2
182         then
183             AC_MSG_RESULT(Found ncurses on $1/$2)
184
185             CURSES_LIBS="$3"
186             AC_CHECK_LIB(ncurses, initscr, [
187             ], [
188                 CHECKLIBS=`echo "$3"|sed 's/-lncurses/-lcurses/g'`
189                 AC_CHECK_LIB(curses, initscr, [
190                         CURSES_LIBS="$CHECKLIBS"
191                 ],, $CHECKLIBS)
192             ], $CURSES_LIBS)
193             CURSES_INCLUDEDIR="$4"
194             search_ncurses=false
195             screen_manager=$5
196             AC_DEFINE(HAS_CURSES)
197             has_curses=true
198             has_ncurses=true
199             AC_DEFINE(USE_NCURSES)
200         fi
201     fi
202 ])
203
204 AC_DEFUN(AC_SEARCH_NCURSES, [
205     AC_CHECKING("location of ncurses.h file")
206
207     AC_NCURSES(/usr/include, ncurses.h, -lncurses,, "ncurses on /usr/include")
208     AC_NCURSES(/usr/include/ncurses, ncurses.h, -lncurses, -I/usr/include/ncurses, "ncurses on /usr/include/ncurses")
209     AC_NCURSES(/usr/local/include, ncurses.h, -L/usr/local/lib -lncurses, -I/usr/local/include, "ncurses on /usr/local")
210     AC_NCURSES(/usr/pkg/include, ncurses.h, -L/usr/pkg/lib -lncurses, -I/usr/pkg/include, "ncurses on /usr/pkg")
211     AC_NCURSES(/usr/contrib/include, ncurses.h, -L/usr/contrib/lib -lncurses, -I/usr/contrib/include, "ncurses on /usr/contrib")
212     AC_NCURSES(/usr/local/include/ncurses, ncurses.h, -L/usr/local/lib -L/usr/local/lib/ncurses -lncurses, -I/usr/local/include/ncurses, "ncurses on /usr/local/include/ncurses")
213
214     AC_NCURSES(/usr/local/include/ncurses, curses.h, -L/usr/local/lib -lncurses, -I/usr/local/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/local/.../ncurses")
215
216     AC_NCURSES(/usr/include/ncurses, curses.h, -lncurses, -I/usr/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/include/ncurses")
217
218     dnl
219     dnl We couldn't find ncurses, try SysV curses
220     dnl
221     if $search_ncurses 
222     then
223         AC_EGREP_HEADER(init_color, /usr/include/curses.h,
224             AC_USE_SYSV_CURSES)
225         AC_EGREP_CPP(USE_NCURSES,[
226 #include <curses.h>
227 #ifdef __NCURSES_H
228 #undef USE_NCURSES
229 USE_NCURSES
230 #endif
231 ],[
232         CURSES_INCLUDEDIR="$CURSES_INCLUDEDIR -DRENAMED_NCURSES"
233         AC_DEFINE(HAS_CURSES)
234         has_curses=true
235         has_ncurses=true
236         AC_DEFINE(USE_NCURSES)
237         search_ncurses=false
238         screen_manager="ncurses installed as curses"
239 ])
240     fi
241
242     dnl
243     dnl Try SunOS 4.x /usr/5{lib,include} ncurses
244     dnl The flags USE_SUNOS_CURSES, USE_BSD_CURSES and BUGGY_CURSES
245     dnl should be replaced by a more fine grained selection routine
246     dnl
247     if $search_ncurses
248     then
249         if test -f /usr/5include/curses.h
250         then
251             AC_USE_SUNOS_CURSES
252         fi
253     fi
254
255     dnl use whatever curses there happens to be
256     if $search_ncurses
257     then
258         if test -f /usr/include/curses.h
259         then
260           CURSES_LIBS="-lcurses"
261           AC_DEFINE(HAS_CURSES)
262           has_curses=true
263           search_ncurses=false
264           screen_manager="curses"
265         fi
266     fi
267 ])
268
269 AC_CHECK_CURSES
270 LIBS="$LIBS $CURSES_LIBS"
271
272 # Function and library checking
273 AC_CHECK_FUNC(gethostbyname, ac_gethostbyname_found=1,
274 ac_gethostbyname_found=0)
275 if test x$ac_gethostbyname_found = x0; then
276     AC_CHECK_LIB(nsl, gethostbyname, LIBS="$LIBS -lnsl")
277     AC_CHECK_FUNC(res_gethostbyname, ac_res_ghbn_found=1, ac_res_ghbn_found=0)
278     if test x$ac_res_ghbn_found = x0; then
279         AC_CHECK_LIB(resolv, res_gethostbyname,  LIBS="$LIBS -lresolv")
280     fi
281 fi
282 AC_CHECK_FUNC(socket, ac_socket_found=1, ac_socket_found=0)
283 if test x$ac_socket_found = x0; then
284     AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket")
285 fi
286 AC_CHECK_FUNCS(gethostname gethostbyaddr getservbyname getservbyport)
287 AC_CHECK_FUNCS(select listen bind shutdown close connect)
288 AC_CHECK_FUNCS(fcntl setsockopt)
289 AC_CHECK_FUNCS(getopt_long time)
290 AC_CHECK_FUNCS(mlock munlock)
291 AC_CHECK_FUNCS(chmod stat fstat getenv putenv strerror ctime gettimeofday)
292 AC_CHECK_FUNCS(getpid getgid getsid getpgid getpgrp getuid)
293 AC_CHECK_FUNCS(strchr strstr strcpy strncpy memcpy memset memmove)
294
295 # SIM support checking
296 # XXX These needs to be changed as more supported platforms appear.
297 # XXX This probably needs to be made platform dependant check.
298 sim_support=false
299 AM_CONDITIONAL(SILC_SIM, test x$sim_support = xtrue)
300 AC_CHECKING(for SIM support)
301 AC_CHECK_HEADERS(dlfcn.h, 
302   AC_CHECK_LIB(dl, dlopen, 
303     AC_DEFINE(SILC_SIM) 
304     sim_support=true
305     AM_CONDITIONAL(SILC_SIM, test x$sim_support = xtrue)
306     AC_MSG_RESULT(enabled SIM support)
307     LIBS="$LIBS -ldl",
308     AC_MSG_RESULT(no SIM support found)),
309   AC_MSG_RESULT(no SIM support found))
310
311 #
312 # Installation
313 #
314
315 # Default installation destination
316 AC_PREFIX_DEFAULT(/usr/local/silc)
317
318 # etc directory
319 ETCDIR="/etc/silc"
320 AC_ARG_WITH(etcdir,
321 [  --with-etcdir[=PATH]    Directory for system files [/etc/silc]],
322 [ case "$withval" in
323   no)
324     ;;
325   yes)
326     ETCDIR="$withval"
327     ;;
328   *)
329     ETCDIR="$withval"
330     ;;
331   esac ],
332 )
333 AC_SUBST(ETCDIR)
334 AC_DEFINE_UNQUOTED(SILC_ETCDIR, "$ETCDIR")
335
336 # help directory
337 HELPDIR="help"
338 AC_ARG_WITH(helpdir,
339 [  --with-helpdir[=PATH]   Directory for SILC help files [PREFIX/help]],
340 [ case "$withval" in
341   no)
342     ;;
343   yes)
344     HELPDIR="$withval"
345     ;;
346   *)
347     HELPDIR="$withval"
348     ;;
349   esac ],
350 )
351 AC_SUBST(HELPDIR)
352 AC_DEFINE_UNQUOTED(SILC_HELPDIR, "$HELPDIR")
353
354 # doc directory
355 DOCDIR="doc"
356 AC_ARG_WITH(docdir,
357 [  --with-docdir[=PATH]    Directory for SILC documentation [PREFIX/doc]],
358 [ case "$withval" in
359   no)
360     ;;
361   yes)
362     DOCDIR="$withval"
363     ;;
364   *)
365     DOCDIR="$withval"
366     ;;
367   esac ],
368 )
369 AC_SUBST(DOCDIR)
370 AC_DEFINE_UNQUOTED(SILC_DOCDIR, "$DOCDIR")
371
372 # SIM modules directory
373 MODULESDIR="modules"
374 AC_ARG_WITH(simdir,
375 [  --with-simdir[=PATH]    Directory for SIM modules [PREFIX/modules]],
376 [ case "$withval" in
377   no)
378     ;;
379   yes)
380     MODULESDIR="$withval"
381     ;;
382   *)
383     MODULESDIR="$withval"
384     ;;
385   esac ],
386 )
387 AC_SUBST(MODULESDIR)
388 AC_DEFINE_UNQUOTED(SILC_MODULESDIR, "$MODULESDIR")
389
390 # Logs directory
391 LOGSDIR="logs"
392 AC_ARG_WITH(logsdir,
393 [  --with-logsdir[=PATH]   Directory for Server logs [PREFIX/logs]],
394 [ case "$withval" in
395   no)
396     ;;
397   yes)
398     LOGSDIR="$withval"
399     ;;
400   *)
401     LOGSDIR="$withval"
402     ;;
403   esac ],
404 )
405 AC_SUBST(LOGSDIR)
406 AC_DEFINE_UNQUOTED(SILC_LOGSDIR, "$LOGSDIR")
407
408 # SOCKS4 support checking
409 AC_MSG_CHECKING(whether to support SOCKS4)
410 AC_ARG_WITH(socks4,
411 [  --with-socks4[=PATH]    Compile with SOCKS4 support],
412 [ case "$withval" in
413   no)
414     AC_MSG_RESULT(no)
415     ;;
416   *)
417     AC_MSG_RESULT(yes)
418     socks=4
419
420     if test -d "$withval/include"; then
421       CFLAGS="$CFLAGS -I$withval/include"
422     else
423       CFLAGS="$CFLAGS -I$withval"
424     fi
425     if test -d "$withval/lib"; then
426       withval="-L$withval/lib -lsocks"
427     else
428       withval="-L$withval -lsocks"
429     fi
430
431     LIBS="$withval $LIBS"
432
433     AC_TRY_LINK([],
434                 [ Rconnect(); ],
435                 [],
436                 [ AC_MSG_ERROR(Could not find SOCKS4 library.)])
437       ;;
438   esac ],
439   AC_MSG_RESULT(no)
440 )   
441
442 # SOCKS5 support checking
443 AC_MSG_CHECKING(whether to support SOCKS5)
444 AC_ARG_WITH(socks5,
445 [  --with-socks5[=PATH]    Compile with SOCKS5 support],
446 [ case "$withval" in
447   no)
448     AC_MSG_RESULT(no)
449     ;;
450   *)
451     AC_MSG_RESULT(yes)
452     socks=5
453
454     if test -d "$withval/include"; then
455       CFLAGS="$CFLAGS -I$withval/include"
456     else
457       CFLAGS="$CFLAGS -I$withval"
458     fi
459     if test -d "$withval/lib"; then
460       withval="-L$withval/lib -lsocks5"
461     else
462       withval="-L$withval -lsocks5"
463     fi 
464
465     LIBS="$withval $LIBS"
466
467     AC_TRY_LINK([],
468                 [ SOCKSconnect(); ],
469                 [],
470                 [ AC_MSG_ERROR(Could not find SOCKS5 library.)])
471       ;;
472   esac ],
473   AC_MSG_RESULT(no)
474 )   
475
476 if test "x$socks" = "x4"; then
477   AC_DEFINE(SOCKS)
478   CFLAGS="$CFLAGS -Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dbind=Rbind -Daccept=Raccept -Dlisten=Rlisten -Dselect=Rselect"
479 fi
480
481 if test "x$socks" = "x5"; then
482   AC_DEFINE(SOCKS)
483   AC_DEFINE(SOCKS5)
484   AC_DEFINE(Rconnect, SOCKSconnect)
485   AC_DEFINE(Rgetsockname, SOCKSgetsockname)
486   AC_DEFINE(Rgetpeername, SOCKSgetpeername)
487   AC_DEFINE(Rbind, SOCKSbind)
488   AC_DEFINE(Raccept, SOCKSaccept)
489   AC_DEFINE(Rlisten, SOCKSlisten)
490   AC_DEFINE(Rselect, SOCKSselect)
491   AC_DEFINE(Rrecvfrom, SOCKSrecvfrom)
492   AC_DEFINE(Rsendto, SOCKSsendto)
493   AC_DEFINE(Rrecv, SOCKSrecv)
494   AC_DEFINE(Rsend, SOCKSsend)
495   AC_DEFINE(Rread, SOCKSread)
496   AC_DEFINE(Rwrite, SOCKSwrite)
497   AC_DEFINE(Rrresvport, SOCKSrresvport)
498   AC_DEFINE(Rshutdown, SOCKSshutdown)
499   AC_DEFINE(Rlisten, SOCKSlisten)
500   AC_DEFINE(Rclose, SOCKSclose)
501   AC_DEFINE(Rdup, SOCKSdup)
502   AC_DEFINE(Rdup2, SOCKSdup2)
503   AC_DEFINE(Rfclose, SOCKSfclose)
504   AC_DEFINE(Rgethostbyname, SOCKSgethostbyname)
505 fi
506
507 #
508 # MP library checking. First check whether system has GMP. If it has that
509 # then use it. If not then compile the MPI library in the source tree.
510 #
511 mp_gmp=false
512 AC_CHECK_HEADER(gmp.h,
513   AC_CHECK_LIB(gmp, __gmpz_init,
514     mp_gmp=true
515     AC_DEFINE(SILC_MP_GMP)
516     LIBS="$LIBS -L/usr/lib -L/usr/local/lib -lgmp"
517     AC_MSG_RESULT(Using GMP as MP library)
518   )
519 )
520 AM_CONDITIONAL(SILC_MP_GMP, test x$mp_gmp = xtrue)
521 if test x$mp_gmp = xfalse; then
522   AM_CONDITIONAL(SILC_MP_NSS_MPI, test x$mp_gmp = xfalse)
523   AC_DEFINE(SILC_MP_NSS_MPI)
524   AC_MSG_RESULT(Using NSS MPI as MP library)
525 fi
526
527 AC_ARG_WITH(silcd-config-file,
528 [  --with-silcd-config-file[=PATH]
529                           Use PATH as default configuration file in SILC
530                           server [/etc/silc/silcd.conf]],
531 [ AC_DEFINE_UNQUOTED(SILC_SERVER_CONFIG_FILE, "$withval") ])
532
533 # Native WIN32 compilation under cygwin
534 AC_ARG_WITH(win32,
535 [  --with-win32            Compile native WIN32 code (-mno-cygwin)],
536 [ AC_DEFINE(SILC_WIN32)
537   AM_CONDITIONAL(SILC_WIN32, test xtrue = xtrue)
538   CFLAGS="-mno-cygwin $CFLAGS" 
539   LIBS="$LIBS -lwsock32" ])
540
541 # Debug checking
542 AC_MSG_CHECKING(for enabled debugging)
543 AC_ARG_ENABLE(debug,
544 [  --enable-debug          Enable debugging (warning: it is heavy!)],
545 [ case "${enableval}" in
546   yes) 
547     AC_MSG_RESULT(yes)
548     AC_DEFINE(SILC_DEBUG)
549     CFLAGS="-O -g $CFLAGS"
550     ;;
551   *)
552     AC_MSG_RESULT(no)
553     CFLAGS="-O2 -g $CFLAGS"
554     ;;
555 esac ], CFLAGS="-O2 -g $CFLAGS"
556         AC_MSG_RESULT(no))
557
558 #
559 # Other configure scripts
560 #
561 AC_CONFIG_SUBDIRS(lib/dotconf)
562 AC_CONFIG_SUBDIRS(lib/trq)
563 AC_CONFIG_SUBDIRS(lib/silcmath/mpi)
564 AC_CONFIG_SUBDIRS(irssi)
565 #AC_CONFIG_SUBDIRS(lib/zlib)
566
567 SILC_TOP_SRCDIR=`pwd`
568 AC_SUBST(SILC_TOP_SRCDIR)
569 #SILC_INSTALL_PREFIX=$ac_default_prefix
570 #AC_SUBST(SILC_INSTALL_PREFIX)
571 AC_SUBST(LIBS)
572 INCLUDE_DEFINES_INT="include \$(top_srcdir)/Makefile.defines_int"
573 AC_SUBST(INCLUDE_DEFINES_INT)
574
575 #
576 # Makefile outputs
577 #
578 AC_OUTPUT( \
579 Makefile
580 Makefile.defines
581 Makefile.defines_int
582 irssi/Makefile.defines
583 irssi/Makefile.defines_int
584 doc/Makefile
585 includes/Makefile
586 lib/Makefile
587 lib/contrib/Makefile
588 lib/silcclient/Makefile
589 lib/silccore/Makefile
590 lib/silccrypt/Makefile
591 lib/silcmath/Makefile
592 lib/silcmath/mpi/Makefile.defines
593 lib/silcmath/mpi/Makefile.defines_int
594 lib/silcsim/Makefile
595 lib/silcsim/modules/Makefile
596 lib/silcske/Makefile
597 lib/silcutil/Makefile
598 lib/silcutil/unix/Makefile
599 lib/silcutil/win32/Makefile
600 silc/Makefile
601 silcd/Makefile)