1 dnl Configuration for the gettext-tools directory of GNU gettext
2 dnl Copyright (C) 1995-2011, 2015 Free Software Foundation, Inc.
4 dnl This program is free software: you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation; either version 3 of the License, or
7 dnl (at your option) any later version.
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 dnl GNU General Public License for more details.
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
17 dnl Process this file with autoconf to produce a configure script.
20 AC_INIT([gettext-tools],
21 m4_esyscmd([../build-aux/git-version-gen ../.tarball-version]),
22 [bug-gnu-gettext@gnu.org])
23 AC_CONFIG_SRCDIR([src/msgfmt.c])
24 AC_CONFIG_AUX_DIR([../build-aux])
25 AM_INIT_AUTOMAKE([1.11.1 silent-rules parallel-tests])
26 AC_CONFIG_HEADERS([config.h])
28 dnl Installation directories.
29 test "$docdir" != '${datarootdir}/doc/${PACKAGE_TARNAME}' || docdir='${datarootdir}/doc/gettext'
31 dnl Checks for programs.
39 if test -n "$HAVE_GCJ" && test "$JAVA_CHOICE" = yes; then
44 AC_SUBST([BUILDJAVAEXE])
48 AC_CHECK_PROG([JAR], [jar], [jar])
49 if test -n "$HAVE_JAVACOMP" && test -n "$JAR" && test "$JAVA_CHOICE" != no; then
55 if test -n "$HAVE_JAVAEXEC" && test $BUILDJAVA = yes; then
63 if test -n "$HAVE_CSHARPCOMP" && test "$CSHARP_CHOICE" != no; then
68 AC_SUBST([BUILDCSHARP])
70 gt_CSHARPEXEC([csharpexec-test.exe], [$srcdir/m4])
71 if test -n "$HAVE_CSHARPEXEC" && test $BUILDCSHARP = yes; then
76 AC_SUBST([TESTCSHARP])
78 dnl Check for host type.
81 dnl Checks for compiler output filename suffixes.
85 dnl Make sure we see all GNU and Solaris extensions.
90 dnl Check for build configuration.
96 dnl Prepares the libtool configuration for handling of Windows resources, and
97 dnl sets the RC variable to a program that compiles Windows resource files.
98 LT_LANG([Windows Resource])
100 dnl On mingw and Cygwin, we can activate special Makefile rules which add
101 dnl version information to the shared libraries and executables.
103 mingw* | cygwin*) is_woe32=yes ;;
106 AM_CONDITIONAL([WOE32], [test $is_woe32 = yes])
108 dnl On Cygwin 1.7.10-1 or later, error_* variables are defined in the
109 dnl Cygwin DLL. To avoid any conflict with gettext DLLs, always link
110 dnl to gnulib's error.c. See GETTEXTLIB_EXPORTS_FLAGS setting below.
112 cygwin*) ac_cv_lib_error_at_line=no ;;
115 dnl Checks for libraries.
117 dnl These are the only lines required to internationalize the package.
118 dnl (OK, not quite, the AC_CONFIG_FILES has also some parts.)
119 AM_GNU_GETTEXT([use-libtool], [need-ngettext])
121 dnl This line internationalizes the bison generated parsers.
124 dnl Test whether msgmerge must be linked against libm. This is the case on
125 dnl most systems; but BeOS has all <math.h> functions in libc and doesn't have
129 #ifndef __NO_MATH_INLINES
130 # define __NO_MATH_INLINES 1 /* for glibc */
134 [x = ceil(x); x = sqrt(x);],
136 if test "$MSGMERGE_LIBM" = "?"; then
140 #ifndef __NO_MATH_INLINES
141 # define __NO_MATH_INLINES 1 /* for glibc */
145 [x = ceil(x); x = sqrt(x);],
146 [MSGMERGE_LIBM="-lm"])
149 if test "$MSGMERGE_LIBM" = "?"; then
152 AC_SUBST([MSGMERGE_LIBM])
154 dnl Checks for header files, functions and declarations.
159 dnl Checks for header files.
160 AC_CHECK_HEADERS([pwd.h])
162 dnl Checks for typedefs, structures, and compiler characteristics.
164 AC_TYPE_UNSIGNED_LONG_LONG_INT
166 AC_CHECK_TYPES([ptrdiff_t])
170 if test $GLIBC21 = yes; then
171 AC_CHECK_MEMBERS([struct __locale_struct.__names], , , [#include <xlocale.h>])
174 dnl Checks for library functions.
175 AC_CHECK_FUNCS([select])
180 AC_C_BIGENDIAN([endianness=1], [endianness=0],
181 [echo "AC-C-BIGENDIAN fails to work on your system." | sed -e 's,-,_,g' 1>&2
182 echo "Please report this as a bug to bug-autoconf@gnu.org" 1>&2
184 [endianness=universal])
185 if test $endianness != universal; then
186 AC_DEFINE_UNQUOTED([ENDIANNESS], [$endianness],
187 [Define according to the byte order of the target machine: 1 for big endian, 0 for little endian.])
189 dnl For possibly universal binaries, it's not possible to determine the
190 dnl endianness at configure time. So determine it at compile time.
193 # if defined __BIG_ENDIAN__
194 # define ENDIANNESS 1
196 # if defined __LITTLE_ENDIAN__
197 # define ENDIANNESS 0
204 dnl Compilation on mingw and Cygwin needs special Makefile rules, because
205 dnl 1. when we install a shared library, we must arrange to export
206 dnl auxiliary pointer variables for every exported variable,
207 dnl 2. when we install a shared library and a static library simultaneously,
208 dnl the include file specifies __declspec(dllimport) and therefore we
209 dnl must arrange to define the auxiliary pointer variables for the
210 dnl exported variables _also_ in the static library.
211 if test "$enable_shared" = yes; then
213 mingw* | cygwin*) is_woe32dll=yes ;;
219 AM_CONDITIONAL([WOE32DLL], [test $is_woe32dll = yes])
220 if test $is_woe32dll = yes; then
221 AC_DEFINE([WOE32DLL], [1],
222 [Define when --enable-shared is used on mingw or Cygwin.])
225 GETTEXTLIB_EXPORTS_FLAGS=
226 dnl woe32dll/gettextlib-exports.c needs to know whether the getopt facility
227 dnl is replaced by gnulib. GETOPT_H is set by gl_FUNC_GETOPT_POSIX, inside
229 if test -n "$GETOPT_H"; then
230 GETTEXTLIB_EXPORTS_FLAGS="-DGNULIB_DEFINED_GETOPT $GETTEXTLIB_EXPORTS_FLAGS"
232 dnl woe32dll/gettextlib-exports.c needs to know whether the error
233 dnl facility is replaced by gnulib. ac_cv_lib_error_at_line is set by
234 dnl gl_ERROR, inside gl_INIT.
235 if test "$ac_cv_lib_error_at_line" = no; then
236 GETTEXTLIB_EXPORTS_FLAGS="-DGNULIB_DEFINED_ERROR $GETTEXTLIB_EXPORTS_FLAGS"
239 dnl 64-bit mingw does not prepend an underscore to C symbols.
240 dnl USER_LABEL_PREFIX is set by gl_ASM_SYMBOL_PREFIX, inside gl_INIT.
241 if test "$USER_LABEL_PREFIX" = _; then
242 GETTEXTLIB_EXPORTS_FLAGS="-DUSER_LABEL_PREFIX_UNDERSCORE $GETTEXTLIB_EXPORTS_FLAGS"
244 AC_SUBST([GETTEXTLIB_EXPORTS_FLAGS])
246 dnl Tell the source files that the error facility is replaced by
247 dnl gnulib, to make sure to prepend "rpl_" prefix to the error_*
249 if test "$ac_cv_lib_error_at_line" = no; then
250 AC_DEFINE([GNULIB_REPLACE_ERROR], [1],
251 [Define when the error facility is replaced by gnulib.])
254 dnl Put some default definitions into config.h.
256 /* Default value for alignment of strings in .mo file. */
257 #define DEFAULT_OUTPUT_ALIGNMENT 1
260 /* A file name cannot consist of any character possible. INVALID_PATH_CHAR
261 contains the characters not allowed. */
262 #if defined _MSC_VER || defined __MINGW32__
263 /* Woe32. This string is valid for Windows NT/2000. On Windows 95/98/ME some
264 few characters in the range 0x80..0xff are invalid as well, but this doesn't
265 matter much for our purposes. */
266 # define INVALID_PATH_CHAR "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\"*/:<>?\\|"
268 /* Something like this for MSDOG. */
269 # define INVALID_PATH_CHAR "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 \177\\:."
272 # define INVALID_PATH_CHAR "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 \177/"
275 /* This is the page width for the message_print function. It should
276 not be set to more than 79 characters (Emacs users will appreciate
277 it). It is used to wrap the msgid and msgstr strings, and also to
278 wrap the file position (#:) comments. */
279 #define PAGE_WIDTH 79
281 /* On Windows, variables that may be in a DLL must be marked specially. */
282 #if ((defined _MSC_VER && defined _DLL) || defined WOE32DLL) && !defined IN_RELOCWRAPPER
283 # define DLL_VARIABLE __declspec (dllimport)
285 # define DLL_VARIABLE
288 /* Extra OS/2 (emx+gcc) defines. */
289 #if defined __EMX__ && !defined __KLIBC__
290 # include "intl/os2compat.h"
294 dnl Check for nm output filter that yields the exported symbols.
295 gt_GLOBAL_SYMBOL_PIPE
297 dnl Check for Emacs and where to install .elc files.
298 dnl Sometimes Emacs is badly installed. Allow the user to work around it.
300 [ --without-emacs do not use Emacs, don't install po-mode],
301 [gt_use_emacs=$withval],
303 if test "$EMACS" != no; then
304 AC_MSG_CHECKING([whether Emacs support is requested])
305 AC_MSG_RESULT([$gt_use_emacs])
306 if test "$gt_use_emacs" = no; then
310 dnl If $EMACS = no, we won't install any Emacs Lisp (*.el) files,
311 dnl therefore it's useless to determine $(lispdir).
312 if test "$EMACS" != no; then
316 aclocaldir='${datadir}/aclocal'
317 AC_SUBST([aclocaldir])
319 dnl Check how to install the set of previous versions, for autopoint.
321 [ --without-git don't use git to compress the infrastructure archive],
322 [gt_use_git=$withval],
325 [ --with-cvs use cvs to compress the infrastructure archive
327 [gt_use_cvs=$withval],
330 [ --without-bzip2 don't use bzip2 to compress the infrastructure archive],
331 [gt_use_bzip2=$withval],
332 [gt_use_bzip2=maybe])
334 [ --without-xz don't use xz to compress the infrastructure archive],
335 [gt_use_xz=$withval],
337 # The CVS format is deprecated, because "cvs init" does not work in all
339 # (see <http://lists.gnu.org/archive/html/bug-cvs/2010-05/msg00003.html>)
340 # and we are not allowed to distribute the cvs infrastructure files ourselves
341 # (see <http://lists.gnu.org/archive/html/bug-cvs/2010-06/msg00011.html>).
343 # With the archive from version 0.18.1, we can observe the following
346 # 16916480 archive.dir.tar
347 # 3528757 archive.dir.tar.gz
348 # 2621440 archive.cvs.tar
349 # 2082492 archive.dir.tar.bz2
350 # 696320 archive.git.tar
351 # 599046 archive.git.tar.bz2
352 # 592989 archive.git.tar.gz
353 # 588124 archive.git.tar.xz
354 # 457190 archive.cvs.tar.gz
355 # 335808 archive.cvs.tar.bz2
356 # 308880 archive.dir.tar.xz
357 # 299124 archive.cvs.tar.xz
359 # - We don't offer the uncompressed ones, because at least gzip can be
360 # assumed to be present everywhere.
361 # - Among archive.git.tar.*, all have approximately the same size, because
362 # git already compresses most of its repository data. Offer only .gz here.
363 # - Among archive.cvs.tar.*, offer only .gz, for simplicity, since --with-cvs
365 # The remaining ones are:
366 # Size File ARCHIVE_FORMAT
367 # 3528757 archive.dir.tar.gz dirgz
368 # 2082492 archive.dir.tar.bz2 dirbz2
369 # 592989 archive.git.tar.gz git
370 # 457190 archive.cvs.tar.gz cvs
371 # 308880 archive.dir.tar.xz dirxz
372 if test "$gt_use_xz" != no && test "$gt_use_xz" != maybe; then
373 # --with-xz is specified. Even if --with-git or --with-cvs or --with-bzip2 is
374 # also specified, we use the dirxz format.
377 if test "$gt_use_git" != no && test "$gt_use_git" != maybe; then
378 # --with-git is specified. Even if --with-cvs or --with-bzip2 is also
379 # specified, we use the git format.
382 if test "$gt_use_cvs" != no; then
383 # --with-cvs is specified. Even if --with-bzip2 is also specified, we use
387 if test "$gt_use_bzip2" != no && test "$gt_use_bzip2" != maybe; then
388 # --with-bzip2 is specified. We use the dirbz2 format.
389 ARCHIVE_FORMAT=dirbz2
391 # Neither --with-git nor --with-cvs nor --with-bzip2 nor --with-xz is
392 # specified. Determine which programs are present.
393 if test "$gt_use_xz" != no \
394 && (xz --version) >/dev/null 2>&1 \
395 && xz --version | grep lzma >/dev/null; then
396 # --without-xz is not specified, and the xz program exists.
399 # --without-xz is specified, or the xz program is missing.
401 if test "$gt_use_git" != no \
402 && (git --version) >/dev/null 2>&1 \
403 && { case `git --version | sed -e 's/^[^0-9]*//'` in
404 0.* | 1.[0-5].*) false ;;
409 # --without-git is not specified, and the git program exists
410 # in version 1.6 or newer. Use git format.
413 # --without-git is specified, or the git program is missing.
415 if test "$gt_use_bzip2" != no \
416 && (: | bzip2 --version) >/dev/null 2>&1 \
417 && { sed_bzip2_version1='s/ \([0-9][0-9.]*\).*/ \1/'
418 sed_bzip2_version2='s/^.* //'
419 case `(: | bzip2 --version) 2>&1 \
421 | sed -e "$sed_bzip2_version1" -e "$sed_bzip2_version2"` in
427 # --without-bzip2 is not specified, and the bzip2 program exists
428 # in version 1.0 or newer. Use dirbz2 format.
429 ARCHIVE_FORMAT=dirbz2
431 # --without-bzip2 is specified, or the bzip2 program is missing.
440 AC_SUBST([ARCHIVE_FORMAT])
442 ARCHIVE_VERSION=0.19.7
443 AC_SUBST([ARCHIVE_VERSION])
445 PACKAGE_SUFFIX="-$ARCHIVE_VERSION"
446 AC_SUBST([PACKAGE_SUFFIX])
447 AC_DEFINE_UNQUOTED(PACKAGE_SUFFIX, "$PACKAGE_SUFFIX",
448 [Define to the suffix of this package])
450 dnl Check for tools needed for formatting the documentation.
451 ac_aux_dir_abs=`cd $ac_aux_dir && pwd`
452 AC_PATH_PROG([DVIPS], [dvips], [$ac_aux_dir_abs/missing dvips])
453 AC_PATH_PROG([TEXI2PDF], [texi2pdf], [$ac_aux_dir_abs/missing texi2pdf])
454 AC_PATH_PROG([PERL], [perl], [$ac_aux_dir_abs/missing perl])
456 dnl Check for tools needed for formatting man pages.
457 CROSS_COMPILING=$cross_compiling
458 AC_SUBST([CROSS_COMPILING])
460 dnl Checks for optional programs for the tests/lang-*, tests/recode-* tests.
461 gl_PROG_ANSI_CXX([CXX], [ANSICXX])
466 dnl Checks for functions for the tests/*.c tests.
467 AC_CHECK_FUNCS_ONCE([getrlimit setrlimit uselocale])
469 dnl Prepares the libtool configuration for languages used by the tests.
472 dnl Check whether to execute tests that rely on libasprintf.
473 dnl This test must be consistent with gettext-runtime/configure.ac.
474 if test "${enable_libasprintf+set}" = set; then
475 if test "$enable_libasprintf" != no; then
483 if test "$CXX" = no; then
486 AC_SUBST([TESTLIBASPRINTF])
488 dnl Generate the version information file in the intl/ directory.
489 test -d intl || mkdir intl
490 echo "GNU gettext library from gettext-$VERSION" > intl/VERSION
492 AC_CONFIG_SUBDIRS([examples])
494 AC_CONFIG_FILES([Makefile])
496 AC_CONFIG_FILES([doc/Makefile])
498 AC_CONFIG_FILES([intl/Makefile:../gettext-runtime/intl/Makefile.in], [
499 # Change srcdir variable so that it points to ../gettext-runtime/intl.
500 # Change PLURAL_OBJECT variable so that pluralx.c is used instead of plural.c.
501 sed -e 's|^srcdir =.*$|srcdir = $(top_srcdir)/../gettext-runtime/intl|' \
502 -e 's|^VPATH =.*$||' \
503 -e 's|^PLURAL_OBJECT = .*$|PLURAL_OBJECT = pluralx.\$lo|' \
504 < intl/Makefile > intl/Makefile.tmp
505 mv intl/Makefile.tmp intl/Makefile
508 AC_CONFIG_FILES([its/Makefile])
510 AC_CONFIG_FILES([gnulib-lib/Makefile])
512 AC_CONFIG_FILES([libgrep/Makefile])
514 AC_CONFIG_FILES([src/Makefile])
515 AC_CONFIG_FILES([src/user-email:src/user-email.sh.in])
517 AC_CONFIG_FILES([libgettextpo/Makefile])
518 AC_CONFIG_FILES([libgettextpo/exported.sh])
520 AC_CONFIG_FILES([po/Makefile.in])
522 AC_CONFIG_FILES([projects/Makefile])
524 AC_CONFIG_FILES([styles/Makefile])
526 AC_CONFIG_FILES([misc/Makefile])
527 AC_CONFIG_FILES([misc/gettextize], [chmod a+x misc/gettextize])
528 AC_CONFIG_FILES([misc/autopoint], [chmod a+x misc/autopoint])
529 AC_CONFIG_FILES([misc/convert-archive], [chmod a+x misc/convert-archive])
531 AC_CONFIG_FILES([man/Makefile],
532 [FIX_MAKEFILE_DISTRIB])
533 AC_CONFIG_FILES([man/x-to-1])
535 AC_CONFIG_FILES([m4/Makefile])
537 AC_CONFIG_FILES([tests/Makefile])
539 AC_CONFIG_FILES([tests/init-env])
541 AC_CONFIG_FILES([gnulib-tests/Makefile])