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

AC_INIT(configure.in)
AM_INIT_AUTOMAKE(geany, 0.17)

AM_CONFIG_HEADER(config.h)

AC_GNU_SOURCE
AC_AIX
AC_MINIX

AC_PROG_CC

AC_PROG_CXX
# check for C++ compiler explicitly and fail if none is found, do this check
# after AC_PROG_CXX has set the CXX environment variable
which $CXX >/dev/null 2>&1
if test "x$?" != "x0"; then
	AC_MSG_ERROR([No C++ compiler not found. Please install a C++ compiler.])
fi

#AC_PROG_RANLIB
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_INTLTOOL

# for plugins
AC_DISABLE_STATIC
AM_PROG_LIBTOOL
LIBTOOL="$LIBTOOL --silent"

# autoscan start

# Checks for header files.
AC_CHECK_HEADERS([fcntl.h fnmatch.h glob.h regex.h stdlib.h sys/time.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_STRUCT_TM

# Checks for library functions.
AC_CHECK_FUNCS([gethostname ftruncate fgetpos mkstemp regcomp strerror strstr])

# autoscan end


# get svn revision (try GIT first, then check for SVN)
REVISION="r0"
GIT=`which git 2>/dev/null`
if test -d ".git" -a "x${GIT}" != "x" -a -x "${GIT}"
then
	REVISION=r`git svn find-rev origin/trunk 2>/dev/null ||
				git svn find-rev trunk 2>/dev/null || git svn find-rev HEAD 2>/dev/null ||
				git svn find-rev master 2>/dev/null || echo 0`
fi
if test "x${REVISION}" = "xr0"
then
	SVN=`which svn 2>/dev/null`
	if test -d ".svn" -a "x${SVN}" != "x" -a -x "${SVN}"
	then
		REVISION=r`$SVN info|grep 'Last Changed Rev'|cut -d' ' -f4`
	fi
fi
if test "x${REVISION}" != "xr0"
then
	# force debug mode for a SVN working copy
	CFLAGS="-g -DGEANY_DEBUG $CFLAGS"
else
	REVISION="-1"
fi
AC_DEFINE_UNQUOTED([REVISION], "$REVISION", [subversion revision number])


dnl Check for binary relocation support
dnl taken from Inkscape (Hongli Lai <h.lai@chello.nl>)

AC_ARG_ENABLE(binreloc,
       [  --enable-binreloc       compile with binary relocation support],
       enable_binreloc=$enableval,enable_binreloc=no)

AC_MSG_CHECKING(whether binary relocation support should be enabled)
if test "$enable_binreloc" = "yes"; then
       AC_MSG_RESULT(yes)
       AC_MSG_CHECKING(for linker mappings at /proc/self/maps)
       if test -e /proc/self/maps; then
               AC_MSG_RESULT(yes)
       else
               AC_MSG_RESULT(no)
               AC_MSG_ERROR(/proc/self/maps is not available. Binary relocation cannot be enabled.)
               enable_binreloc="no"
       fi

elif test "$enable_binreloc" = "auto"; then
       AC_MSG_RESULT(yes when available)
       AC_MSG_CHECKING(for linker mappings at /proc/self/maps)
       if test -e /proc/self/maps; then
               AC_MSG_RESULT(yes)
               enable_binreloc=yes

               AC_MSG_CHECKING(whether everything is installed to the same prefix)
               if test "$bindir" = '${exec_prefix}/bin' -a "$sbindir" = '${exec_prefix}/sbin' -a \
                       "$datadir" = '${prefix}/share' -a "$libdir" = '${exec_prefix}/lib' -a \
                       "$libexecdir" = '${exec_prefix}/libexec' -a "$sysconfdir" = '${prefix}/etc'
               then
                       AC_MSG_RESULT(yes)
               else
                       AC_MSG_RESULT(no)
                       AC_MSG_NOTICE(Binary relocation support will be disabled.)
                       enable_binreloc=no
               fi

       else
               AC_MSG_RESULT(no)
               enable_binreloc=no
       fi

elif test "$enable_binreloc" = "no"; then
       AC_MSG_RESULT(no)
else
       AC_MSG_RESULT(no (unknown value "$enable_binreloc"))
       enable_binreloc=no
fi
if test "$enable_binreloc" = "yes"; then
   AC_DEFINE(ENABLE_BINRELOC,,[Use AutoPackage?])
fi


# GTK checks
gtk_modules="gtk+-2.0 >= 2.8.0"
PKG_CHECK_MODULES(GTK, [$gtk_modules])
AC_SUBST(GTK_CFLAGS)
AC_SUBST(GTK_LIBS)
# GIO checks
gio_modules="gio-2.0 >= 2.16"
PKG_CHECK_MODULES(GIO, [$gio_modules], have_gio=1, have_gio=0)
AC_SUBST(GIO_CFLAGS)
AC_SUBST(GIO_LIBS)
if test $have_gio = 1 ; then
    AC_DEFINE(HAVE_GIO, 1, [Whether GIO is available])
fi

# --disable-deprecated switch for GTK2 purification
AC_ARG_ENABLE(deprecated, [  --disable-deprecated    Disable deprecated GTK functions. ],
			  [GTK_CFLAGS="$GTK_CFLAGS -DG_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"], [])

# Plugins support
AC_ARG_ENABLE(plugins, [AC_HELP_STRING([--disable-plugins], [compile without plugin support  [default=no]])], , enable_plugins=yes)

if test "x$enable_plugins" = "xyes" ; then
	AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled.])
	AM_CONDITIONAL(PLUGINS, true)
else
	AM_CONDITIONAL(PLUGINS, false)
fi

# Use included GNU regex library
AC_ARG_ENABLE(gnu-regex, [AC_HELP_STRING([--enable-gnu-regex], [compile with included GNU regex library  [default=no]])], , enable_gnu_regex=no)

if test "x$enable_gnu_regex" = "xyes" ; then
	AC_DEFINE(USE_INCLUDED_REGEX, 1, [Define if included GNU regex code should be used.])
	AC_DEFINE(HAVE_REGCOMP, 1, [Define if you have the 'regcomp' function.])
	AM_CONDITIONAL(USE_INCLUDED_REGEX, true)
else
	AM_CONDITIONAL(USE_INCLUDED_REGEX, false)
fi

case "${host}" in
    *mingw*)
	AC_CHECK_LIB(iberty, fnmatch, [], [
		AC_MSG_ERROR([fnmatch does not present in libiberty. You need to update it, read http://www.geany.org/Support/CrossCompile for details.])
		])
	AC_DEFINE_UNQUOTED([WIN32], 1, [we are cross compiling for WIN32])
	want_vte="no"
	want_socket="yes"
    	AC_DEFINE(HAVE_SOCKET, 1, [Define if you want to detect a running instance])
	AC_EXEEXT
	AM_CONDITIONAL(MINGW, true)
	;;
    *)
        AM_CONDITIONAL(MINGW, false)
	;;
esac

dnl skip check if already decided
if test "x$want_socket" = "x"; then
    # socket support
    AC_ARG_ENABLE(socket, AC_HELP_STRING([--enable-socket],[enable if you want to detect a running instance [[default=yes]]]),
     [want_socket="$enableval"], [want_socket="yes"])

    if test "x$want_socket" = "xyes"; then
    	AC_DEFINE(HAVE_SOCKET, 1, [Define if you want to detect a running instance])
	# this should bring in libsocket on Solaris:
	AC_SEARCH_LIBS([connect],[socket],[],[],[])
    fi
fi

dnl skip check if already decided
if test "x$want_vte" = "x"; then
    # VTE support
    AC_ARG_ENABLE(vte, AC_HELP_STRING([--enable-vte],
     [enable if you want virtual terminal support [[default=yes]]]),
     [want_vte="$enableval"], [want_vte="yes"])
    if test "x$want_vte" = "xyes"; then
    	AC_DEFINE(HAVE_VTE, 1, [Define if you want VTE support])
    fi
    AC_ARG_WITH(vte-module-path, AC_HELP_STRING([--with-vte-module-path=PATH],
     [Path to a loadable libvte [[default=None]]]), [AC_DEFINE_UNQUOTED([VTE_MODULE_PATH],
     ["$withval"], [Path to a loadable libvte])])
fi

GTK_VERSION=`$PKG_CONFIG --modversion gtk+-2.0`


# GTK 2.10 printing support
$PKG_CONFIG --exists 'gtk+-2.0 >= 2.10.0'
if test "x$?" = "x0" ; then
	enable_printing="yes"
else
	enable_printing="no (GTK >= 2.10 necessary)"
fi


# just for a laugh (it has absolutely no effect)
AC_ARG_ENABLE(the-force, AC_HELP_STRING([--enable-the-force],
     [enable if you are Luke Skywalker and the force is with you [[default=no]]]), [be_luke="$enableval"], [be_luke="no"])
AC_MSG_CHECKING([whether the force is with you])
if test "x$be_luke" = "xyes"; then
	AC_MSG_RESULT([yes])
else
	AC_MSG_RESULT([no])
fi

# i18n
GETTEXT_PACKAGE=geany
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package.])

ALL_LINGUAS="`sed -e '/^#/d' $srcdir/po/LINGUAS`" # take all languages found in file po/LINGUAS

AM_GLIB_GNU_GETTEXT
# workaround for intltool bug (http://bugzilla.gnome.org/show_bug.cgi?id=490845)
if test "x$MSGFMT" = "xno"; then
	AC_MSG_ERROR([msgfmt not found. Please install the gettext package.])
fi


# Set ${datadir}
if test "x${datadir}" = 'x${prefix}/share' -o "x${datarootdir}" = 'x${prefix}/share'; then
	if test "x${prefix}" = "xNONE"; then
		prefix=${ac_default_prefix}
	fi
fi

# Set ${docdir} if it is empty
if test -z "${docdir}"; then
	docdir='${datadir}/doc/${PACKAGE}'
	AC_SUBST(docdir)
fi

GEANY_PIXMAPS_DIR=`eval echo ${datarootdir}/pixmaps`
AC_SUBST(GEANY_PIXMAPS_DIR)
GEANY_DATA_DIR=`eval echo ${datarootdir}/geany`
AC_SUBST(GEANY_DATA_DIR)

# intltool hack to define install_sh on Debian/Ubuntu systems
if test "x$install_sh" = "x"; then
	install_sh="`pwd`/install-sh"
	AC_SUBST(install_sh)
fi

AC_OUTPUT([
Makefile
icons/Makefile
icons/16x16/Makefile
tagmanager/Makefile
tagmanager/include/Makefile
scintilla/Makefile
scintilla/include/Makefile
src/Makefile
plugins/Makefile
po/Makefile.in
doc/Makefile
doc/geany.1
geany.spec
geany.pc
doc/Doxyfile
])

echo "----------------------------------------"
echo "Install Geany in                   : ${prefix}"
if test "x${build}" != "x" -a "x${target}" != "x"
then
	echo "Building Geany on                  : ${build}"
	echo "Building Geany for                 : ${target}"
fi
echo "Using GTK version                  : ${GTK_VERSION}"
echo "Build with GTK printing support    : ${enable_printing}"
echo "Build with plugin support          : ${enable_plugins}"
echo "Use virtual terminal support       : ${want_vte}"
echo "Use (UNIX domain) socket support   : ${want_socket}"
if test "${REVISION}" != "-1"
then
	echo "Compiling Subversion revision      : ${REVISION}"
fi
echo ""
echo "Configuration is done OK."
echo ""
