* configure.ac: Use much more accurate method to determine whether
[gnupg.git] / configure.ac
1 dnl Configure.ac script for GnuPG
2 dnl Copyright (C) 1998, 1999, 2000, 2001, 2002,
3 dnl               2003 Free Software Foundation, Inc.
4 dnl
5 dnl This file is part of GnuPG.
6 dnl
7 dnl GnuPG is free software; you can redistribute it and/or modify
8 dnl it under the terms of the GNU General Public License as published by
9 dnl the Free Software Foundation; either version 2 of the License, or
10 dnl (at your option) any later version.
11 dnl 
12 dnl GnuPG is distributed in the hope that it will be useful,
13 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
14 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 dnl GNU General Public License for more details.
16 dnl 
17 dnl You should have received a copy of the GNU General Public License
18 dnl along with this program; if not, write to the Free Software
19 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
20 dnl
21 dnl (Process this file with autoconf to produce a configure script.)
22 dnlAC_REVISION($Revision$)dnl
23
24 AC_PREREQ(2.52)
25
26 # Remember to change the version number immediately *after* a release
27 # and remove the "-cvs" or "rc" suffix immediately *before* a release.
28 AC_INIT(gnupg, 1.3.2-cvs, bug-gnupg@gnu.org)
29 # Set development_version to yes if the minor number is odd or you
30 # feel that the default check for a development version is not
31 # sufficient.
32 development_version=yes
33
34 ALL_LINGUAS="de"
35
36 PACKAGE=$PACKAGE_NAME
37 VERSION=$PACKAGE_VERSION
38
39 AC_CONFIG_AUX_DIR(scripts)
40 AC_CONFIG_SRCDIR(g10/g10.c)
41 AC_CANONICAL_TARGET()
42 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
43 AM_CONFIG_HEADER(config.h)
44
45 AC_SUBST(PACKAGE)
46 AC_SUBST(VERSION)
47 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
48 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
49 AC_DEFINE(_GNU_SOURCE,1,[Some tests rely on this (stpcpy) and it should be used for new programs anyway])
50
51 dnl
52 dnl  Check for random module options
53 dnl
54 AC_MSG_CHECKING([which random module to use])
55 AC_ARG_ENABLE(static-rnd,
56     [  --enable-static-rnd=[egd|unix|linux|auto]  ],
57 [use_static_rnd=$enableval], [use_static_rnd=default] )
58
59 if test "$use_static_rnd" = no; then
60     use_static_rnd=default
61 fi
62
63 case "$use_static_rnd" in
64     egd | linux | unix | default )
65       AC_MSG_RESULT($use_static_rnd)
66       ;;
67     auto )
68       AC_MSG_RESULT(automagically selected at runtime)
69       ;;
70     * )
71       AC_MSG_RESULT(invalid argument)
72       AC_MSG_ERROR(there is no random module rnd$use_static_rnd)
73       ;;
74 esac
75
76 AC_ARG_WITH(egd-socket,
77     [  --with-egd-socket=NAME  use NAME for the EGD socket],
78             egd_socket_name="$withval", egd_socket_name="" )
79 AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name",
80                    [Define if you don't want the default EGD socket name.
81                     For details see cipher/rndegd.c])
82
83
84 dnl
85 dnl See whether the user wants to disable checking for /dev/random
86
87 AC_MSG_CHECKING([whether use of /dev/random is requested])
88 AC_ARG_ENABLE(dev-random,
89 [  --disable-dev-random    disable the use of dev random],
90     try_dev_random=$enableval, try_dev_random=yes)
91 AC_MSG_RESULT($try_dev_random)
92
93
94 dnl
95 dnl  Check other options
96 dnl
97
98 AC_MSG_CHECKING([whether assembler modules are requested])
99 AC_ARG_ENABLE(asm,
100 [  --disable-asm           do not use assembler modules],
101      try_asm_modules=$enableval, try_asm_modules=yes)
102 AC_MSG_RESULT($try_asm_modules)
103
104 AC_MSG_CHECKING([whether memory guard is requested])
105 AC_ARG_ENABLE(m-guard,
106     [  --enable-m-guard        enable memory guard facility],
107     use_m_guard=$enableval, use_m_guard=no)
108 AC_MSG_RESULT($use_m_guard)
109 if test "$use_m_guard" = yes ; then
110     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
111 fi
112
113 dnl See if we are disabling any algorithms or features for a smaller
114 dnl binary
115
116 try_dynload=no
117
118 use_idea=yes
119 use_cast5=yes
120 use_blowfish=yes
121 use_aes=yes
122 use_twofish=yes
123 use_tiger192=yes
124 use_sha256=yes
125 use_sha512=yes
126 use_exec=yes
127
128 AC_ARG_ENABLE(minimal,
129    AC_HELP_STRING([--enable-minimal],[build the smallest gpg binary possible]),
130    use_idea=no
131    use_cast5=no
132    use_blowfish=no
133    use_aes=no
134    use_twofish=no
135    use_tiger192=no
136    use_sha256=no
137    use_sha512=no
138    use_exec=no)
139
140 AC_MSG_CHECKING([whether to enable the IDEA cipher])
141 AC_ARG_ENABLE(idea,
142    AC_HELP_STRING([--disable-idea],[disable the IDEA cipher]),
143    use_idea=$enableval)
144 AC_MSG_RESULT($use_idea)
145 if test x"$use_idea" = xyes ; then
146    AC_DEFINE(USE_IDEA,1,[Define to include the IDEA cipher])
147
148 # We don't need idea but some people claim that they need it for
149 # research etc., so we allow to place an idea source code into the
150 # cipher directory and statically link it if available, otherwise we
151 # link to a stub.  We don't use AC_CHECK_FILE to avoid caching.
152
153    AC_MSG_CHECKING([for idea cipher module])
154    tmp=""
155    if test -f $srcdir/cipher/idea.c; then 
156       IDEA_O=idea.o
157       tmp=idea
158    else
159       IDEA_O=idea-stub.o
160       tmp=no
161       try_dynload=yes
162    fi
163    AC_SUBST(IDEA_O)
164    AC_MSG_RESULT($tmp)
165 fi
166
167 AC_MSG_CHECKING([whether to enable the CAST5 cipher])
168 AC_ARG_ENABLE(cast5,
169    AC_HELP_STRING([--disable-cast5],[disable the CAST5 cipher]),
170    use_cast5=$enableval)
171 AC_MSG_RESULT($use_cast5)
172 if test x"$use_cast5" = xyes ; then
173    AC_DEFINE(USE_CAST5,1,[Define to include the CAST5 cipher])
174 fi
175
176 AC_MSG_CHECKING([whether to enable the BLOWFISH cipher])
177 AC_ARG_ENABLE(blowfish,
178    AC_HELP_STRING([--disable-blowfish],[disable the BLOWFISH cipher]),
179    use_blowfish=$enableval)
180 AC_MSG_RESULT($use_blowfish)
181 if test x"$use_blowfish" = xyes ; then
182    AC_DEFINE(USE_BLOWFISH,1,[Define to include the BLOWFISH cipher])
183 fi
184
185 AC_MSG_CHECKING([whether to enable the AES ciphers])
186 AC_ARG_ENABLE(aes,
187    AC_HELP_STRING([--disable-aes],[disable the AES, AES192, and AES256 ciphers]),
188    use_aes=$enableval)
189 AC_MSG_RESULT($use_aes)
190 if test x"$use_aes" = xyes ; then
191    AC_DEFINE(USE_AES,1,[Define to include the AES, AES192, and AES256 ciphers])
192 fi
193
194 AC_MSG_CHECKING([whether to enable the TWOFISH cipher])
195 AC_ARG_ENABLE(twofish,
196    AC_HELP_STRING([--disable-twofish],[disable the TWOFISH cipher]),
197    use_twofish=$enableval)
198 AC_MSG_RESULT($use_twofish)
199 if test x"$use_twofish" = xyes ; then
200    AC_DEFINE(USE_TWOFISH,1,[Define to include the TWOFISH cipher])
201 fi
202
203 dnl TIGER192 is defined only after we confirm 64-bit support later
204 AC_MSG_CHECKING([whether to enable the TIGER/192 digest])
205 AC_ARG_ENABLE(tiger192,
206    AC_HELP_STRING([--disable-tiger192],[disable the TIGER/192 digest]),
207    use_tiger192=$enableval)
208 AC_MSG_RESULT($use_tiger192)
209
210 AC_MSG_CHECKING([whether to enable the SHA-256 digest])
211 AC_ARG_ENABLE(sha256,
212    AC_HELP_STRING([--disable-sha256],[disable the SHA-256 digest]),
213    use_sha256=$enableval)
214 AC_MSG_RESULT($use_sha256)
215 if test x"$use_sha256" = xyes ; then
216    AC_DEFINE(USE_SHA256,1,[Define to include the SHA-256 digest])
217 fi
218
219 dnl SHA512 is defined only after we confirm 64-bit support later
220 AC_MSG_CHECKING([whether to enable the SHA-384 and SHA-512 digests])
221 AC_ARG_ENABLE(sha512,
222    AC_HELP_STRING([--disable-sha512],[disable the SHA-384 and SHA-512 digests]),
223    use_sha512=$enableval)
224 AC_MSG_RESULT($use_sha512)
225
226 AC_MSG_CHECKING([whether to enable external program execution])
227 AC_ARG_ENABLE(exec,
228     AC_HELP_STRING([--disable-exec],[disable all external program execution]),
229     use_exec=$enableval)
230 AC_MSG_RESULT($use_exec)
231 if test "$use_exec" = no ; then
232     AC_DEFINE(NO_EXEC,1,[Define to disable all external program execution])
233 fi
234
235 if test "$use_exec" = yes ; then
236   AC_MSG_CHECKING([whether to enable photo ID viewing])
237   AC_ARG_ENABLE(photo-viewers,
238       [  --disable-photo-viewers disable photo ID viewers],
239       [if test "$enableval" = no ; then
240          AC_DEFINE(DISABLE_PHOTO_VIEWER,1,[define to disable photo viewing])
241       fi],enableval=yes)
242   gnupg_cv_enable_photo_viewers=$enableval
243   AC_MSG_RESULT($enableval)
244
245   if test "$gnupg_cv_enable_photo_viewers" = yes ; then
246     AC_MSG_CHECKING([whether to use a fixed photo ID viewer])
247     AC_ARG_WITH(photo-viewer,
248         [  --with-photo-viewer=FIXED_VIEWER  set a fixed photo ID viewer],
249         [if test "$withval" = yes ; then
250            withval=no
251         elif test "$withval" != no ; then
252            AC_DEFINE_UNQUOTED(FIXED_PHOTO_VIEWER,"$withval",
253                             [if set, restrict photo-viewer to this])
254         fi],withval=no)
255     AC_MSG_RESULT($withval)
256   fi
257
258   AC_MSG_CHECKING([whether to enable external keyserver helpers])
259   AC_ARG_ENABLE(keyserver-helpers,
260       [  --disable-keyserver-helpers  disable all external keyserver support],
261       [if test "$enableval" = no ; then
262          AC_DEFINE(DISABLE_KEYSERVER_HELPERS,1,
263                   [define to disable keyserver helpers])
264       fi],enableval=yes)
265   gnupg_cv_enable_keyserver_helpers=$enableval
266   AC_MSG_RESULT($enableval)
267
268   if test "$gnupg_cv_enable_keyserver_helpers" = yes ; then
269     AC_MSG_CHECKING([whether LDAP keyserver support is requested])
270     AC_ARG_ENABLE(ldap,
271     [  --disable-ldap          disable LDAP keyserver interface],
272         try_ldap=$enableval, try_ldap=yes)
273     AC_MSG_RESULT($try_ldap)
274
275     AC_MSG_CHECKING([whether HKP keyserver support is requested])
276     AC_ARG_ENABLE(hkp,
277     [  --disable-hkp           disable HKP keyserver interface],
278         try_hkp=$enableval, try_hkp=yes)
279     AC_MSG_RESULT($try_hkp)
280
281     if test "$try_hkp" = yes ; then
282       AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp$EXEEXT")
283     fi
284
285     AC_MSG_CHECKING([whether email keyserver support is requested])
286     AC_ARG_ENABLE(mailto,
287     [  --disable-mailto        disable email keyserver interface],
288         try_mailto=$enableval, try_mailto=yes)
289     AC_MSG_RESULT($try_mailto)
290     fi
291
292     AC_MSG_CHECKING([whether keyserver exec-path is enabled])
293     AC_ARG_ENABLE(keyserver-path,
294         [  --disable-keyserver-path disable the exec-path option for keyserver helpers],
295         [if test "$enableval" = no ; then
296          AC_DEFINE(DISABLE_KEYSERVER_PATH,1,[define to disable exec-path for keyserver helpers])
297         fi],enableval=yes)
298     AC_MSG_RESULT($enableval)
299   fi
300
301 AC_MSG_CHECKING([whether the included zlib is requested])
302 AC_ARG_WITH(included-zlib,
303     [  --with-included-zlib    use the zlib code included here],
304 [g10_force_zlib=yes], [g10_force_zlib=no] )
305 AC_MSG_RESULT($g10_force_zlib)
306
307 dnl
308 dnl Check whether we want to use Linux capabilities
309 dnl
310 AC_MSG_CHECKING([whether use of capabilities is requested])
311 AC_ARG_WITH(capabilities,
312     [  --with-capabilities     use linux capabilities [default=no]],
313 [use_capabilities="$withval"],[use_capabilities=no])
314 AC_MSG_RESULT($use_capabilities)
315
316
317 AH_BOTTOM([
318 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
319 #define EXEC_TEMPFILE_ONLY
320 #endif
321
322 #include "g10defs.h"
323 ])
324
325
326 AM_MAINTAINER_MODE
327
328 dnl Checks for programs.
329
330 AC_PROG_MAKE_SET
331 AM_SANITY_CHECK
332 missing_dir=`cd $ac_aux_dir && pwd`
333 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
334 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
335 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
336 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
337 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
338 AC_PROG_CC
339 AC_PROG_CPP
340 AC_PROG_RANLIB
341 AC_CHECK_TOOL(AR, ar, :)
342 AC_PATH_PROG(PERL,"perl")
343 AC_ISC_POSIX
344 AC_SYS_LARGEFILE
345 AC_PROG_INSTALL
346 AC_PROG_AWK
347 AC_CHECK_PROG(DOCBOOK_TO_MAN, docbook-to-man, yes, no)
348 AM_CONDITIONAL(HAVE_DOCBOOK_TO_MAN, test "$ac_cv_prog_DOCBOOK_TO_MAN" = yes)
349 GNUPG_CHECK_FAQPROG
350 GNUPG_CHECK_DOCBOOK_TO_TEXI
351
352 MPI_OPT_FLAGS=""
353
354
355 try_gettext=yes
356 case "${target}" in
357     *-*-mingw32*)
358         # special stuff for Windoze NT
359         ac_cv_have_dev_random=no
360         AC_DEFINE(USE_ONLY_8DOT3,1,
361                   [set this to limit filenames to the 8.3 format])
362         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
363                   [defined if we must run on a stupid file system])
364         AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
365                   [defined if we run on some of the PCDOS like systems 
366                    (DOS, Windoze. OS/2) with special properties like
367                     no file modes])
368         AC_DEFINE(USE_SIMPLE_GETTEXT,1,
369                   [because the Unix gettext has too much overhead on
370                    MingW32 systems and these systems lack Posix functions,
371                    we use a simplified version of gettext])
372         try_gettext="no"
373         ;;
374     i?86-emx-os2 | i?86-*-os2*emx )
375         # OS/2 with the EMX environment
376         ac_cv_have_dev_random=no
377         AC_DEFINE(HAVE_DRIVE_LETTERS)
378         AC_DEFINE(HAVE_DOSISH_SYSTEM)
379         try_gettext="no"
380         ;;
381
382     i?86-*-msdosdjgpp*)
383         # DOS with the DJGPP environment
384         ac_cv_have_dev_random=no
385         AC_DEFINE(HAVE_DRIVE_LETTERS)
386         AC_DEFINE(HAVE_DOSISH_SYSTEM)
387         try_gettext="no"
388         ;;
389
390     *-*-freebsd*)
391        # FreeBSD
392        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
393        LDFLAGS="$LDFLAGS -L/usr/local/lib"
394        ;;
395
396     *-*-hpux*)
397         if test -z "$GCC" ; then
398             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
399         fi
400         ;;
401     *-dec-osf4*)
402         if test -z "$GCC" ; then
403             # Suppress all warnings
404             # to get rid of the unsigned/signed char mismatch warnings.
405             CFLAGS="$CFLAGS -w"
406         fi
407         ;;
408     *-dec-osf5*)
409         if test -z "$GCC" ; then
410             # Use the newer compiler `-msg_disable ptrmismatch' to
411             # get rid of the unsigned/signed char mismatch warnings.
412             # Using this may hide other pointer mismatch warnings, but
413             # it at least lets other warning classes through
414             CFLAGS="$CFLAGS -msg_disable ptrmismatch"
415         fi
416         ;;
417     m68k-atari-mint)
418         ;;
419     *)
420        ;;
421 esac
422
423 AC_SUBST(MPI_OPT_FLAGS)
424 GNUPG_SYS_SYMBOL_UNDERSCORE
425
426 dnl Must check for network library requirements before doing link tests
427 dnl for ldap, for example. If ldap libs are static (or dynamic and without
428 dnl ELF runtime link paths), then link will fail and LDAP support won't
429 dnl be detected.
430
431 AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
432         [NETLIBS="-lnsl $NETLIBS"]))
433 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
434         [NETLIBS="-lsocket $NETLIBS"]))
435
436 dnl Now try for the resolver functions so we can use DNS SRV
437
438 AC_ARG_ENABLE(dns-srv,
439    AC_HELP_STRING([--disable-dns-srv],[disable the use of DNS SRV in HKP]),
440    use_dns_srv=$enableval,use_dns_srv=yes)
441
442 if test x"$try_hkp" = xyes && test x"$use_dns_srv" = xyes ; then
443   _srv_save_libs=$LIBS
444   LIBS=""
445   # the double underscore thing is a glibc-ism?
446   AC_SEARCH_LIBS(res_query,resolv bind,,
447                  AC_SEARCH_LIBS(__res_query,resolv bind,,use_dns_srv=no))
448   AC_SEARCH_LIBS(dn_expand,resolv bind,,
449                  AC_SEARCH_LIBS(__dn_expand,resolv bind,,use_dns_srv=no))
450   AC_SEARCH_LIBS(dn_skipname,resolv bind,,
451                  AC_SEARCH_LIBS(__dn_skipname,resolv bind,,use_dns_srv=no))
452
453   if test x"$use_dns_srv" = xyes ; then
454      AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
455      SRVLIBS=$LIBS
456   else
457      AC_MSG_WARN([Resolver functions not found.  Disabling DNS SRV.])
458   fi
459   LIBS=$_srv_save_libs
460 fi
461
462 AC_SUBST(SRVLIBS)
463
464 # Try and link a LDAP test program to weed out unusable LDAP
465 # libraries.  -lldap [-llber [-lresolv]] is for OpenLDAP.  OpenLDAP in
466 # general is terrible with creating weird dependencies.  If all else
467 # fails, the user can play guess-the-dependency by using something
468 # like ./configure LDAPLIBS="-Lfoo -lbar"
469
470 if test "$try_ldap" = yes ; then
471   for MY_LDAPLIBS in ${LDAPLIBS+"$LDAPLIBS"} "-lldap" "-lldap -llber" "-lldap -llber -lresolv"; do
472     _ldap_save_libs=$LIBS
473     LIBS="$MY_LDAPLIBS $NETLIBS $LIBS"
474
475     AC_MSG_CHECKING([whether LDAP via \"$MY_LDAPLIBS\" is present and sane])
476     AC_TRY_LINK([#include <ldap.h>],[ldap_open("foobar",1234);],
477                 [gnupg_cv_func_ldap_init=yes],[gnupg_cv_func_ldap_init=no])
478     AC_MSG_RESULT([$gnupg_cv_func_ldap_init])
479
480     if test $gnupg_cv_func_ldap_init = no; then
481       AC_MSG_CHECKING([whether I can make LDAP be sane with lber.h])
482       AC_TRY_LINK([#include <lber.h>
483 #include <ldap.h>],[ldap_open("foobar",1234);],
484          [gnupg_cv_func_ldaplber_init=yes],[gnupg_cv_func_ldaplber_init=no])
485       AC_MSG_RESULT([$gnupg_cv_func_ldaplber_init])
486     fi
487
488     if test "$gnupg_cv_func_ldaplber_init" = yes ; then
489        AC_DEFINE(NEED_LBER_H,1,[Define if the LDAP library requires including lber.h before ldap.h])
490     fi
491
492     if test "$gnupg_cv_func_ldap_init" = yes || \
493         test "$gnupg_cv_func_ldaplber_init" = yes ; then
494        LDAPLIBS=$MY_LDAPLIBS
495        GPGKEYS_LDAP="gpgkeys_ldap$EXEEXT"
496
497        AC_MSG_CHECKING([whether LDAP supports ldap_get_option])
498
499        if test "$gnupg_cv_func_ldap_init" = yes ; then
500           AC_TRY_LINK([#include <ldap.h>],
501              [ldap_get_option((void *)0,0,(void *)0);],
502              [gnupg_cv_func_ldap_get_option=yes],
503              [gnupg_cv_func_ldap_get_option=no])
504         else
505           AC_TRY_LINK([#include <lber.h>
506 #include <ldap.h>],[ldap_get_option((void *)0,0,(void *)0);],
507              [gnupg_cv_func_ldap_get_option=yes],
508              [gnupg_cv_func_ldap_get_option=no])
509        fi
510
511        AC_MSG_RESULT([$gnupg_cv_func_ldap_get_option])
512
513        if test "$gnupg_cv_func_ldap_get_option" = yes ; then
514           AC_DEFINE(HAVE_LDAP_GET_OPTION,1,[Define if the LDAP library has ldap_get_option])
515        else
516           AC_MSG_CHECKING([whether LDAP supports ld_errno])
517
518           if test "$gnupg_cv_func_ldap_init" = yes ; then
519             AC_TRY_COMPILE([#include <ldap.h>],
520                [LDAP *ldap; ldap->ld_errno;],
521                [gnupg_cv_func_ldap_ld_errno=yes],
522                [gnupg_cv_func_ldap_ld_errno=no])
523            else
524             AC_TRY_LINK([#include <lber.h>
525 #include <ldap.h>],[LDAP *ldap; ldap->ld_errno;],
526                [gnupg_cv_func_ldap_ld_errno=yes],
527                [gnupg_cv_func_ldap_ld_errno=no])
528           fi
529
530           AC_MSG_RESULT([$gnupg_cv_func_ldap_ld_errno])
531
532           if test "$gnupg_cv_func_ldap_ld_errno" = yes ; then
533              AC_DEFINE(HAVE_LDAP_LD_ERRNO,1,[Define if the LDAP library supports ld_errno])
534           fi
535        fi
536     fi
537
538     LIBS=$_ldap_save_libs
539
540     if test "$GPGKEYS_LDAP" != "" ; then break; fi
541   done
542 fi
543
544 AC_SUBST(GPGKEYS_LDAP)
545 AC_SUBST(LDAPLIBS)
546
547 dnl This isn't necessarily sendmail itself, but anything that gives a
548 dnl sendmail-ish interface to the outside world.  That includes qmail,
549 dnl postfix, etc.  Basically, anything that can handle "sendmail -t".
550
551 if test "$try_mailto" = yes ; then
552   AC_ARG_WITH(mailprog,[  --with-mailprog=NAME    use "NAME -t" for mail transport],,with_mailprog=yes)
553
554   if test "$with_mailprog" = yes ; then
555     AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
556     if test "$ac_cv_path_SENDMAIL" ; then
557       GPGKEYS_MAILTO="gpgkeys_mailto"
558     fi
559   elif test "$with_mailprog" != no ; then
560     AC_MSG_CHECKING([for a mail transport program])
561     AC_SUBST(SENDMAIL,$with_mailprog)
562     AC_MSG_RESULT($with_mailprog)
563     GPGKEYS_MAILTO="gpgkeys_mailto"
564   fi
565 fi
566
567 AC_SUBST(GPGKEYS_MAILTO)
568
569 case "${target}" in
570     *-*-mingw32*)
571         PRINTABLE_OS_NAME="MingW32"
572         ;;
573     *-*-cygwin*)
574         PRINTABLE_OS_NAME="Cygwin"
575         ;;
576     i?86-emx-os2 | i?86-*-os2*emx )
577         PRINTABLE_OS_NAME="OS/2"
578         ;;
579     i?86-*-msdosdjgpp*)
580         PRINTABLE_OS_NAME="MSDOS/DJGPP"
581         try_dynload=no
582         ;;
583     *-linux*)
584         PRINTABLE_OS_NAME="GNU/Linux"
585         ;;
586 dnl let that after linux to avoid gnu-linux problems
587     *-gnu*)
588         PRINTABLE_OS_NAME="GNU/Hurd"
589         ;;
590     *)
591         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
592         ;;
593 esac
594 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
595                    [A human readable text with the name of the OS])
596
597
598 #
599 # 1. Set names of random devices
600 #
601 NAME_OF_DEV_RANDOM="/dev/random"
602 NAME_OF_DEV_URANDOM="/dev/urandom"
603 case "${target}" in
604     *-openbsd*)
605         NAME_OF_DEV_RANDOM="/dev/srandom"
606         NAME_OF_DEV_URANDOM="/dev/urandom"
607         ;;
608 esac
609 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
610                    [defined to the name of the strong random device])
611 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
612                    [defined to the name of the weaker random device])
613 AC_SUBST(MPI_OPT_FLAGS)
614
615
616 dnl Checks for libraries.
617
618 if test "$try_gettext" = yes; then
619   AM_GNU_GETTEXT
620 else
621   USE_NLS=no
622   USE_INCLUDED_LIBINTL=no
623   BUILD_INCLUDED_LIBINTL=no
624   AC_SUBST(USE_NLS)
625   AC_SUBST(USE_INCLUDED_LIBINTL)
626   AC_SUBST(BUILD_INCLUDED_LIBINTL)
627 fi
628
629
630 if test "$try_dynload" = yes ; then
631   AC_CHECK_LIB(dl,dlopen)
632   if test "$ac_cv_lib_dl_dlopen" = "yes"; then
633     AC_DEFINE(USE_DYNAMIC_LINKING,1,
634               [define to enable the use of extensions])
635     AC_DEFINE(HAVE_DL_DLOPEN,1,
636               [Defined when the dlopen function family is available])
637   else
638     AC_CHECK_FUNCS(dlopen)
639     if test "$ac_cv_func_dlopen" = "yes"; then
640       AC_DEFINE(USE_DYNAMIC_LINKING)
641       AC_DEFINE(HAVE_DL_DLOPEN)
642     fi
643   fi
644 else
645   AC_MSG_CHECKING(for dynamic loading)
646   DYNLINK_LDFLAGS=
647   DYNLINK_MOD_CFLAGS=
648   AC_MSG_RESULT(has been disabled)
649 fi
650
651 dnl Checks for header files.
652 AC_HEADER_STDC
653 AC_CHECK_HEADERS(unistd.h langinfo.h termio.h locale.h)
654
655 dnl Checks for typedefs, structures, and compiler characteristics.
656 AC_C_CONST
657 AC_C_INLINE
658 AC_C_VOLATILE
659 AC_TYPE_SIZE_T
660 AC_TYPE_MODE_T
661 AC_TYPE_SIGNAL
662 AC_DECL_SYS_SIGLIST
663
664 GNUPG_CHECK_ENDIAN
665
666 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
667 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
668 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
669 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
670 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
671
672 AC_CHECK_SIZEOF(unsigned short)
673 AC_CHECK_SIZEOF(unsigned int)
674 AC_CHECK_SIZEOF(unsigned long)
675 AC_CHECK_SIZEOF(unsigned long long)
676 AC_CHECK_SIZEOF(uint64_t)
677
678 if test "$ac_cv_sizeof_unsigned_short" = "0" \
679    || test "$ac_cv_sizeof_unsigned_int" = "0" \
680    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
681     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
682 fi
683
684 dnl Do we have any 64-bit data types?
685 if test "$ac_cv_sizeof_unsigned_int" != "8" \
686    && test "$ac_cv_sizeof_unsigned_long" != "8" \
687    && test "$ac_cv_sizeof_unsigned_long_long" != "8" \
688    && test "$ac_cv_sizeof_uint64_t" != "8"; then
689     AC_MSG_WARN([No 64-bit types.  Disabling TIGER/192, SHA-384, and SHA-512])
690 else
691   if test x"$use_tiger192" = xyes ; then
692      AC_SUBST(TIGER_O,tiger.o)
693      AC_DEFINE(USE_TIGER192,1,[Define to include the TIGER/192 digest])
694
695      AC_MSG_CHECKING([whether to enable old-style TIGER/192 digest support])
696      AC_ARG_ENABLE(old-tiger,
697         [  --enable-old-tiger      enable old-style TIGER/192 digest support],
698         old_tiger=$enableval, old_tiger=no)
699      AC_MSG_RESULT($old_tiger)
700      if test "$old_tiger" = yes ; then
701         AC_DEFINE(USE_OLD_TIGER,1,[Define to use the old fake OID for TIGER/192 digest support])
702      fi
703   fi
704   if test x"$use_sha512" = xyes ; then
705      AC_SUBST(SHA512_O,sha512.o)
706      AC_DEFINE(USE_SHA512,1,[Define to include the SHA-384 and SHA-512 digests])
707   fi
708 fi
709
710 dnl Checks for library functions.
711 AC_FUNC_FSEEKO
712 AC_FUNC_VPRINTF
713 AC_FUNC_FORK
714 AC_CHECK_FUNCS(strerror stpcpy strsep strlwr tcgetattr strtoul mmap)
715 AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid)
716 AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit clock_gettime)
717 AC_CHECK_FUNCS(atexit raise getpagesize strftime nl_langinfo setlocale)
718 AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask rand pipe stat)
719 AC_REPLACE_FUNCS(mkdtemp)
720
721 #
722 # check for gethrtime and run a testprogram to see whether
723 # it is broken.  It has been reported that some Solaris and HP UX systems 
724 # raise an SIGILL
725 #
726 AC_CACHE_CHECK([for gethrtime], 
727                [gnupg_cv_func_gethrtime],
728                [AC_TRY_LINK([#include <sys/times.h>],[
729                    hrtime_t tv;
730                    tv = gethrtime();
731                  ],
732                  [gnupg_cv_func_gethrtime=yes],
733                  [gnupg_cv_func_gethrtime=no])
734                ])
735 if test $gnupg_cv_func_gethrtime = yes; then
736      AC_DEFINE([HAVE_GETHRTIME], 1,
737                [Define if you have the `gethrtime(2)' function.])
738      AC_CACHE_CHECK([whether gethrtime is broken], 
739                [gnupg_cv_func_broken_gethrtime],
740                [AC_TRY_RUN([
741                    #include <sys/times.h>
742                    int main () {
743                    hrtime_t tv;
744                    tv = gethrtime(); 
745                  }
746                  ],
747                  [gnupg_cv_func_broken_gethrtime=no],
748                  [gnupg_cv_func_broken_gethrtime=yes],
749                  [gnupg_cv_func_broken_gethrtime=assume-no])
750                 ])
751     if test $gnupg_cv_func_broken_gethrtime = yes; then
752       AC_DEFINE([HAVE_BROKEN_GETHRTIME], 1,
753       [Define if `gethrtime(2)' does not work correctly i.e. issues a SIGILL.])
754     fi
755 fi
756      
757
758 GNUPG_CHECK_MLOCK
759 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
760
761 dnl
762 dnl Check whether we can use Linux capabilities as requested
763 dnl
764 if test "$use_capabilities" = "yes" ; then
765 use_capabilities=no
766 AC_CHECK_HEADERS(sys/capability.h)
767 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
768   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
769   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
770      AC_DEFINE(USE_CAPABILITIES,1,
771                [define if capabilities should be used])
772      AC_SUBST(CAPLIBS,"-lcap")
773      use_capabilities=yes
774   fi
775 fi
776 if test "$use_capabilities" = "no" ; then
777     AC_MSG_WARN([[
778 ***
779 *** The use of capabilities on this system is not possible.
780 *** You need a recent Linux kernel and some patches:
781 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
782 ***   fcap-module-990613.tar.gz     (kernel module)
783 ***   libcap-1.92.tar.gz            (user mode library and utilities)
784 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
785 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
786 ***]])
787 fi
788 fi
789
790
791 GNUPG_CHECK_IPC
792 if test "$ac_cv_header_sys_shm_h" = "yes"; then
793   AC_DEFINE(USE_SHM_COPROCESSING,1,
794             [define if the shared memory interface should be made available])
795 fi
796
797 dnl
798 dnl check whether we have a random device
799 dnl
800 if test "$try_dev_random" = yes ; then
801     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
802     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
803       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
804     if test "$ac_cv_have_dev_random" = yes; then
805         AC_DEFINE(HAVE_DEV_RANDOM,1,
806                  [defined if the system supports a random device] )
807     fi
808 else
809     AC_MSG_CHECKING(for random device)
810     ac_cv_have_dev_random=no
811     AC_MSG_RESULT(has been disabled)
812 fi
813
814
815 dnl
816 dnl Figure out the default random module.
817 dnl
818 random_modules=""
819 if test "$use_static_rnd" = default; then
820      if test "$ac_cv_have_dev_random" = yes; then
821         random_modules="rndlinux"
822      else
823          case "${target}" in
824             *-*-mingw32*|*-*-cygwin*)
825                 random_modules="rndw32"
826                 ;;
827             i?86-emx-os2|i?86-*-os2*emx)
828                 random_modules="rndos2"
829                 ;;
830             m68k-atari-mint)
831                 random_modules="rndatari"
832                 ;;
833             i?86-*-msdosdjgpp*)
834                 :
835                 ;;
836             *)
837                 random_modules="rndlinux rndegd rndunix"
838                 AC_DEFINE(USE_ALL_RANDOM_MODULES, 1, 
839                           [Allow to select random modules at runtime.])
840                 ;;
841          esac
842      fi
843 else
844   if test "$use_static_rnd" = auto; then
845      random_modules="rndlinux rndegd rndunix"
846      AC_DEFINE(USE_ALL_RANDOM_MODULES, 1)
847   else
848      random_modules="rnd$use_static_rnd";
849   fi
850 fi
851
852 if test -z "$random_modules"; then
853    AC_MSG_ERROR(no random module available)
854 fi
855 print_egd_warning=no
856 for rndmod in $random_modules "" ; do
857   case "$rndmod" in
858     rndlinux)
859          AC_DEFINE(USE_RNDLINUX,1, 
860                   [Defined if the /dev/random based RNG should be used.])
861          ;;
862     rndunix)
863          AC_DEFINE(USE_RNDUNIX,1, 
864                   [Defined if the default Unix RNG should be used.])
865          print_egd_warning=yes
866           ;;
867     rndegd)
868          AC_DEFINE(USE_RNDEGD,1, 
869                   [Defined if the EGD based RNG should be used.])
870          EGDLIBS=$NETLIBS
871          AC_SUBST(EGDLIBS)
872          ;;
873     rndw32)
874          AC_DEFINE(USE_RNDW32,1, 
875                   [Defined if the Windows specific RNG should be used.])
876         ;;
877    esac
878 done
879
880 dnl setup assembler stuff
881 AC_MSG_CHECKING(for mpi assembler functions)
882 if test -f $srcdir/mpi/config.links ; then
883     . $srcdir/mpi/config.links
884     AC_CONFIG_LINKS("$mpi_ln_list")
885     ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
886     ac_cv_mpi_sflags="$mpi_sflags"
887     ac_cv_mpi_config_done="yes"
888     AC_MSG_RESULT(done)
889 else
890     AC_MSG_RESULT(failed)
891     AC_MSG_ERROR([mpi/config.links missing!])
892 fi
893 MPI_EXTRA_ASM_OBJS=""
894 show_extraasm=""
895 if test "$ac_cv_mpi_extra_asm_modules" != ""; then
896 for i in $ac_cv_mpi_extra_asm_modules; do
897     show_extraasm="$show_extraasm $i"
898     MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
899 done
900 fi
901 AC_SUBST(MPI_EXTRA_ASM_OBJS)
902 MPI_SFLAGS="$ac_cv_mpi_sflags"
903 AC_SUBST(MPI_SFLAGS)
904
905 # Sanity check regex.  Tests adapted from mutt.
906
907 AC_MSG_CHECKING([whether regular expression support is requested])
908 AC_ARG_ENABLE(regex,
909 [  --disable-regex         do not handle regular expressions in trust sigs],
910      use_regex=$enableval, use_regex=yes)
911 AC_MSG_RESULT($use_regex)
912
913 if test "$use_regex" = yes ; then
914   AC_MSG_CHECKING([whether the included regex lib is requested])
915   AC_ARG_WITH(included-regex,
916       [  --with-included-regex   use the included GNU regex library],
917       [gnupg_cv_included_regex=yes],[gnupg_cv_included_regex=no])
918   AC_MSG_RESULT($gnupg_cv_included_regex)
919
920   if test $gnupg_cv_included_regex = no ; then
921      # Does the system have regex functions at all?
922      AC_CHECK_FUNC(regcomp,gnupg_cv_included_regex=no,
923                            gnupg_cv_included_regex=yes)
924   fi
925
926   if test $gnupg_cv_included_regex = no ; then
927      AC_CACHE_CHECK([whether your system's regexp library is broken],
928        [gnupg_cv_regex_broken],
929        AC_TRY_RUN([
930 #include <unistd.h>
931 #include <regex.h>
932 main() { regex_t blah ; regmatch_t p; p.rm_eo = p.rm_eo; return regcomp(&blah, "foo.*bar", REG_NOSUB) || regexec (&blah, "foobar", 0, NULL, 0); }],
933        gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
934
935      if test $gnupg_cv_regex_broken = yes ; then
936       AC_MSG_WARN(your regex is broken - using the included GNU regex instead.)
937       gnupg_cv_included_regex=yes
938      fi
939   fi
940
941   if test $gnupg_cv_included_regex = yes; then
942      AC_DEFINE(USE_GNU_REGEX,1,[ Define if you want to use the included regex lib ])
943      AC_SUBST(REGEX_O,regex.o)
944   fi
945 else
946
947   AC_DEFINE(DISABLE_REGEX,1,[ Define to disable regular expression support ])
948 fi
949
950 dnl Do we have zlib? Must do it here because Solaris failed
951 dnl when compiling a conftest (due to the "-lz" from LIBS).
952 use_local_zlib=yes
953 if test "$g10_force_zlib" = "yes"; then
954   :
955 else
956   _cppflags="${CPPFLAGS}"
957   _ldflags="${LDFLAGS}"
958
959   AC_ARG_WITH(zlib,
960   [  --with-zlib=DIR         use libz in DIR],[
961     if test -d "$withval"; then
962       CPPFLAGS="${CPPFLAGS} -I$withval/include"
963       LDFLAGS="${LDFLAGS} -L$withval/lib"
964     fi
965   ])
966
967   AC_CHECK_HEADER(zlib.h,
968       AC_CHECK_LIB(z, deflateInit2_,
969        use_local_zlib=no
970        LIBS="$LIBS -lz",
971        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
972        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
973 fi
974  
975 if test "$use_local_zlib" = yes ; then
976     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
977     AC_CONFIG_LINKS(zlib.h:zlib/zlib.h zconf.h:zlib/zconf.h )
978     ZLIBS="../zlib/libzlib.a"
979 else
980     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, false)
981     ZLIBS=
982 fi
983 AC_SUBST(ZLIBS)
984
985
986 # Allow users to append something to the version string without
987 # flagging it as development version.  The user version parts is
988 # considered everything after a dash. 
989 if test "$development_version" != yes; then
990   changequote(,)dnl
991   tmp_pat='[a-zA-Z]'
992   changequote([,])dnl
993   if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
994     development_version=yes
995   fi
996 fi
997 if test "$development_version" = yes; then
998     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
999             [Defined if this is not a regular release])
1000 fi
1001
1002 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
1003
1004 GNUPG_CHECK_GNUMAKE
1005
1006 # add some extra libs here so that previous tests don't fail for
1007 # mysterious reasons - the final link step should bail out. 
1008 case "${target}" in
1009     *-*-mingw32*)
1010         LIBS="$LIBS -lwsock32"
1011         ;;
1012     *)
1013        ;;
1014 esac
1015
1016
1017 if test "$GCC" = yes; then
1018     if test "$USE_MAINTAINER_MODE" = "yes"; then
1019         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
1020     else
1021         CFLAGS="$CFLAGS -Wall"
1022     fi
1023 fi
1024
1025 AC_SUBST(NETLIBS)
1026
1027
1028 if test "$print_egd_warning" = yes; then
1029   AC_MSG_WARN([[
1030 ***
1031 *** The performance of the UNIX random gatherer module is not very good
1032 *** and it does not keep the entropy pool over multiple invocations of
1033 *** GnuPG.  The suggested way to overcome this problem is to use the
1034 ***
1035 ***               Entropy Gathering Daemon (EGD)
1036 ***
1037 *** which provides a entropy source for the whole system.  It is written
1038 *** in Perl and available at the GnuPG FTP servers.  For more information
1039 *** consult the GnuPG webpages:
1040 ***
1041 ***           http://www.gnupg.org/download.html#egd
1042 ***
1043 *** You may want to run ./configure with --enable-static-rnd=egd to use it.
1044 ***]])
1045 fi
1046
1047 # Note the \\\\ for backslashes.  Autoconf eats one layer, leaving \\
1048
1049 AC_CONFIG_COMMANDS(g10defs.h,[[
1050 cat >g10defs.tmp <<G10EOF
1051 /* Generated automatically by configure */
1052 #ifdef HAVE_DRIVE_LETTERS
1053   #define G10_LOCALEDIR     "c:\\\\lib\\\\gnupg\\\\locale"
1054   #define GNUPG_LIBDIR      "c:\\\\lib\\\\gnupg"
1055   #define GNUPG_LIBEXECDIR  "c:\\\\lib\\\\gnupg"
1056   #define GNUPG_DATADIR     "c:\\\\lib\\\\gnupg"
1057   #define GNUPG_HOMEDIR     "c:\\\\gnupg"
1058 #else
1059   #define G10_LOCALEDIR     "${datadir}/locale"
1060   #define GNUPG_LIBDIR      "${libdir}/gnupg"
1061   #define GNUPG_DATADIR     "${datadir}/gnupg"
1062   #ifdef __VMS
1063     #define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
1064   #else
1065     #define GNUPG_HOMEDIR "~/.gnupg" 
1066   #endif
1067 #endif
1068 /* those are here to be redefined by handcrafted g10defs.h.
1069    Please note that the string version must not contain more
1070    than one character because the using code assumes strlen()==1 */
1071 #ifdef HAVE_DOSISH_SYSTEM
1072 #define DIRSEP_C '\\\\'
1073 #define EXTSEP_C '.'
1074 #define DIRSEP_S "\\\\"
1075 #define EXTSEP_S "."
1076 #else
1077 #define DIRSEP_C '/'
1078 #define EXTSEP_C '.'
1079 #define DIRSEP_S "/"
1080 #define EXTSEP_S "."
1081 #endif
1082 G10EOF
1083 cat mpi/mpi-asm-defs.h >>g10defs.tmp 
1084 if cmp -s g10defs.h g10defs.tmp 2>/dev/null; then
1085     echo "g10defs.h is unchanged"
1086     rm -f g10defs.tmp
1087 else
1088     rm -f g10defs.h
1089     mv g10defs.tmp g10defs.h
1090     echo "g10defs.h created"
1091 fi
1092 ]],[[
1093 prefix=$prefix
1094 exec_prefix=$exec_prefix
1095 libdir=$libdir
1096 libexecdir=$libexecdir
1097 datadir=$datadir
1098 DATADIRNAME=$DATADIRNAME
1099 ]])
1100
1101
1102 AC_CONFIG_FILES([
1103 Makefile
1104 intl/Makefile
1105 po/Makefile.in
1106 util/Makefile
1107 mpi/Makefile
1108 cipher/Makefile
1109 g10/Makefile
1110 keyserver/Makefile
1111 keyserver/gpgkeys_mailto
1112 keyserver/gpgkeys_test
1113 doc/Makefile
1114 tools/Makefile
1115 zlib/Makefile
1116 checks/Makefile
1117 ])
1118 AC_OUTPUT
1119
1120 # Give some feedback
1121 echo
1122 echo   "                Configured for: $PRINTABLE_OS_NAME ($target)"
1123 if test -n "$show_extraasm"; then
1124   echo "  Extra cpu specific functions:$show_extraasm"
1125 fi
1126 echo