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.
10##
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.
15##
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.
19##
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.
24
25dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
26# serial 42 IT_PROG_INTLTOOL
27AC_DEFUN([IT_PROG_INTLTOOL], [
28AC_PREREQ([2.50])dnl
29AC_REQUIRE([AM_NLS])dnl
30
31case "$am__api_version" in
32    1.[01234])
33	AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool])
34    ;;
35    *)
36    ;;
37esac
38
39INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
40INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3`
41INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
42if test -n "$1"; then
43    AC_MSG_CHECKING([for intltool >= $1])
44    AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
45    test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
46	AC_MSG_ERROR([Your intltool is too old.  You need intltool $1 or later.])
47fi
48
49AC_PATH_PROG(INTLTOOL_UPDATE, [intltool-update])
50AC_PATH_PROG(INTLTOOL_MERGE, [intltool-merge])
51AC_PATH_PROG(INTLTOOL_EXTRACT, [intltool-extract])
52if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then
53    AC_MSG_ERROR([The intltool scripts were not found. Please install intltool.])
54fi
55
56if test -z "$AM_DEFAULT_VERBOSITY"; then
57  AM_DEFAULT_VERBOSITY=1
58fi
59AC_SUBST([AM_DEFAULT_VERBOSITY])
60
61INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))'
62INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))'
63INTLTOOL__v_MERGE_0='@echo "  ITMRG " [$]@;'
64AC_SUBST(INTLTOOL_V_MERGE)
65AC_SUBST(INTLTOOL__v_MERGE_)
66AC_SUBST(INTLTOOL__v_MERGE_0)
67
68INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))'
69intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))'
70intltool__v_merge_options_0='-q'
71AC_SUBST(INTLTOOL_V_MERGE_OPTIONS)
72AC_SUBST(intltool__v_merge_options_)
73AC_SUBST(intltool__v_merge_options_0)
74
75  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
76INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
77     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
78     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
79      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< [$]@'
80     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
81   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
82    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
83INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
84       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
85      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
86if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then
87      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< [$]@'
88else
89      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.[$][$]RANDOM && mkdir [$][$]_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u [$][$]_it_tmp_dir $< [$]@ && rmdir [$][$]_it_tmp_dir'
90fi
91      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
92      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
93    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
94  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
95    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
96    INTLTOOL_SERVICE_RULE='%.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
97   INTLTOOL_POLICY_RULE='%.policy:    %.policy.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
98
99_IT_SUBST(INTLTOOL_DESKTOP_RULE)
100_IT_SUBST(INTLTOOL_DIRECTORY_RULE)
101_IT_SUBST(INTLTOOL_KEYS_RULE)
102_IT_SUBST(INTLTOOL_PROP_RULE)
103_IT_SUBST(INTLTOOL_OAF_RULE)
104_IT_SUBST(INTLTOOL_PONG_RULE)
105_IT_SUBST(INTLTOOL_SERVER_RULE)
106_IT_SUBST(INTLTOOL_SHEET_RULE)
107_IT_SUBST(INTLTOOL_SOUNDLIST_RULE)
108_IT_SUBST(INTLTOOL_UI_RULE)
109_IT_SUBST(INTLTOOL_XAM_RULE)
110_IT_SUBST(INTLTOOL_KBD_RULE)
111_IT_SUBST(INTLTOOL_XML_RULE)
112_IT_SUBST(INTLTOOL_XML_NOMERGE_RULE)
113_IT_SUBST(INTLTOOL_CAVES_RULE)
114_IT_SUBST(INTLTOOL_SCHEMAS_RULE)
115_IT_SUBST(INTLTOOL_THEME_RULE)
116_IT_SUBST(INTLTOOL_SERVICE_RULE)
117_IT_SUBST(INTLTOOL_POLICY_RULE)
118
119# Check the gettext tools to make sure they are GNU
120AC_PATH_PROG(XGETTEXT, xgettext)
121AC_PATH_PROG(MSGMERGE, msgmerge)
122AC_PATH_PROG(MSGFMT, msgfmt)
123AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
124if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then
125    AC_MSG_ERROR([GNU gettext tools not found; required for intltool])
126fi
127xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`"
128mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`"
129mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`"
130if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then
131    AC_MSG_ERROR([GNU gettext tools not found; required for intltool])
132fi
133
134AC_PATH_PROG(INTLTOOL_PERL, perl)
135if test -z "$INTLTOOL_PERL"; then
136   AC_MSG_ERROR([perl not found])
137fi
138AC_MSG_CHECKING([for perl >= 5.8.1])
139$INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1
140if test $? -ne 0; then
141   AC_MSG_ERROR([perl 5.8.1 is required for intltool])
142else
143   IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"`
144   AC_MSG_RESULT([$IT_PERL_VERSION])
145fi
146if test "x$2" != "xno-xml"; then
147   AC_MSG_CHECKING([for XML::Parser])
148   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
149       AC_MSG_RESULT([ok])
150   else
151       AC_MSG_ERROR([XML::Parser perl module is required for intltool])
152   fi
153fi
154
155# Substitute ALL_LINGUAS so we can use it in po/Makefile
156AC_SUBST(ALL_LINGUAS)
157
158IT_PO_SUBDIR([po])
159
160])
161
162
163# IT_PO_SUBDIR(DIRNAME)
164# ---------------------
165# All po subdirs have to be declared with this macro; the subdir "po" is
166# declared by IT_PROG_INTLTOOL.
167#
168AC_DEFUN([IT_PO_SUBDIR],
169[AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS.
170dnl
171dnl The following CONFIG_COMMANDS should be executed at the very end
172dnl of config.status.
173AC_CONFIG_COMMANDS_PRE([
174  AC_CONFIG_COMMANDS([$1/stamp-it], [
175    if [ ! grep "^# INTLTOOL_MAKEFILE$" "$1/Makefile.in" > /dev/null ]; then
176       AC_MSG_ERROR([$1/Makefile.in.in was not created by intltoolize.])
177    fi
178    rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp"
179    >"$1/stamp-it.tmp"
180    [sed '/^#/d
181	 s/^[[].*] *//
182	 /^[ 	]*$/d
183	'"s|^|	$ac_top_srcdir/|" \
184      "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES"
185    ]
186    [sed '/^POTFILES =/,/[^\\]$/ {
187		/^POTFILES =/!d
188		r $1/POTFILES
189	  }
190	 ' "$1/Makefile.in" >"$1/Makefile"]
191    rm -f "$1/Makefile.tmp"
192    mv "$1/stamp-it.tmp" "$1/stamp-it"
193  ])
194])dnl
195])
196
197# _IT_SUBST(VARIABLE)
198# -------------------
199# Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
200#
201AC_DEFUN([_IT_SUBST],
202[
203AC_SUBST([$1])
204m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
205]
206)
207
208# deprecated macros
209AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
210# A hint is needed for aclocal from Automake <= 1.9.4:
211# AC_DEFUN([AC_PROG_INTLTOOL], ...)
212
213