dnl Process this file with autoconf to produce a configure script.
AC_INIT(jartool.h)
AM_INIT_AUTOMAKE(fastar, 0.92-gcc)
AM_CONFIG_HEADER(config.h)

dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
AC_PATH_PROG(RM, rm, /bin/rm, $PATH:/bin:/usr/bin:/usr/local/bin)
AC_PATH_PROG(CP, cp, /bin/cp, $PATH:/bin:/usr/bin:/usr/local/bin)
AC_PATH_PROG(STRIP, strip, /usr/bin/strip, $PATH:/bin:/usr/bin:/usr/local/bin)
AC_PATH_PROG(CHMOD, chmod, /bin/chmod, $PATH:/bin:/usr/bin:/usr/local/bin)
AC_EXEEXT

dnl Add warning flags if we are using gcc.
if test "$GCC" = yes; then
  fastjar_warn_cflags='-W -Wall -pedantic -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings'
fi
AC_SUBST(fastjar_warn_cflags)

dnl Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_STRUCT_TM
AC_CHECK_HEADERS(fcntl.h unistd.h sys/param.h getopt.h)

dnl Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_OFF_T
AC_STRUCT_TM

dnl Check for type-widths
AC_CHECK_SIZEOF(char)
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(long long)

dnl Check byte order
AC_C_BIGENDIAN

AC_ARG_WITH(system-zlib,
[  --with-system-zlib      use installed libz])

ZLIBS=
ZDEPS=
ZINCS=
use_zlib=maybe
if test "$with_system_zlib" = yes; then
   AC_CHECK_LIB(z, deflate, ZLIBS=-lz, use_zlib=no)
else
   use_zlib=no
fi

if test "$use_zlib" = no; then
   # Brain dead way to find tree's zlib.
   ZDEPS='$(top_builddir)/../zlib/libz.a'
   ZLIBS="$ZDEPS -L\$(here)/../zlib/$libsubdir"
   ZINCS='-I$(top_srcdir)/../zlib'
fi
AC_SUBST(ZLIBS)
AC_SUBST(ZDEPS)
AC_SUBST(ZINCS)

AC_OUTPUT(Makefile install-defs.sh)
