dnl Copyright (C) 2000-2003 Free Software Foundation, Inc.
dnl This file is part of the GNU CHARSET Library.
dnl
dnl The GNU CHARSET Library is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU Library General Public License as
dnl published by the Free Software Foundation; either version 2 of the
dnl License, or (at your option) any later version.
dnl
dnl The GNU CHARSET Library is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
dnl Library General Public License for more details.
dnl
dnl You should have received a copy of the GNU Library General Public License
dnl along with the GNU CHARSET Library; see the file COPYING.LIB.  If not,
dnl write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
dnl Boston, MA 02111-1307, USA.

AC_PREREQ(2.13)

PACKAGE=libcharset
VERSION=1.2

AC_INIT(lib/localcharset.c)
AC_CONFIG_AUX_DIR(autoconf)
AC_CONFIG_HEADER(config.h)
AC_PROG_MAKE_SET
AC_SUBST(PACKAGE)
AC_SUBST(VERSION)

dnl           installation directories

dnl Prefer modern Filesystem Hierarchy Standard over antiquated GNU standards.
test "$mandir" != '${prefix}/man' || mandir='${datadir}/man'

dnl           checks for basic programs

AC_PROG_CC
AC_PROG_CPP
AC_PROG_GCC_TRADITIONAL
AC_PROG_INSTALL

dnl           check for host type

AC_CANONICAL_HOST

dnl           checks for installer options

AC_RELOCATABLE_LIBRARY

dnl           checks for programs

dnl           checks for UNIX variants that set DEFS

AC_AIX
AC_MINIX
AC_ISC_POSIX

dnl           checks for compiler output filename suffixes

AC_OBJEXT
AC_EXEEXT

dnl           check for build configuration

AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL

dnl           checks for header files and functions

AM_LANGINFO_CODESET
jm_GLIBC21
AC_CHECK_HEADERS(stddef.h stdlib.h string.h)
AC_CHECK_FUNCS(setlocale)

AC_OUTPUT(Makefile lib/Makefile)
