# $Id: configure.in 2654 2011-06-20 10:00:54Z marc $
AC_ALIAS([AC_DEFINE_DIR], [AX_DEFINE_DIR])
AC_DEFUN([AX_DEFINE_DIR], [
  prefix_NONE=
  exec_prefix_NONE=
  test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
  test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
dnl refers to ${prefix}.  Thus we have to use `eval' twice.
  eval ax_define_dir="\"[$]$2\""
  eval ax_define_dir="\"$ax_define_dir\""
  AC_SUBST($1, "$ax_define_dir")
  AC_DEFINE_UNQUOTED($1, "$ax_define_dir", [$3])
  test "$prefix_NONE" && prefix=NONE
  test "$exec_prefix_NONE" && exec_prefix=NONE
])

AC_INIT([README])
SRC_DIR=src
TST_DIR=test
DOC_DIR=doc

m4_define(x_packagename, swissbrowser)
m4_define(x_major, 1)
m4_define(x_minor, 2)

PACKAGENAME=x_packagename
MAJOR=x_major
MINOR=x_minor
BUILDDATE=$(date "+%d.%m.%Y/%H.%M")

if svn info . 2>&1 > /dev/null; then
    LEAST=$(LANG= svn info $path | sed -n 's/Revision: //p')
    break;
else
    LEAST=[$(pwd | sed -n 's,^.*/'${PACKAGENAME}'-'${MAJOR}'\.'${MINOR}'\.\([0-9]*\).*$,\1,p')]
    if test -z "${LEAST}"; then
        LEAST="ERROR CANNOT DETERMINE REVISION NUMBER from $(pwd)"
    fi
fi

AM_INIT_AUTOMAKE($PACKAGENAME, $MAJOR.$MINOR.$LEAST, [marc.waeckerlin@tech.swisssign.com])

# files to create
AC_CONFIG_FILES([makefile ${PACKAGENAME}.spec src/version.cxx
                 test/makefile test/qmake.pro
                 src/makefile
                 src/qmake.pro src/languages.qrc
                 src/qbrowserlib/makefile
                 src/qbrowserlib/qmake.pro src/qbrowserlib/languages.qrc
                 src/designer/makefile
                 src/designer/qmake.pro src/designer/resources.qrc
                 doc/doxyfile doc/makefile
                 debian/changelog])

# copy M4 to shell
AC_SUBST(MAJOR)
AC_SUBST(MINOR)
AC_SUBST(LEAST)
AC_SUBST(BUILDDATE)

# libtool versioning
LIB_MAJOR=m4_eval(x_major+x_minor)
LIB_MINOR=${LEAST}
LIB_LEAST=x_minor
LIB_VERSION="${LIB_MAJOR}:${LIB_MINOR}:${LIB_LEAST}"
AC_SUBST(LIB_VERSION)

# home
AC_SUBST(HOME)

# datadir for languages
AX_DEFINE_DIR([DATADIR], [datadir])
#AC_SUBST(DATADIR)

# macros
README=README
AC_SUBST_FILE(README)
CHANGE_LOG=ChangeLog
AC_SUBST_FILE(CHANGE_LOG)

AM_CPPFLAGS="-DPACKAGEVERSION='\"${VERSION}\"' -DPACKAGENAME='\"${PACKAGENAME}\"'"

# Get rid of that stupid -O2 -g opions!
CXXFLAGS="${CXXFLAGS:-}"

# languages
AC_LANG(C++)

# programs
AC_PROG_CXX
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
AC_CHECK_PROG(have_doxygen, doxygen, yes, no)
AC_CHECK_PROG(have_dot, dot, yes, no)

AC_ARG_ENABLE(pedantic,
  [AS_HELP_STRING([--enable-pedantic],
                  [enable all warnings and checks, abort on warnings])],
  [have_pedantic="$enableval"; test "$enableval" = "yes" &&  \
     AM_CXXFLAGS="${AM_CXXFLAGS:-} -pedantic-errors -Wall -W -Wfloat-equal -Wundef -Wendif-labels -Wpointer-arith -Wcast-align -Wwrite-strings -Wconversion -Wsign-compare -Wmissing-format-attribute -Wno-multichar -Wpacked -Wredundant-decls -Werror -Wshadow -Wcast-qual -Wno-ctor-dtor-privacy"])
dnl problem in libs: -Wshadow -Wcast-qual
dnl auto.hpp: -Wno-ctor-dtor-privacy (removed)
AM_CONDITIONAL(PEDANTIC, test "$enableval" = "yes")
AC_ARG_ENABLE(dot,
  [AS_HELP_STRING([--disable-dot],
                  [disable dot graphic tools for documentation])],
  [have_dot="$enableval"])
test "$enableval" = "yes" && HAVE_DOT="YES" || HAVE_DOT="NO";
AM_PATH_CPPUNIT([1.0.0], [have_cppunit="yes"], [have_cppunit="no"])

# Qt Designer Plugin Dir
AC_MSG_CHECKING([QT_INSTALL_PLUGINS])
AC_ARG_WITH([qt-install-plugins],
  [AS_HELP_STRING([--with-qt-install-plugins=DIR],
                  [Qt designer plugin directory])],
                  QT_INSTALL_PLUGINS=$withval)
# Check that QTDIR is defined or that --with-qtdir given
if test x"$QT_INSTALL_PLUGINS" = x ; then
   # some usual Qt-locations
   QT_SEARCH="/usr/share/qt4 /usr/lib/qt4 /usr/lib/qt /usr/X11R6 /opt/local/lib/qt4 /opt/local/share/qt4 /usr/local/Trolltech/Qt-4.0.0 /usr/local/Trolltech/Qt-4.0.1 /usr/local/Trolltech/Qt-4.1.0 /usr/local/Trolltech/Qt-4.2.0 /usr/local/Trolltech/Qt-4.2.1 /usr/local/Trolltech/Qt-4.2.2"
   for p in ${QT_SEARCH}; do
       if test -d ${p}/plugins/designer; then
          QT_INSTALL_PLUGINS=${p}/plugins/designer
          break
       fi
   done
   if test x"$QT_INSTALL_PLUGINS" = x ; then
      for p in ${QT_SEARCH}; do
          if test -d ${p}/plugins; then
              QT_INSTALL_PLUGINS=${p}/plugins/designer
              break
          fi
      done
   fi
fi
if test x"$QT_INSTALL_PLUGINS" = x ; then
   AC_MSG_ERROR([*** --with-qt-install-plugins or QT_INSTALL_PLUGINS must be given])
fi
AC_MSG_RESULT([$QT_INSTALL_PLUGINS])
AC_SUBST(QT_INSTALL_PLUGINS)

MINGW32=no
MAC=no
case $host_os in
  *mingw32*) MINGW32=yes;;
  *darwin* | *rhapsody* | *macosx*) MAC=yes;;
esac
AM_CONDITIONAL(MINGW32, test "$MINGW32" = "yes")
AM_CONDITIONAL(MAC, test "$MAC" = "yes")

# Special Options
AC_CHECK_PROGS([LRELEASE], [lrelease-qt4 lrelease-mac lrelease])
test -n "$LRELEASE" || AC_MSG_ERROR([lrelease for Qt 4 not found!])
AC_SUBST(LRELEASE)
AC_CHECK_PROGS([LUPDATE], [lupdate-qt4 lupdate-mac lupdate])
test -n "$LUPDATE" || AC_MSG_ERROR([lupdate for Qt 4 not found!])
AC_SUBST(LUPDATE)

# Environment Variables
AC_ARG_VAR(LUPDATE_ARGS, [arguments for qt lupdate command, e.g. -no-obsolete])
AC_PATH_PROG(QMAKE, [qmake qmake-qt4], [],
             [$PATH$PATH_SEPARATOR/usr/lib/qt4/bin]dnl
             [$PATH_SEPARATOR/usr/lib64/qt4/bin])
AC_ARG_VAR(QMAKE, [path to qmake program])

# export macros
SRCDIR=${srcdir}
AC_SUBST(SRCDIR)
AC_SUBST(SRC_DIR)
AC_SUBST(TST_DIR)
AC_SUBST(DOC_DIR)
AC_SUBST(HAVE_DOT)
AC_SUBST(THREADS)
AC_SUBST(PACKAGENAME)
AC_SUBST(AM_CXXFLAGS)
AC_SUBST(AM_CPPFLAGS)
AC_SUBST(LIBS)

# create output
AC_OUTPUT
# infos and warnings
if test "$have_doxygen" = "no"; then
AC_MSG_WARN([Missing program doxygen!
  - you cannot rebuild the documentation with make doc
  - there are precompiled derived files in the distribution]); fi
if test "$have_dot" = "no"; then
AC_MSG_WARN([Missing program dot!
  - when you rebild documentation with make doc, there are no generated images
  - there are precompiled derived files in the distribution]); fi
if test "$have_cppunit" = "no"; then
AC_MSG_WARN([Missing cppunit development library!
  - you cannot check the library using "make check"
  - everything else works perfectly]); fi
if test "$have_pedantic" == "yes"; then
AC_MSG_NOTICE([Pedantic compile mode enabled!
  - all warnings for GNU g++ are enabled
  - all warnings result in an error
  - doxygen warnings are treated as error too]); fi
