tagging release
[dasher.git] / m4 / intltool.m4
blob7a5b4c9232cee1811ff20daad8e20349fa60c861
1 ## intltool.m4 - Configure intltool for the target system. -*-Shell-script-*-
2 ## Copyright (C) 2001 Eazel, Inc.
3 ## Author: Maciej Stachowiak <mjs@noisehavoc.org>
4 ##         Kenneth Christiansen <kenneth@gnu.org>
5 ##
6 ## This program is free software; you can redistribute it and/or modify
7 ## it under the terms of the GNU General Public License as published by
8 ## the Free Software Foundation; either version 2 of the License, or
9 ## (at your option) any later version.
11 ## This program is distributed in the hope that it will be useful, but
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 ## General Public License for more details.
16 ## You should have received a copy of the GNU General Public License
17 ## along with this program; if not, write to the Free Software
18 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 ## As a special exception to the GNU General Public License, if you
21 ## distribute this file as part of a program that contains a
22 ## configuration script generated by Autoconf, you may include it under
23 ## the same distribution terms that you use for the rest of that program.
25 dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
26 # serial 2 IT_PROG_INTLTOOL
27 AC_DEFUN([IT_PROG_INTLTOOL],
28 [AC_PREREQ([2.50])dnl
30 case "$am__api_version" in
31     1.[01234])
32         AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool])
33     ;;
34     *)
35     ;;
36 esac
38 if test -n "$1"; then
39     AC_MSG_CHECKING(for intltool >= $1)
41     INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 100 + $ 2; }'`
42     INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { print $ 2; }' ${ac_aux_dir}/intltool-update.in`
43     [INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 100 + VERSION[2];}' ${ac_aux_dir}/intltool-update.in`
44     ]
45     AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
46     test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
47         AC_MSG_ERROR([Your intltool is too old.  You need intltool $1 or later.])
50   INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
51 INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
52      INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
53      INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
54       INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@'
55      INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
56    INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
57     INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
58 INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
59        INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
60       INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
61       INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@' 
62       INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
63       INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
64     INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
65   INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
66     INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
67     INTLTOOL_SERVICE_RULE='%.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
69 AC_SUBST(INTLTOOL_DESKTOP_RULE)
70 AC_SUBST(INTLTOOL_DIRECTORY_RULE)
71 AC_SUBST(INTLTOOL_KEYS_RULE)
72 AC_SUBST(INTLTOOL_PROP_RULE)
73 AC_SUBST(INTLTOOL_OAF_RULE)
74 AC_SUBST(INTLTOOL_PONG_RULE)
75 AC_SUBST(INTLTOOL_SERVER_RULE)
76 AC_SUBST(INTLTOOL_SHEET_RULE)
77 AC_SUBST(INTLTOOL_SOUNDLIST_RULE)
78 AC_SUBST(INTLTOOL_UI_RULE)
79 AC_SUBST(INTLTOOL_XAM_RULE)
80 AC_SUBST(INTLTOOL_KBD_RULE)
81 AC_SUBST(INTLTOOL_XML_RULE)
82 AC_SUBST(INTLTOOL_XML_NOMERGE_RULE)
83 AC_SUBST(INTLTOOL_CAVES_RULE)
84 AC_SUBST(INTLTOOL_SCHEMAS_RULE)
85 AC_SUBST(INTLTOOL_THEME_RULE)
86 AC_SUBST(INTLTOOL_SERVICE_RULE)
88 # Use the tools built into the package, not the ones that are installed.
89 AC_SUBST(INTLTOOL_EXTRACT, '$(top_builddir)/intltool-extract')
90 AC_SUBST(INTLTOOL_MERGE, '$(top_builddir)/intltool-merge')
91 AC_SUBST(INTLTOOL_UPDATE, '$(top_builddir)/intltool-update')
93 AC_PATH_PROG(INTLTOOL_PERL, perl)
94 if test -z "$INTLTOOL_PERL"; then
95    AC_MSG_ERROR([perl not found; required for intltool])
97 if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
98    AC_MSG_ERROR([perl 5.x required for intltool])
100 if test "x$2" != "xno-xml"; then
101    AC_MSG_CHECKING([for XML::Parser])
102    if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
103        AC_MSG_RESULT([ok])
104    else
105        AC_MSG_ERROR([XML::Parser perl module is required for intltool])
106    fi
109 AC_PATH_PROG(INTLTOOL_ICONV, iconv, iconv)
110 AC_PATH_PROG(INTLTOOL_MSGFMT, msgfmt, msgfmt)
111 AC_PATH_PROG(INTLTOOL_MSGMERGE, msgmerge, msgmerge)
112 AC_PATH_PROG(INTLTOOL_XGETTEXT, xgettext, xgettext)
114 IT_PO_SUBDIR([po])
116 dnl The following is very similar to
118 dnl     AC_CONFIG_FILES([intltool-extract intltool-merge intltool-update])
120 dnl with the following slight differences:
121 dnl  - the *.in files are in ac_aux_dir,
122 dnl  - if the file haven't changed upon reconfigure, it's not touched,
123 dnl  - the evaluation of the third parameter enables a hack which computes
124 dnl    the actual value of $libdir,
125 dnl  - the user sees "executing intltool commands", instead of
126 dnl    "creating intltool-extract" and such.
128 dnl Nothing crucial here, and we could use AC_CONFIG_FILES, if there were
129 dnl a reason for it.
131 AC_CONFIG_COMMANDS([intltool], [
133 for file in intltool-extract intltool-merge intltool-update; do
134   sed -e "s|@INTLTOOL_EXTRACT@|`pwd`/intltool-extract|g" \
135       -e "s|@INTLTOOL_LIBDIR@|${INTLTOOL_LIBDIR}|g" \
136       -e "s|@INTLTOOL_ICONV@|${INTLTOOL_ICONV}|g" \
137       -e "s|@INTLTOOL_MSGFMT@|${INTLTOOL_MSGFMT}|g" \
138       -e "s|@INTLTOOL_MSGMERGE@|${INTLTOOL_MSGMERGE}|g" \
139       -e "s|@INTLTOOL_XGETTEXT@|${INTLTOOL_XGETTEXT}|g" \
140       -e "s|@INTLTOOL_PERL@|${INTLTOOL_PERL}|g" \
141         < ${ac_aux_dir}/${file}.in > ${file}.out
142   if cmp -s ${file} ${file}.out 2>/dev/null; then
143     rm -f ${file}.out
144   else
145     mv -f ${file}.out ${file}
146   fi
147   chmod ugo+x ${file}
148   chmod u+w ${file}
149 done
152 [INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir='${ac_aux_dir}'
153 prefix="$prefix" exec_prefix="$exec_prefix" INTLTOOL_LIBDIR="$libdir" 
154 INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' INTLTOOL_ICONV='${INTLTOOL_ICONV}'
155 INTLTOOL_MSGFMT='${INTLTOOL_MSGFMT}' INTLTOOL_MSGMERGE='${INTLTOOL_MSGMERGE}'
156 INTLTOOL_XGETTEXT='${INTLTOOL_XGETTEXT}'])
161 # IT_PO_SUBDIR(DIRNAME)
162 # ---------------------
163 # All po subdirs have to be declared with this macro; the subdir "po" is
164 # declared by IT_PROG_INTLTOOL.
166 AC_DEFUN([IT_PO_SUBDIR],
167 [AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS.
169 dnl The following CONFIG_COMMANDS should be exetuted at the very end
170 dnl of config.status.
171 AC_CONFIG_COMMANDS_PRE([
172   AC_CONFIG_COMMANDS([$1/stamp-it], [
173     rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp"
174     >"$1/stamp-it.tmp"
175     [sed '/^#/d
176          s/^[[].*] *//
177          /^[    ]*$/d
178         '"s|^|  $ac_top_srcdir/|" \
179       "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES"
180     ]
181     if test ! -f "$1/Makefile"; then
182       AC_MSG_ERROR([$1/Makefile is not ready.])
183     fi
184     mv "$1/Makefile" "$1/Makefile.tmp"
185     [sed '/^POTFILES =/,/[^\\]$/ {
186                 /^POTFILES =/!d
187                 r $1/POTFILES
188           }
189          ' "$1/Makefile.tmp" >"$1/Makefile"]
190     rm -f "$1/Makefile.tmp"
191     mv "$1/stamp-it.tmp" "$1/stamp-it"
192   ])
193 ])dnl
197 # deprecated macros
198 AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
199 # A hint is needed for aclocal from Automake <= 1.9.4:
200 # AC_DEFUN([AC_PROG_INTLTOOL], ...)