dnl Process this file with autoconf to produce a configure script.
AC_INIT(gimprc.in)

dnl Initialize automake stuff
dnl $Format: "GIMP_MAJOR_VERSION_NUMBER=$ReleaseMajorVersion$" $
GIMP_MAJOR_VERSION_NUMBER=0
dnl $Format: "GIMP_MINOR_VERSION_NUMBER=$ReleaseMinorVersion$" $
GIMP_MINOR_VERSION_NUMBER=99
dnl $Format: "GIMP_MICRO_VERSION_NUMBER=$ReleaseMicroVersion$" $
GIMP_MICRO_VERSION_NUMBER=18

dnl $Format: "AM_INIT_AUTOMAKE(gimp, $ReleaseVersion$)" $
AM_INIT_AUTOMAKE(gimp, 0.99.18)

dnl Specify a header configuration file
AM_CONFIG_HEADER(config.h)

dnl Initialize libtool
AM_PROG_LIBTOOL

dnl Initialize maintainer mode
AM_MAINTAINER_MODE

AC_CANONICAL_HOST

AC_ARG_ENABLE(debug, [  --enable-debug          turn on debugging [default=no]],
if eval "test x$enable_debug = xyes"; then
  DEBUGFLAG="-g"
fi)

AC_ARG_ENABLE(ansi, [  --enable-ansi           turn on strict ansi [default=no]],
		    , enable_ansi=no)

dnl Possibly change default gimpdir from .gimp
gimpdir=.gimp
AC_ARG_ENABLE(gimpdir, [  --enable-gimpdir=DIR    change default gimpdir from .gimp to DIR],
if eval "test x$enable_gimpdir != x"; then
  if eval "test x$enable_gimpdir != xyes"; then
    gimpdir=$enable_gimpdir
  fi
fi)

AC_DEFUN(AC_GIMP_CHECK,
[
	AC_PATH_X
	AC_PATH_XTRA

	saved_cflags="$CFLAGS"
	saved_ldflags="$LDFLAGS"

	CFLAGS="$X_CFLAGS $CFLAGS"
	LDFLAGS="$X_LDFLAGS $X_LIBS $LDFLAGS"

	dnl Checks for libraries.
	AC_CHECK_LIB(X11, XOpenDisplay,
		x_libs="-lX11 $X_EXTRA_LIBS",
		[AC_MSG_ERROR(No X11 installed)],
		$X_EXTRA_LIBS)

 	LD_FLAGS="$saved_ldflags $X_LDFLAGS $X_LIBS $x_libs"

	AC_CHECK_LIB(Xext, XShmAttach,
		x_libs="-lXext $x_libs", ,
		$x_libs)

	X_LIBS="$X_LIBS -lgtk -lgdk -lglib $x_libs -lm"

 	LDFLAGS="$saved_ldflags $X_LDFLAGS $X_LIBS"

	dnl Dont cache this as it depends on CFLAGS, LDFLAGS, etc
	AC_MSG_CHECKING([for gtk >= 0.99.3])
        AC_TRY_COMPILE(
[#include <gtk/gtk.h>],
[GtkArgSetFunc arg_set_func;],
gtk_found=yes,
gtk_found=no)
	AC_MSG_RESULT($gtk_found)

	if test $gtk_found = no; then
 	  AC_MSG_ERROR(Cannot include/link gtk/gdk/glib--check CFLAGS/LDFLAGS)
        fi

        dnl CFLAGS="$saved_cflags"
	dnl LDFLAGS="$saved_ldflags"
])

if test -n "$DEBUGFLAG"; then
  CFLAGS="$DEBUGFLAG $CFLAGS"
fi

dnl Checks for programs.
AC_PROG_CC
AM_PROG_CC_STDC
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_GIMP_CHECK

if eval "test x$GCC = xyes"; then
  if echo "$CFLAGS" | grep "\-Wall" > /dev/null 2> /dev/null; then
    CFLAGS="$CFLAGS"
  else
    CFLAGS="$CFLAGS -Wall"
  fi

  if eval "test x$enable_ansi = xyes"; then
    if echo "$CFLAGS" | grep "\-ansi" > /dev/null 2> /dev/null; then
      CFLAGS="$CFLAGS"
    else
      CFLAGS="$CFLAGS -ansi"
    fi

    if echo "$CFLAGS" | grep "\-pedantic" > /dev/null 2> /dev/null; then
      CFLAGS="$CFLAGS"
    else
      CFLAGS="$CFLAGS -pedantic"
    fi
  fi
fi

dnl Test for libtiff
  if test -z "$LIBTIFF_LIB"; then
    AC_CHECK_LIB(tiff, TIFFReadScanline,
      TIFF='tiff'; LIBTIFF_LIB='-ltiff',
      AC_CHECK_LIB(tiff, TIFFWriteScanline,
        TIFF='tiff'; LIBTIFF_LIB='-ltiff -lz -ljpeg',
        AC_MSG_WARN(*** TIFF plug-in will not be built ***), -lz -ljpeg -lm), -lm)
  fi

dnl Test for libjpeg
  if test -z "$LIBJPEG_LIB"; then
    AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,
      JPEG='jpeg'; LIBJPEG_LIB='-ljpeg',
      AC_MSG_WARN(*** JPEG plug-in will not be built ***))
  fi

dnl Test for libpng
  if test -z "$LIBPNG_LIB"; then
    AC_CHECK_LIB(png, png_read_info,
      PNG='png'; LIBPNG_LIB='-lpng -lz',
      AC_MSG_WARN(*** PNG plug-in will not be built ***), -lz -lm)
  fi

dnl Test for libmpeg
  if test -z "$LIBMPEG_LIB"; then
    AC_CHECK_LIB(mpeg, GetMPEGFrame,
      MPEG='mpeg'; LIBMPEG_LIB='-lmpeg',
      AC_MSG_WARN(*** MPEG plug-in will not be built ***))
  fi

#dnl Test for libtcl
#  if test -z "$LIBTCL_LIB"; then
#	AC_CHECK_LIB(dl, dlopen, DL_LIBRARY=-ldl)
#	AC_ARG_WITH(tcl, --with-{tcl/tk}		use this tcl/tk library,
#    AC_CHECK_LIB($with_tcl, Tcl_StaticPackage,
#      GIMPTCL='gimptcl'; LIBTCL_LIB="-l$with_tcl -l$with_tk $DL_LIBRARY",
#      AC_MSG_WARN(*** gimptcl plug-in will not be built ***), -lm $DL_LIBRARY),
#    AC_CHECK_LIB(tcl, Tcl_StaticPackage,
#      GIMPTCL='gimptcl'; LIBTCL_LIB="-ltcl -ltk $DL_LIBRARY",
#      AC_MSG_WARN(*** gimptcl plug-in will not be built ***), -lm $DL_LIBRARY))
#  fi

dnl Test for libxdelta
  if test -z "$LIBXDELTA_LIB"; then
    AC_CHECK_LIB(xdelta, xd_checkin,
      XD='xd'; LIBXDELTA_LIB='-lxdelta -lglib -lgdbm',
      AC_MSG_WARN(*** XD plug-in will not be built ***), -lglib -lgdbm)
  fi

dnl Test for libXpm
  if test -z "$LIBXPM_LIB"; then
    AC_CHECK_LIB(Xpm, XpmReadFileToXpmImage,
      XPM='xpm'; LIBXPM_LIB='-lXpm',
      AC_MSG_WARN(*** XPM plug-in will not be build ***), $X_LIBS)
  fi

dnl Check for shared memory
AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc=yes)
AC_CHECK_HEADER(sys/shm.h, AC_DEFINE(HAVE_SHM_H), no_sys_shm=yes)
if test "$ac_cv_header_sys_shm_h" = "yes"; then
  AC_MSG_CHECKING(whether shmctl IPC_RMID allowes subsequent attaches)
  AC_TRY_RUN([
	#include <sys/types.h>
	#include <sys/ipc.h>
	#include <sys/shm.h>
	int main()
	{
	  int id;
	  char *shmaddr;
	id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0777);
	if (id == -1)
	  exit (2);
	  shmaddr = shmat (id, 0, 0);
	  shmctl (id, IPC_RMID, 0);
	  if ((char*) shmat (id, 0, 0) == (char*) -1)
	  {
	    shmdt (shmaddr);
	    exit (1);
	  }
	  shmdt (shmaddr);
	  shmdt (shmaddr);
	  exit (0);
	}
    ],
    AC_DEFINE(IPC_RMID_DEFERRED_RELEASE)
      AC_MSG_RESULT(yes),
    AC_MSG_RESULT(no),
    AC_MSG_RESULT(assuming no))
fi

AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_HEADER_TIME

AC_CHECK_HEADER(sys/time.h, AC_DEFINE(HAVE_SYS_TIME_H))
AC_CHECK_HEADER(unistd.h, AC_DEFINE(HAVE_UNISTD_H))

AC_TYPE_PID_T
AC_TYPE_SIGNAL
AC_FUNC_VPRINTF

# Check for sys/select.h

AC_MSG_CHECKING([fd_set and sys/select])
AC_TRY_COMPILE([#include <sys/types.h>],
        [fd_set readMask, writeMask;], gimp_ok=yes, gimp_ok=no)
if test $gimp_ok = no; then
    AC_HEADER_EGREP(fd_mask, sys/select.h, gimp_ok=yes)
    if test $gimp_ok = yes; then
        AC_DEFINE(HAVE_SYS_SELECT_H)
    fi
fi
AC_MSG_RESULT($gimp_ok)
if test $gimp_ok = no; then
    AC_DEFINE(NO_FD_SET)
fi

dnl TVM: check for compiler characteristics
AC_C_INLINE

gimpdatadir=$datadir/$PACKAGE
gimpplugindir=$libdir/$PACKAGE/$GIMP_MAJOR_VERSION_NUMBER.$GIMP_MINOR_VERSION_NUMBER

dnl This is for generating PDB docuemntation.
AC_PATH_PROG(EMACS, emacs, :)

AC_SUBST(gimpdir)
AC_SUBST(gimpdatadir)
AC_SUBST(gimpplugindir)
AC_SUBST(TIFF)
AC_SUBST(LIBTIFF_LIB)
AC_SUBST(JPEG)
AC_SUBST(LIBJPEG_LIB)
AC_SUBST(PNG)
AC_SUBST(LIBPNG_LIB)
AC_SUBST(MPEG)
AC_SUBST(LIBMPEG_LIB)
#AC_SUBST(GIMPTCL)
#AC_SUBST(LIBTCL_LIB)
AC_SUBST(XD)
AC_SUBST(LIBXDELTA_LIB)
AC_SUBST(XPM)
AC_SUBST(LIBXPM_LIB)


dnl Output the Makefiles

AC_OUTPUT(
Makefile
gimprc
gimprc_user
libgimp/Makefile
plug-ins/Makefile
plug-ins/build
plug-ins/dbbrowser/Makefile
plug-ins/CML_explorer/Makefile
plug-ins/convmatrix/Makefile
plug-ins/diffraction/Makefile
plug-ins/pix/Makefile
plug-ins/oilify/Makefile
plug-ins/nova/Makefile
plug-ins/normalize/Makefile
plug-ins/noisify/Makefile
plug-ins/nlfilt/Makefile
plug-ins/mosaic/Makefile
plug-ins/mblur/Makefile
plug-ins/maze/Makefile
plug-ins/max_rgb/Makefile
plug-ins/mail/Makefile
plug-ins/laplace/Makefile
plug-ins/ifscompose/Makefile
plug-ins/iwarp/Makefile
plug-ins/hrz/Makefile
plug-ins/hot/Makefile
plug-ins/gz/Makefile
plug-ins/header/Makefile
plug-ins/grid/Makefile
plug-ins/gradmap/Makefile
plug-ins/gqbist/Makefile
plug-ins/gif/Makefile
plug-ins/gicon/Makefile
plug-ins/gfli/Makefile
plug-ins/gbr/Makefile
plug-ins/gauss_iir/Makefile
plug-ins/gauss_rle/Makefile
plug-ins/fits/Makefile
plug-ins/film/Makefile
plug-ins/faxg3/Makefile
plug-ins/exchange/Makefile
plug-ins/engrave/Makefile
plug-ins/emboss/Makefile
plug-ins/edge/Makefile
plug-ins/displace/Makefile
plug-ins/destripe/Makefile
plug-ins/despeckle/Makefile
plug-ins/depthmerge/Makefile
plug-ins/deinterlace/Makefile
plug-ins/decompose/Makefile
plug-ins/cubism/Makefile
plug-ins/compose/Makefile
plug-ins/checkerboard/Makefile
plug-ins/bz2/Makefile
plug-ins/xpm/Makefile
plug-ins/AlienMap/Makefile
plug-ins/c_astretch/Makefile
plug-ins/bumpmap/Makefile
plug-ins/script-fu/Makefile
plug-ins/script-fu/scripts/Makefile
plug-ins/jpeg/Makefile
plug-ins/mpeg/Makefile
plug-ins/png/Makefile
plug-ins/tiff/Makefile
plug-ins/xd/Makefile
plug-ins/bmp/Makefile
plug-ins/megawidget/Makefile
plug-ins/blur/Makefile
plug-ins/flame/Makefile
plug-ins/struc/Makefile
plug-ins/zealouscrop/Makefile
plug-ins/xwd/Makefile
plug-ins/whirlpinch/Makefile
plug-ins/waves/Makefile
plug-ins/vpropagate/Makefile
plug-ins/vinvert/Makefile
plug-ins/video/Makefile
plug-ins/url/Makefile
plug-ins/tiler/Makefile
plug-ins/tile/Makefile
plug-ins/tileit/Makefile
plug-ins/threshold_alpha/Makefile
plug-ins/tga/Makefile
plug-ins/sunras/Makefile
plug-ins/spread/Makefile
plug-ins/sparkle/Makefile
plug-ins/sobel/Makefile
plug-ins/snp/Makefile
plug-ins/snoise/Makefile
plug-ins/smooth_palette/Makefile
plug-ins/sinus/Makefile
plug-ins/shift/Makefile
plug-ins/sgi/Makefile
plug-ins/scatter_hsv/Makefile
plug-ins/rotators/Makefile
plug-ins/rotate/Makefile
plug-ins/ripple/Makefile
plug-ins/randomize/Makefile
plug-ins/ps/Makefile
plug-ins/print/Makefile
plug-ins/polar/Makefile
plug-ins/pnm/Makefile
plug-ins/plasma/Makefile
plug-ins/pixelize/Makefile
plug-ins/pcx/Makefile
plug-ins/pat/Makefile
plug-ins/blinds/Makefile
plug-ins/autostretch_hsv/Makefile
plug-ins/autocrop/Makefile
plug-ins/apply_lens/Makefile
plug-ins/animationplay/Makefile
plug-ins/align_layers/Makefile
plug-ins/CEL/Makefile
plug-ins/glasstile/Makefile
plug-ins/colorify/Makefile
plug-ins/papertile/Makefile
plug-ins/illusion/Makefile
plug-ins/fractaltrace/Makefile
plug-ins/fs/Makefile
plug-ins/flarefx/Makefile
app/Makefile
docs/Makefile
)
