.
[gnupg.git] / acinclude.m4
1 dnl macros to configure g10
2
3
4 dnl WK_MSG_PRINT(STRING)
5 dnl print a message
6 dnl
7 define(WK_MSG_PRINT,
8   [ echo $ac_n "$1"" $ac_c" 1>&AC_FD_MSG
9   ])
10
11
12 dnl WK_CHECK_TYPEDEF(TYPE, HAVE_NAME)
13 dnl Check whether a typedef exists and create a #define $2 if it exists
14 dnl
15 AC_DEFUN(WK_CHECK_TYPEDEF,
16   [ AC_MSG_CHECKING(for $1 typedef)
17     AC_CACHE_VAL(wk_cv_typedef_$1,
18     [AC_TRY_COMPILE([#include <stdlib.h>
19     #include <sys/types.h>], [
20     #undef $1
21     int a = sizeof($1);
22     ], wk_cv_typedef_$1=yes, wk_cv_typedef_$1=no )])
23     AC_MSG_RESULT($wk_cv_typedef_$1)
24     if test "$wk_cv_typedef_$1" = yes; then
25         AC_DEFINE($2)
26     fi
27   ])
28
29
30
31 dnl WK_LINK_FILES( SRC, DEST )
32 dnl same as AC_LINK_FILES, but collect the files to link in
33 dnl some special variables and do the link
34 dnl when WK_DO_LINK_FILES is called
35 dnl This is a workaround for AC_LINK_FILES, because it does not work
36 dnl correct when using a caching scheme
37 dnl
38 define(WK_LINK_FILES,
39   [ if test "x$wk_link_files_src" = "x"; then
40         wk_link_files_src="$1"
41         wk_link_files_dst="$2"
42     else
43         wk_link_files_src="$wk_link_files_src $1"
44         wk_link_files_dst="$wk_link_files_dst $2"
45     fi
46   ])
47 define(WK_DO_LINK_FILES,
48   [ AC_LINK_FILES( $wk_link_files_src, $wk_link_files_dst )
49   ])
50
51
52 dnl WK_CHECK_ENDIAN
53 dnl define either LITTLE_ENDIAN_HOST or BIG_ENDIAN_HOST
54 dnl
55 define(WK_CHECK_ENDIAN,
56   [ if test "$cross_compiling" = yes; then
57         AC_MSG_WARN(cross compiling; assuming little endianess)
58     fi
59     AC_MSG_CHECKING(endianess)
60     AC_CACHE_VAL(wk_cv_c_endian,
61       [ wk_cv_c_endian=unknown
62         # See if sys/param.h defines the BYTE_ORDER macro.
63         AC_TRY_COMPILE([#include <sys/types.h>
64         #include <sys/param.h>], [
65         #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
66          bogus endian macros
67         #endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
68         AC_TRY_COMPILE([#include <sys/types.h>
69         #include <sys/param.h>], [
70         #if BYTE_ORDER != BIG_ENDIAN
71          not big endian
72         #endif], wk_cv_c_endian=big, wk_cv_c_endian=little)])
73         if test "$wk_cv_c_endian" = unknown; then
74             AC_TRY_RUN([main () {
75               /* Are we little or big endian?  From Harbison&Steele.  */
76               union
77               {
78                 long l;
79                 char c[sizeof (long)];
80               } u;
81               u.l = 1;
82               exit (u.c[sizeof (long) - 1] == 1);
83               }],
84               wk_cv_c_endian=little,
85               wk_cv_c_endian=big,
86               wk_cv_c_endian=little
87             )
88         fi
89       ])
90     AC_MSG_RESULT([$wk_cv_c_endian])
91     if test "$wk_cv_c_endian" = little; then
92       AC_DEFINE(LITTLE_ENDIAN_HOST)
93     else
94       AC_DEFINE(BIG_ENDIAN_HOST)
95     fi
96   ])
97
98 dnl WK_CHECK_CACHE
99 dnl
100 define(WK_CHECK_CACHE,
101   [ AC_MSG_CHECKING(cached information)
102     wk_hostcheck="$target"
103     AC_CACHE_VAL(wk_cv_hostcheck, [ wk_cv_hostcheck="$wk_hostcheck" ])
104     if test "$wk_cv_hostcheck" != "$wk_hostcheck"; then
105         AC_MSG_RESULT(changed)
106         AC_MSG_WARN(config.cache exists!)
107         AC_MSG_ERROR(you must do 'make distclean' first to compile for
108                  different target or different parameters.)
109     else
110         AC_MSG_RESULT(ok)
111     fi
112   ])
113
114
115
116
117 ######################################################################
118 # Check for SysV IPC  (from GIMP)
119 ######################################################################
120 dnl WK_CHECK_IPC
121 dnl
122 define(WK_CHECK_IPC,
123   [ AC_CHECK_HEADERS(sys/ipc.h sys/shm.h)
124     if test "$ac_cv_header_sys_shm_h" = "yes"; then
125       AC_MSG_CHECKING(whether shmctl IPC_RMID allowes subsequent attaches)
126       AC_TRY_RUN([
127             #include <sys/types.h>
128             #include <sys/ipc.h>
129             #include <sys/shm.h>
130             int main()
131             {
132               int id;
133               char *shmaddr;
134             id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0777);
135             if (id == -1)
136               exit (2);
137               shmaddr = shmat (id, 0, 0);
138               shmctl (id, IPC_RMID, 0);
139               if ((char*) shmat (id, 0, 0) == (char*) -1)
140               {
141                 shmdt (shmaddr);
142                 exit (1);
143               }
144               shmdt (shmaddr);
145               shmdt (shmaddr);
146               exit (0);
147             }
148         ],
149         AC_DEFINE(IPC_RMID_DEFERRED_RELEASE)
150         AC_MSG_RESULT(yes),
151         AC_MSG_RESULT(no),
152         AC_MSG_RESULT(assuming no))
153     fi
154   ])
155
156
157 ######################################################################
158 # Check whether mlock is broken (hpux 10.20 raises a SIGBUS if mlock
159 # is not called from uid 0 (not tested whether uid 0 works)
160 ######################################################################
161 dnl WK_CHECK_MLOCK
162 dnl
163 define(WK_CHECK_MLOCK,
164   [ AC_CHECK_FUNCS(mlock)
165     if test "$ac_cv_func_mlock" = "yes"; then
166         AC_MSG_CHECKING(whether mlock is broken)
167           AC_TRY_RUN([
168                 #include <unistd.h>
169                 #include <errno.h>
170                 #include <sys/mman.h>
171                 #include <sys/types.h>
172                 #include <fcntl.h>
173
174                 int main()
175                 {
176                     char *pool;
177                     int err;
178                     long int pgsize = getpagesize();
179
180                     pool = malloc( 4096 + pgsize );
181                     if( !pool )
182                         return 2;
183                     pool += (pgsize - ((long int)pool % pgsize));
184
185                     err = mlock( pool, 4096 );
186                     if( !err || errno == EPERM )
187                         return 0; /* okay */
188
189                     return 1;  /* hmmm */
190                 }
191
192             ],
193             AC_MSG_RESULT(no),
194             AC_DEFINE(HAVE_BROKEN_MLOCK)
195             AC_MSG_RESULT(yes),
196             AC_MSG_RESULT(assuming no))
197     fi
198   ])
199
200
201 ######################################################################
202 # progtest.m4 from gettext 0.35
203 ######################################################################
204 # Search path for a program which passes the given test.
205 # Ulrich Drepper <drepper@cygnus.com>, 1996.
206 #
207 # This file can be copied and used freely without restrictions.  It can
208 # be used in projects which are not available under the GNU Public License
209 # but which still want to provide support for the GNU gettext functionality.
210 # Please note that the actual code is *not* freely available.
211
212 # serial 1
213
214 dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
215 dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
216 AC_DEFUN(AM_PATH_PROG_WITH_TEST,
217 [# Extract the first word of "$2", so it can be a program name with args.
218 set dummy $2; ac_word=[$]2
219 AC_MSG_CHECKING([for $ac_word])
220 AC_CACHE_VAL(ac_cv_path_$1,
221 [case "[$]$1" in
222   /*)
223   ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
224   ;;
225   *)
226   IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
227   for ac_dir in ifelse([$5], , $PATH, [$5]); do
228     test -z "$ac_dir" && ac_dir=.
229     if test -f $ac_dir/$ac_word; then
230       if [$3]; then
231         ac_cv_path_$1="$ac_dir/$ac_word"
232         break
233       fi
234     fi
235   done
236   IFS="$ac_save_ifs"
237 dnl If no 4th arg is given, leave the cache variable unset,
238 dnl so AC_PATH_PROGS will keep looking.
239 ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
240 ])dnl
241   ;;
242 esac])dnl
243 $1="$ac_cv_path_$1"
244 if test -n "[$]$1"; then
245   AC_MSG_RESULT([$]$1)
246 else
247   AC_MSG_RESULT(no)
248 fi
249 AC_SUBST($1)dnl
250 ])
251
252 ######################################################################
253 # lcmessage.m4 from gettext 0.35
254 ######################################################################
255 # Check whether LC_MESSAGES is available in <locale.h>.
256 # Ulrich Drepper <drepper@cygnus.com>, 1995.
257 #
258 # This file can be copied and used freely without restrictions.  It can
259 # be used in projects which are not available under the GNU Public License
260 # but which still want to provide support for the GNU gettext functionality.
261 # Please note that the actual code is *not* freely available.
262
263 # serial 1
264
265 AC_DEFUN(AM_LC_MESSAGES,
266   [if test $ac_cv_header_locale_h = yes; then
267     AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
268       [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
269        am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
270     if test $am_cv_val_LC_MESSAGES = yes; then
271       AC_DEFINE(HAVE_LC_MESSAGES)
272     fi
273   fi])
274
275 ######################################################################
276 # gettext.m4 from gettext 0.35
277 ######################################################################
278 # Macro to add for using GNU gettext.
279 # Ulrich Drepper <drepper@cygnus.com>, 1995.
280 #
281 # This file can be copied and used freely without restrictions.  It can
282 # be used in projects which are not available under the GNU Public License
283 # but which still want to provide support for the GNU gettext functionality.
284 # Please note that the actual code is *not* freely available.
285
286 # serial 5
287
288 AC_DEFUN(AM_WITH_NLS,
289   [AC_MSG_CHECKING([whether NLS is requested])
290     dnl Default is enabled NLS
291     AC_ARG_ENABLE(nls,
292       [  --disable-nls           do not use Native Language Support],
293       USE_NLS=$enableval, USE_NLS=yes)
294     AC_MSG_RESULT($USE_NLS)
295     AC_SUBST(USE_NLS)
296
297     USE_INCLUDED_LIBINTL=no
298
299     dnl If we use NLS figure out what method
300     if test "$USE_NLS" = "yes"; then
301       AC_DEFINE(ENABLE_NLS)
302       AC_MSG_CHECKING([whether included gettext is requested])
303       AC_ARG_WITH(included-gettext,
304         [  --with-included-gettext use the GNU gettext library included here],
305         nls_cv_force_use_gnu_gettext=$withval,
306         nls_cv_force_use_gnu_gettext=no)
307       AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
308
309       nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
310       if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
311         dnl User does not insist on using GNU NLS library.  Figure out what
312         dnl to use.  If gettext or catgets are available (in this order) we
313         dnl use this.  Else we have to fall back to GNU NLS library.
314         dnl catgets is only used if permitted by option --with-catgets.
315         nls_cv_header_intl=
316         nls_cv_header_libgt=
317         CATOBJEXT=NONE
318
319         AC_CHECK_HEADER(libintl.h,
320           [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
321             [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
322                gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
323
324            if test "$gt_cv_func_gettext_libc" != "yes"; then
325              AC_CHECK_LIB(intl, bindtextdomain,
326                [AC_CACHE_CHECK([for gettext in libintl],
327                  gt_cv_func_gettext_libintl,
328                  [AC_CHECK_LIB(intl, gettext,
329                   gt_cv_func_gettext_libintl=yes,
330                   gt_cv_func_gettext_libintl=no)],
331                  gt_cv_func_gettext_libintl=no)])
332            fi
333
334            if test "$gt_cv_func_gettext_libc" = "yes" \
335               || test "$gt_cv_func_gettext_libintl" = "yes"; then
336               AC_DEFINE(HAVE_GETTEXT)
337               AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
338                 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
339               if test "$MSGFMT" != "no"; then
340                 AC_CHECK_FUNCS(dcgettext)
341                 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
342                 AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
343                   [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
344                 AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
345                                return _nl_msg_cat_cntr],
346                   [CATOBJEXT=.gmo
347                    DATADIRNAME=share],
348                   [CATOBJEXT=.mo
349                    DATADIRNAME=lib])
350                 INSTOBJEXT=.mo
351               fi
352             fi
353         ])
354
355         if test "$CATOBJEXT" = "NONE"; then
356           AC_MSG_CHECKING([whether catgets can be used])
357           AC_ARG_WITH(catgets,
358             [  --with-catgets          use catgets functions if available],
359             nls_cv_use_catgets=$withval, nls_cv_use_catgets=no)
360           AC_MSG_RESULT($nls_cv_use_catgets)
361
362           if test "$nls_cv_use_catgets" = "yes"; then
363             dnl No gettext in C library.  Try catgets next.
364             AC_CHECK_LIB(i, main)
365             AC_CHECK_FUNC(catgets,
366               [AC_DEFINE(HAVE_CATGETS)
367                INTLOBJS="\$(CATOBJS)"
368                AC_PATH_PROG(GENCAT, gencat, no)dnl
369                if test "$GENCAT" != "no"; then
370                  AC_PATH_PROG(GMSGFMT, gmsgfmt, no)
371                  if test "$GMSGFMT" = "no"; then
372                    AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt,
373                     [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)
374                  fi
375                  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
376                    [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
377                  USE_INCLUDED_LIBINTL=yes
378                  CATOBJEXT=.cat
379                  INSTOBJEXT=.cat
380                  DATADIRNAME=lib
381                  INTLDEPS='$(top_builddir)/intl/libintl.a'
382                  INTLLIBS=$INTLDEPS
383                  LIBS=`echo $LIBS | sed -e 's/-lintl//'`
384                  nls_cv_header_intl=intl/libintl.h
385                  nls_cv_header_libgt=intl/libgettext.h
386                fi])
387           fi
388         fi
389
390         if test "$CATOBJEXT" = "NONE"; then
391           dnl Neither gettext nor catgets in included in the C library.
392           dnl Fall back on GNU gettext library.
393           nls_cv_use_gnu_gettext=yes
394         fi
395       fi
396
397       if test "$nls_cv_use_gnu_gettext" = "yes"; then
398         dnl Mark actions used to generate GNU NLS library.
399         INTLOBJS="\$(GETTOBJS)"
400         AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
401           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
402         AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
403         AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
404           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
405         AC_SUBST(MSGFMT)
406         USE_INCLUDED_LIBINTL=yes
407         CATOBJEXT=.gmo
408         INSTOBJEXT=.mo
409         DATADIRNAME=share
410         INTLDEPS='$(top_builddir)/intl/libintl.a'
411         INTLLIBS=$INTLDEPS
412         LIBS=`echo $LIBS | sed -e 's/-lintl//'`
413         nls_cv_header_intl=intl/libintl.h
414         nls_cv_header_libgt=intl/libgettext.h
415       fi
416
417       dnl Test whether we really found GNU xgettext.
418       if test "$XGETTEXT" != ":"; then
419         dnl If it is no GNU xgettext we define it as : so that the
420         dnl Makefiles still can work.
421         if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
422           : ;
423         else
424           AC_MSG_RESULT(
425             [found xgettext program is not GNU xgettext; ignore it])
426           XGETTEXT=":"
427         fi
428       fi
429
430       # We need to process the po/ directory.
431       POSUB=po
432     else
433       DATADIRNAME=share
434       nls_cv_header_intl=intl/libintl.h
435       nls_cv_header_libgt=intl/libgettext.h
436     fi
437     AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
438     AC_OUTPUT_COMMANDS(
439      [case "$CONFIG_FILES" in *po/Makefile.in*)
440         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
441       esac])
442
443
444     # If this is used in GNU gettext we have to set USE_NLS to `yes'
445     # because some of the sources are only built for this goal.
446     if test "$PACKAGE" = gettext; then
447       USE_NLS=yes
448       USE_INCLUDED_LIBINTL=yes
449     fi
450
451     dnl These rules are solely for the distribution goal.  While doing this
452     dnl we only have to keep exactly one list of the available catalogs
453     dnl in configure.in.
454     for lang in $ALL_LINGUAS; do
455       GMOFILES="$GMOFILES $lang.gmo"
456       POFILES="$POFILES $lang.po"
457     done
458
459     dnl Make all variables we use known to autoconf.
460     AC_SUBST(USE_INCLUDED_LIBINTL)
461     AC_SUBST(CATALOGS)
462     AC_SUBST(CATOBJEXT)
463     AC_SUBST(DATADIRNAME)
464     AC_SUBST(GMOFILES)
465     AC_SUBST(INSTOBJEXT)
466     AC_SUBST(INTLDEPS)
467     AC_SUBST(INTLLIBS)
468     AC_SUBST(INTLOBJS)
469     AC_SUBST(POFILES)
470     AC_SUBST(POSUB)
471   ])
472
473 AC_DEFUN(AM_GNU_GETTEXT,
474   [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
475    AC_REQUIRE([AC_PROG_CC])dnl
476    AC_REQUIRE([AC_PROG_RANLIB])dnl
477    AC_REQUIRE([AC_ISC_POSIX])dnl
478    AC_REQUIRE([AC_HEADER_STDC])dnl
479    AC_REQUIRE([AC_C_CONST])dnl
480    AC_REQUIRE([AC_C_INLINE])dnl
481    AC_REQUIRE([AC_TYPE_OFF_T])dnl
482    AC_REQUIRE([AC_TYPE_SIZE_T])dnl
483    AC_REQUIRE([AC_FUNC_ALLOCA])dnl
484    AC_REQUIRE([AC_FUNC_MMAP])dnl
485
486    AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
487 unistd.h sys/param.h])
488    AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
489 strdup __argz_count __argz_stringify __argz_next])
490
491    if test "${ac_cv_func_stpcpy+set}" != "set"; then
492      AC_CHECK_FUNCS(stpcpy)
493    fi
494    if test "${ac_cv_func_stpcpy}" = "yes"; then
495      AC_DEFINE(HAVE_STPCPY)
496    fi
497
498    AM_LC_MESSAGES
499    AM_WITH_NLS
500
501    if test "x$CATOBJEXT" != "x"; then
502      if test "x$ALL_LINGUAS" = "x"; then
503        LINGUAS=
504      else
505        AC_MSG_CHECKING(for catalogs to be installed)
506        NEW_LINGUAS=
507        for lang in ${LINGUAS=$ALL_LINGUAS}; do
508          case "$ALL_LINGUAS" in
509           *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
510          esac
511        done
512        LINGUAS=$NEW_LINGUAS
513        AC_MSG_RESULT($LINGUAS)
514      fi
515
516      dnl Construct list of names of catalog files to be constructed.
517      if test -n "$LINGUAS"; then
518        for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
519      fi
520    fi
521
522    dnl The reference to <locale.h> in the installed <libintl.h> file
523    dnl must be resolved because we cannot expect the users of this
524    dnl to define HAVE_LOCALE_H.
525    if test $ac_cv_header_locale_h = yes; then
526      INCLUDE_LOCALE_H="#include <locale.h>"
527    else
528      INCLUDE_LOCALE_H="\
529 /* The system does not provide the header <locale.h>.  Take care yourself.  */"
530    fi
531    AC_SUBST(INCLUDE_LOCALE_H)
532
533    dnl Determine which catalog format we have (if any is needed)
534    dnl For now we know about two different formats:
535    dnl   Linux libc-5 and the normal X/Open format
536    test -d intl || mkdir intl
537    if test "$CATOBJEXT" = ".cat"; then
538      AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
539
540      dnl Transform the SED scripts while copying because some dumb SEDs
541      dnl cannot handle comments.
542      sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed
543    fi
544    dnl po2tbl.sed is always needed.
545    sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
546      $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed
547
548    dnl In the intl/Makefile.in we have a special dependency which makes
549    dnl only sense for gettext.  We comment this out for non-gettext
550    dnl packages.
551    if test "$PACKAGE" = "gettext"; then
552      GT_NO="#NO#"
553      GT_YES=
554    else
555      GT_NO=
556      GT_YES="#YES#"
557    fi
558    AC_SUBST(GT_NO)
559    AC_SUBST(GT_YES)
560
561    dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
562    dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
563    dnl Try to locate is.
564    MKINSTALLDIRS=
565    if test -n "$ac_aux_dir"; then
566      MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
567    fi
568    if test -z "$MKINSTALLDIRS"; then
569      MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
570    fi
571    AC_SUBST(MKINSTALLDIRS)
572
573    dnl *** For now the libtool support in intl/Makefile is not for real.
574    l=
575    AC_SUBST(l)
576
577    dnl Generate list of files to be processed by xgettext which will
578    dnl be included in po/Makefile.
579    test -d po || mkdir po
580    if test "x$srcdir" != "x."; then
581      if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
582        posrcprefix="$srcdir/"
583      else
584        posrcprefix="../$srcdir/"
585      fi
586    else
587      posrcprefix="../"
588    fi
589    rm -f po/POTFILES
590    sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
591         < $srcdir/po/POTFILES.in > po/POTFILES
592   ])
593