blob: c7b13141e31bf4b661b072a3a20c7dee2662d1df [file] [log] [blame] [edit]
dnl Copyright (C) 1999-2024 Free Software Foundation, Inc.
dnl This file is part of the GNU LIBICONV Library.
dnl
dnl The GNU LIBICONV Library is free software; you can redistribute it
dnl and/or modify it under the terms of the GNU Lesser General Public
dnl License as published by the Free Software Foundation; either version 2.1
dnl of the License, or (at your option) any later version.
dnl
dnl The GNU LIBICONV Library is distributed in the hope that it will be
dnl useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl Lesser General Public License for more details.
dnl
dnl You should have received a copy of the GNU Lesser General Public
dnl License along with the GNU LIBICONV Library; see the file COPYING.LIB.
dnl If not, see <https://www.gnu.org/licenses/>.
AC_PREREQ([2.64])
AC_INIT([libiconv], [1.17])
AC_CONFIG_SRCDIR([lib/iconv.c])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE
AC_CONFIG_HEADERS([config.h lib/config.h])
AC_PROG_MAKE_SET
dnl checks for basic programs
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
AC_PATH_PROG([STRIP], [strip], [:]) dnl sets STRIP
AM_PROG_INSTALL_STRIP dnl overrides STRIP when cross-compiling,
dnl sets INSTALL_STRIP_PROGRAM
dnl check for host type
AC_CANONICAL_HOST
dnl hack
dnl Hack to work around limitations of automake and error.m4 regarding LIBOBJS.
dnl "srclib/Makefile.am:32: automatically discovered file `error.h' should not be explicitly mentioned"
AC_DEFUN([my_SRCLIB_OBJ],[SRCLIBOBJS="$SRCLIBOBJS $1.$ac_objext"])
AC_DEFUN([my_SRCLIB_REPLACE_FUNCS], [AC_CHECK_FUNCS([$1], , [my_SRCLIB_OBJ($ac_func)])])
m4_pushdef([AC_LIBOBJ], m4_defn([my_SRCLIB_OBJ]))
m4_pushdef([AC_REPLACE_FUNCS], m4_defn([my_SRCLIB_REPLACE_FUNCS]))
dnl checks for UNIX variants that set DEFS
gl_EARLY
dnl checks for build configuration
LT_INIT([disable-static win32-dll])
gl_RELOCATABLE
AC_ARG_ENABLE([extra-encodings],
[AS_HELP_STRING([--enable-extra-encodings],
[add support for a few rarely used encodings])],
[AC_DEFINE([ENABLE_EXTRA], 1,
[Define to 1 to enable a few rarely used encodings.])
USE_EXTRA_ENCODINGS=yes],
[USE_EXTRA_ENCODINGS=no])
AC_SUBST([USE_EXTRA_ENCODINGS])
dnl checks for programs
CL_PROG_CP
CL_PROG_LN
AC_PROG_LN_S
dnl checks for compiler output filename suffixes
AC_OBJEXT
AC_EXEEXT
dnl checks for build configuration
dnl Prepares the libtool configuration for handling of Windows resources, and
dnl sets the RC variable to a program that compiles Windows resource files.
LT_LANG([Windows Resource])
dnl On native Windows and Cygwin, we can activate special Makefile rules which
dnl add version information to the executables.
case "$host_os" in
mingw* | windows* | cygwin*) is_woe32=yes ;;
*) is_woe32=no ;;
esac
WOE32=$is_woe32
AC_SUBST([WOE32])
if test $WOE32 = yes; then
dnl Check for a program that compiles Windows resource files.
AC_CHECK_TOOL([WINDRES], [windres])
fi
gl_VISIBILITY
AM_ICONV
AM_GNU_GETTEXT([external], [need-ngettext])
dnl checks for typedefs
AC_TYPE_MBSTATE_T
dnl checks for header files, functions and declarations
if test "$am_cv_func_iconv" = yes -a -n "$iconv_arg1"; then
ICONV_CONST="const"
else
ICONV_CONST=""
fi
AC_SUBST([ICONV_CONST])
AC_CHECK_FUNCS([getc_unlocked mbrtowc wcrtomb mbsinit setlocale])
dnl mbstate_t is used if HAVE_WCRTOMB || HAVE_MBRTOWC, see lib/loop_wchar.h.
if test $ac_cv_func_wcrtomb = yes || test $ac_cv_func_mbrtowc = yes; then
USE_MBSTATE_T=1
else
USE_MBSTATE_T=0
fi
AC_SUBST([USE_MBSTATE_T])
AC_CACHE_CHECK([whether <wchar.h> is standalone],
[gl_cv_header_wchar_h_standalone],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[[#include <wchar.h>
wchar_t w;]],
[[]])],
[gl_cv_header_wchar_h_standalone=yes],
[gl_cv_header_wchar_h_standalone=no])])
if test $gl_cv_header_wchar_h_standalone = yes; then
BROKEN_WCHAR_H=0
else
BROKEN_WCHAR_H=1
fi
AC_SUBST([BROKEN_WCHAR_H])
AC_REPLACE_FUNCS([memmove])
AM_LANGINFO_CODESET
gl_FCNTL_O_FLAGS
AC_EILSEQ
AC_C_BIGENDIAN([],
[AC_DEFINE([WORDS_LITTLEENDIAN], [1],
[Define if the machine's byte ordering is little endian.])
])
gl_INIT
dnl hack
dnl End of hack to work around limitations of automake and error.m4.
m4_popdef([AC_REPLACE_FUNCS])
m4_popdef([AC_LIBOBJ])
AC_SUBST([SRCLIBOBJS])
dnl Compilation on native Windows and Cygwin needs special Makefile rules,
dnl because
dnl 1. when we install a shared library, we must arrange to export
dnl auxiliary pointer variables for every exported variable,
dnl 2. when we install a shared library and a static library simultaneously
dnl (e.g. when the user overrides the 'disable-static' default above by
dnl passing the configure options --enable-shared --enable-static),
dnl the include file specifies __declspec(dllimport) and therefore we
dnl must arrange to define the auxiliary pointer variables for the
dnl exported variables _also_ in the static library.
if test "$enable_shared" = yes; then
case "$host_os" in
mingw* | windows* | cygwin*) is_woe32dll=yes ;;
*) is_woe32dll=no ;;
esac
else
is_woe32dll=no
fi
WOE32DLL=$is_woe32dll
AC_SUBST([WOE32DLL])
if test $is_woe32dll = yes; then
DLL_VARIABLE='__declspec (dllimport)'
else
DLL_VARIABLE=
fi
AC_SUBST([DLL_VARIABLE])
AH_BOTTOM([
/* On Windows, variables that may be in a DLL must be marked specially.
The symbols marked with DLL_VARIABLE should be exported if and only if the
object file gets included in a DLL. Libtool, on Windows platforms, defines
the C macro DLL_EXPORT (together with PIC) when compiling for a shared
library (called DLL under Windows) and does not define it when compiling
an object file meant to be linked statically into some executable. */
#if defined _MSC_VER && defined DLL_EXPORT
# define DLL_VARIABLE __declspec (dllimport)
#else
# define DLL_VARIABLE
#endif
])
AC_CONFIG_SUBDIRS([libcharset])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([lib/Makefile])
AC_CONFIG_FILES([srclib/Makefile])
AC_CONFIG_FILES([src/Makefile])
AC_CONFIG_FILES([po/Makefile.in])
AC_CONFIG_FILES([man/Makefile])
if test -d "${srcdir}/tests"; then
AC_CONFIG_FILES([tests/Makefile])
fi
AC_CONFIG_FILES([include/iconv.h:include/iconv.h.build.in])
AC_CONFIG_FILES([include/iconv.h.inst:include/iconv.h.in])
AC_OUTPUT