AC_INIT(libdbusmenu, 0.5.95, ted@canonical.com)
AC_COPYRIGHT([Copyright 2009,2010 Canonical])

AC_PREREQ(2.62)

AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE(libdbusmenu, 0.5.95, [-Wno-portability])

AM_MAINTAINER_MODE

IT_PROG_INTLTOOL([0.35.0])
AC_ISC_POSIX
AC_PROG_CC
AM_PROG_CC_C_O
AC_STDC_HEADERS
AC_PROG_LIBTOOL

AC_SUBST(VERSION)
AC_CONFIG_MACRO_DIR([m4])

m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])

AC_PATH_PROG([GLIB_MKENUMS], [glib-mkenums])

###########################
# GTK Doc 
###########################

GTK_DOC_CHECK([1.4])
GNOME_DOC_INIT

###########################
# Dependencies - GLib
###########################

GLIB_REQUIRED_VERSION=2.26

PKG_CHECK_MODULES(DBUSMENUGLIB, glib-2.0 >= $GLIB_REQUIRED_VERSION
                                gio-2.0 >= $GLIB_REQUIRED_VERSION)

AC_SUBST(DBUSMENUGLIB_CFLAGS)
AC_SUBST(DBUSMENUGLIB_LIBS)

###########################
# Dependencies - GTK
###########################

GTK_REQUIRED_VERSION=2.16
GTK3_REQUIRED_VERSION=2.91

AC_ARG_ENABLE([gtk],
	AC_HELP_STRING([--disable-gtk], [Disable libdbusmenu-gtk library]),
	[enable_gtk=$enableval], [enable_gtk=auto])
AM_CONDITIONAL([WANT_LIBDBUSMENUGTK], [test "x$enable_gtk" != "xno"])

AC_ARG_WITH([gtk],
  [AS_HELP_STRING([--with-gtk],
    [Which version of gtk to use @<:@default=3@:>@])],
  [],
  [with_gtk=3])
AM_CONDITIONAL([USE_GTK3], [test "x$with_gtk" = "x3"])

AS_IF([test "x$enable_gtk" != "xno"],[
AS_IF([test "x$with_gtk" = x3],
        [PKG_CHECK_MODULES(DBUSMENUGTK,  gtk+-3.0 >= $GTK3_REQUIRED_VERSION
                                         atk
                                         glib-2.0 >= $GLIB_REQUIRED_VERSION,
                                         [have_gtk=yes]
)
         AC_DEFINE(HAVE_GTK3, 1, [whether gtk3 is available])
        ],
      [test "x$with_gtk" = x2],
        [PKG_CHECK_MODULES(DBUSMENUGTK,  gtk+-2.0 >= $GTK_REQUIRED_VERSION
                                         atk
                                         glib-2.0 >= $GLIB_REQUIRED_VERSION,
                                         [have_gtk=yes]
)
        ],
      [AC_MSG_FAILURE([Value for --with-gtk was neither 2 nor 3])]
)
])
AC_SUBST(DBUSMENUGTK_CFLAGS)
AC_SUBST(DBUSMENUGTK_LIBS)

###########################
# Dependencies - dumper
###########################

X11_REQUIRED_VERSION=1.3

AC_ARG_ENABLE([dumper],
	AC_HELP_STRING([--disable-dumper], [Disable dbusmenudumper tool]),
	[enable_dumper=$enableval], [enable_dumper=auto])
AM_CONDITIONAL([WANT_DBUSMENUDUMPER], [test "x$enable_dumper" != "xno"])

AS_IF([test "x$enable_dumper" != "xno"],[
PKG_CHECK_MODULES(DBUSMENUDUMPER, gtk+-2.0 >= $GTK_REQUIRED_VERSION
                                  x11 >= $X11_REQUIRED_VERSION,
                                  [have_dumper=yes]
)
])

AC_SUBST(DBUSMENUDUMPER_CFLAGS)
AC_SUBST(DBUSMENUDUMPER_LIBS)

###########################
# Dependencies - Testing
###########################

JSON_GLIB_REQUIRED_VERSION=0.13.4
GIO_UNIX_REQUIRED_VERSION=2.24

AC_ARG_ENABLE([tests],
	AC_HELP_STRING([--disable-tests], [Disable tests]),
	[enable_tests=$enableval], [enable_tests=auto])
AM_CONDITIONAL([WANT_TESTS], [test "x$enable_tests" != "xno"])

AS_IF([test "x$enable_tests" != "xno"],[
PKG_CHECK_MODULES(DBUSMENUTESTS,  json-glib-1.0 >= $JSON_GLIB_REQUIRED_VERSION
                                  gio-unix-2.0  >= $GIO_UNIX_REQUIRED_VERSION,
                                  [have_tests=yes]
)
])

AC_SUBST(DBUSMENUTESTS_CFLAGS)
AC_SUBST(DBUSMENUTESTS_LIBS)

###########################
# GObject Introspection
###########################

GOBJECT_INTROSPECTION_CHECK([0.6.7])

PKG_CHECK_EXISTS([gobject-introspection-1.0 >= 0.10],
				 introspection_ten=yes,
				 introspection_ten=no)

AM_CONDITIONAL(INTROSPECTION_TEN, [test "x$introspection_ten" = "xyes"])

###########################
# Vala API Generation
###########################

AC_ARG_ENABLE([vala],
	AC_HELP_STRING([--disable-vala], [Disable vala]),
	[enable_vala=$enableval], [enable_vala=auto])

AS_IF([test "x$enable_vala" != "xno"],[
	AM_COND_IF([HAVE_INTROSPECTION],,[
		AC_MSG_ERROR([Vala bindings require introspection support, please --enable-introspection])
	])
AC_PATH_PROG([VALA_API_GEN], [vapigen])
])
AM_CONDITIONAL([HAVE_VALA], [test -n "$VALA_API_GEN"])

###########################
# XSLT Processor
###########################

AC_PATH_PROG([XSLT_PROC], [xsltproc])

###########################
# Lib versioning 
###########################

LIBDBUSMENU_CURRENT=4
LIBDBUSMENU_REVISION=12
LIBDBUSMENU_AGE=0

AC_SUBST(LIBDBUSMENU_CURRENT)
AC_SUBST(LIBDBUSMENU_REVISION)
AC_SUBST(LIBDBUSMENU_AGE)

###########################
# Internationalization
###########################

GETTEXT_PACKAGE=libdbusmenu
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Name of the default gettext domain])

AM_GLIB_GNU_GETTEXT

###########################
# Massive Debugging
###########################

with_massivedebugging="no"
AC_ARG_ENABLE(massivedebugging, AS_HELP_STRING([--enable-massivedebugging], [Print out so much information your brain will hurt]), with_massivedebugging=$enableval, with_massivedebugging=no)
if test "x$with_massivedebugging" = "xyes"; then
	AC_DEFINE([MASSIVEDEBUGGING], [1], [Print everyting])
fi

###########################
# Files
###########################

AC_OUTPUT([
Makefile
po/Makefile.in
libdbusmenu-glib/Makefile
libdbusmenu-glib/dbusmenu-glib-0.4.pc
libdbusmenu-gtk/Makefile
libdbusmenu-gtk/dbusmenu-gtk-0.4.pc
libdbusmenu-gtk/dbusmenu-gtk3-0.4.pc
tools/Makefile
tools/testapp/Makefile
tests/Makefile
tests/dbusmenu-jsonloader-0.4.pc
docs/Makefile
docs/libdbusmenu-glib/Makefile
docs/libdbusmenu-glib/reference/Makefile
docs/libdbusmenu-glib/reference/version.xml
docs/libdbusmenu-gtk/Makefile
docs/libdbusmenu-gtk/reference/Makefile
docs/libdbusmenu-gtk/reference/version.xml
])

###########################
# Results
###########################

AC_MSG_NOTICE([

libdbusmenu Configuration:

	Prefix:                 $prefix
	Massive Debugging:      $with_massivedebugging
	GTK+ Version:           $with_gtk
])

AS_IF([test "x$have_tests" = "xyes"],
	AC_MSG_NOTICE([	Tests:                  yes]),
	AC_MSG_NOTICE([	Tests:                  no])
)

AS_IF([test "x$enable_gtk" = "xno"],
	AC_MSG_NOTICE([	Gtk:                    no]),
	AC_MSG_NOTICE([	Gtk:                    yes (gtk$with_gtk)])
)

AM_COND_IF([HAVE_VALA],
	AC_MSG_NOTICE([	Vala bindings:          yes]),
	AC_MSG_NOTICE([	Vala bindings           no])
)

AS_IF([test "x$have_dumper" = "xyes"],
   AC_MSG_NOTICE([	Dumper:                 yes]),
   AC_MSG_NOTICE([	Dumper:                 no])
)