dnl Process this file with autoconf to produce a configure script.

AC_INIT
AC_CONFIG_SRCDIR([libmng.h])
AC_PREREQ(2.52)

dnl this call will define PACKAGE and VERSION
dnl please use this as the primary reference for the version number
AM_INIT_AUTOMAKE(libmng, 1.0.9)

dnl pass the version string on the the makefiles
AC_SUBST(PACKAGE)
AC_SUBST(VERSION)

dnl Checks for programs.
AC_PROG_CC
AC_ISC_POSIX
AM_C_PROTOTYPES
if test "x$U" != "x"; then
  AC_MSG_ERROR(Compiler not ANSI compliant)
fi
AM_PROG_LIBTOOL
AC_PROG_INSTALL

dnl support for files >2GB
AC_SYS_LARGEFILE

dnl Check for required header files
AC_HEADER_STDC

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST

dnl need pow and fabs
AC_CHECK_FUNC(pow, , AC_CHECK_LIB(m, pow, LIBS="$LIBS -lm"))


dnl what functionality we want to add (read, write, display).
dnl all on by default. see libmng_conf.h for full descriptions

dnl not building a standard shared object?
AC_ARG_ENABLE(buildso,
[  --disable-buildso       disable building standard shared object])
if test "x$enable_buildso" != "xno"; then
  AC_DEFINE(MNG_BUILD_SO)
fi

dnl we only support the full mng spec for now (no LC or VLC)
AC_DEFINE(MNG_SUPPORT_FULL)

dnl remove support in library to read images?
AC_ARG_ENABLE(read,
[  --disable-read          remove read support from library])
if test "x$enable_read" != "xno"; then
  AC_DEFINE(MNG_SUPPORT_READ)
fi

dnl remove support in library to write images?
AC_ARG_ENABLE(write,
[  --disable-write         remove write support from library])
if test "x$enable_write" != "xno"; then
  AC_DEFINE(MNG_SUPPORT_WRITE)
fi

dnl remove support in library to display images?
AC_ARG_ENABLE(display,
[  --disable-display       remove display support from library])
if test "x$enable_display" != "xno"; then
  AC_DEFINE(MNG_SUPPORT_DISPLAY)
fi

dnl remove support for 'dynamic' MNG?
AC_ARG_ENABLE(dynamic,
[  --disable-dynamic       remove dynamic MNG support from library])
if test "x$enable_dynamic" != "xno"; then
  AC_DEFINE(MNG_SUPPORT_DYNAMICMNG)
fi

dnl remove support in library to access chunks?
AC_ARG_ENABLE(chunks,
[  --disable-chunks        remove support for chunk access])
if test "x$enable_chunks" != "xno"; then
  AC_DEFINE(MNG_ACCESS_CHUNKS)
fi

dnl disable support for accessing chunks that have been previously read?
AC_ARG_ENABLE(storechunks,
[  --disable-storechunks   remove support for access of previous chunks])
if test "x$enable_storechunks" != "xno"; then
  AC_DEFINE(MNG_STORE_CHUNKS)
fi

dnl enable support for debug tracing callbacks and messages?
AC_ARG_ENABLE(trace,
[  --enable-trace          include support for debug tracing callbacks],[
if test "x$enable_trace" = "xyes"; then
  AC_DEFINE(MNG_SUPPORT_TRACE)
  AC_DEFINE(MNG_TRACE_TELLTALE)
fi
])

dnl verbose error text
dnl this should always be on
AC_DEFINE(MNG_ERROR_TELLTALE)


dnl libz is required.
AC_ARG_WITH(zlib,
[  --with-zlib[=DIR]       use zlib include/library files in DIR],[
  if test -d "$withval"; then
    CPPFLAGS="$CPPFLAGS -I$withval/include"
    LDFLAGS="$LDFLAGS -L$withval/lib"
  fi
])
AC_CHECK_HEADER(zlib.h,
    AC_CHECK_LIB(z, gzread, , AC_MSG_ERROR(zlib library not found)),
    AC_MSG_ERROR(zlib header not found)
)

dnl check for jpeg library
AC_ARG_WITH(jpeg,
[  --with-jpeg[=DIR]       use jpeg include/library files in DIR],
[with_jpeg=$withval],[with_jpeg=_auto])

  if test "x$with_jpeg" != "xno" -a "x$with_jpeg" != "xyes" -a \
	"x$with_jpeg" != "x_auto"; then
    # Save in case test with directory specified fails
    _cppflags=${CPPFLAGS}
    _ldflags=${LDFLAGS}
    _restore=1

    CPPFLAGS="${CPPFLAGS} -I$withval/include"
    LDFLAGS="${LDFLAGS} -L$withval/lib"
  else
    _restore=0
  fi

  if test "x$with_jpeg" != "xno"; then
    AC_CHECK_HEADER(jpeglib.h,
      AC_CHECK_LIB(jpeg, jpeg_read_header, [
	LIBS="$LIBS -ljpeg"
	AC_DEFINE(HAVE_LIBJPEG)
	_restore=0
      ],
    	AC_MSG_WARN(jpeg library not found)),
      AC_MSG_WARN(jpeg header not found)
    )
  fi

  test $_restore -eq 1 && CPPFLAGS=$_cppflags LDFLAGS=$_ldflags

dnl check for lcms library
AC_ARG_WITH(lcms,
[  --with-lcms[=DIR]       use lcms include/library files in DIR],
[with_lcms=$withval],[with_lcms=_auto])

  if test "x$with_lcms" != "xno" -a "x$with_lcms" != "xyes" -a \
	"x$with_lcms" != "x_auto"; then
    # Save in case test with directory specified fails
    _cppflags=$CPPFLAGS
    _ldflags=$LDFLAGS
    _restore=1

    CPPFLAGS="$CPPFLAGS -I$withval/include"
    LDFLAGS="$LDFLAGS -L$withval/lib"
  else
    _restore=0
  fi

  if test "x$with_lcms" != "xno"; then
    AC_CHECK_HEADER(lcms.h, [
      have_lcms=yes
      AC_CHECK_LIB(lcms, cmsCreateRGBProfile, [
        LIBS="$LIBS -llcms"
        AC_DEFINE(HAVE_LIBLCMS)
        dnl for now this implies MNG_INCLUDE_LCMS in the headers:
        AC_DEFINE(MNG_FULL_CMS)
	_restore=0
	have_lcms=yes
      ],[
	have_lcms=no
      ])
    ])
    dnl give feedback only if the user asked specifically for lcms
    if test "x$with_lcms" != "x_auto" -a "x$have_lcms" != "xyes"; then
      AC_MSG_WARN([lcms not found... disabling CMS support])
    fi
  fi

  test $_restore -eq 1 && CPPFLAGS=$_cppflags LDFLAGS=$_ldflags

AC_CONFIG_FILES([Makefile])
AC_OUTPUT
