dnl Process this file with autoconf to produce a configure script.
AC_INIT(libasn1parser/asn1p_y.y)
AC_CANONICAL_BUILD
AC_CANONICAL_TARGET
AC_PREREQ(2.53)
AM_INIT_AUTOMAKE(asn1c, 0.9.6.1)

AM_MAINTAINER_MODE

AM_PROG_LIBTOOL

dnl *** Autoconf support ***
AC_ARG_ENABLE(autoconf,
  [  --disable-autoconf      disable automatic generation of configure script ],
  enable_autoconf=$enableval, enable_autoconf=yes
)
AC_PATH_PROG(AUTOCONF, autoconf, @echo autoconf not available)
AC_PATH_PROG(AUTOHEADER, autoheader, @echo autoheader not available)
if test -z "$AUTOCONF"; then enable_autoconf=no ; fi
if test -z "$AUTOHEADER"; then enable_autoconf=no ; fi
if test x$enable_autoconf = xyes; then
  CONFIGURE_DEPENDS="configure.in aclocal.m4"
fi
AC_SUBST(CONFIGURE_DEPENDS)

dnl Checks for programs.
AC_PROG_CC
AC_PROG_CPP
AC_PROG_CXX
AC_PROG_CXXCPP
AM_CONDITIONAL(CPLUSPLUS_FOUND, test -n "$ac_ct_CXX")
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_YACC
AM_PROG_LEX

dnl *** Building mingw32 with cygwin compiler ***
case "$host_os" in
cygwin*)
	dnl CFLAGS="$CFLAGS -DWIN32"
	case "$target" in
	*mingw*)
		CC="$CC -mno-cygwin"
	esac
	;;
mingw* | p32*)
	dnl CFLAGS="$CFLAGS -DWIN32"
	;;
esac

AC_ARG_ENABLE(Werror,
  [  --enable-Werror         abort compilation after any C compiler warning],
	enable_werror=$enableval, enable_werror=no)
if test x$enable_werror = xyes; then
  ADD_CFLAGS="-Werror -W -Wpointer-arith"
fi
AC_SUBST(ADD_CFLAGS)

dnl Add these flags if we're using GCC.
case "$GCC" in
 yes)
   CFLAGS="$CFLAGS -Wall"
   CFLAGS="$CFLAGS -Wshadow"
   CFLAGS="$CFLAGS -Wcast-qual"
   CFLAGS="$CFLAGS -Wcast-align"
   CFLAGS="$CFLAGS -Wchar-subscripts"
   CFLAGS="$CFLAGS -Wmissing-prototypes"
   CFLAGS="$CFLAGS -Wmissing-declarations"
   ;;
esac


dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(sys/param.h)

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_BIGENDIAN
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_STRUCT_TM
AC_CHECK_TYPE(intmax_t, int64_t)

AC_CHECK_FUNCS(strtoimax strtoll)
AC_CHECK_FUNCS(mergesort)

AM_CONFIG_HEADER(config.h)

AC_OUTPUT(			\
skeletons/tests/Makefile	\
libasn1compiler/Makefile	\
libasn1parser/Makefile		\
libasn1print/Makefile		\
asn1c/webcgi/Makefile		\
asn1c/tests/Makefile		\
libasn1fix/Makefile		\
skeletons/Makefile		\
examples/Makefile		\
tests/Makefile			\
asn1c/Makefile			\
doc/Makefile			\
asn1c.spec			\
Makefile			\
)

