dnl Compile in the exec prefix to help kstddirs in finding dynamic libs
AC_DEFINE_UNQUOTED(__KDE_EXECPREFIX, "$exec_prefix", [execprefix or NONE if not set, for libloading])

dnl Compile in kde_bindir to safely find tdesu_stub.
if test "$exec_prefix" = "NONE"; then
    bindir_str="\"$prefix/bin\""
else
    bindir_str="\"$exec_prefix/bin\""
fi
AC_DEFINE_UNQUOTED(__TDE_BINDIR, $bindir_str, [TDE bindir])

dnl tests for openpty support
AC_MSG_CHECKING(whether we can use openpty)
AC_ARG_ENABLE(openpty,
  [  --disable-openpty       disable openpty (UNIX98 terminals) support [default=enabled]],
  [ac_use_openpty=$enableval], [ac_use_openpty=yes])
if test "$ac_use_openpty" = "yes"; then
	kde_safe_LIBS=$LIBS
	LIBS="$LIBS $LIBUTIL"
	AC_TRY_RUN([
#include <pty.h>

int main(int argc, char* argv) {
	int master_fd, slave_fd;
	int result;

	result = openpty(&master_fd, &slave_fd, 0, 0, 0);

	return 0;
}
], [ac_use_openpty="yes"], [ac_use_openpty="no"])
	LIBS=$kde_safe_LIBS
fi
if test "$ac_use_openpty" = "yes"; then
	AC_DEFINE(HAVE_OPENPTY, 1, [Defines whether we can use the openpty() function])
	AC_MSG_RESULT(yes)
else
	AC_MSG_RESULT(no)
fi

dnl -------
dnl Test for libidn (IDNA support)
dnl -------

AC_ARG_WITH(libidn,
  [AC_HELP_STRING(--with-libidn,
    [enable support for libidn @<:@default=check@:>@])],
  [], with_libidn=check)
LIB_IDN=
if test "x$with_libidn" != xno; then
  AC_CHECK_HEADERS([idna.h punycode.h stringprep.h])
  KDE_CHECK_LIB(idn, idna_to_ascii_4i, [
    AC_DEFINE_UNQUOTED(HAVE_LIBIDN, 1, [Defined if you have libidn in your system])
    LIB_IDN=-lidn
  ])
  if test "x$with_libidn" != xcheck && test -z "$LIB_IDN"; then
    AC_MSG_ERROR([--with-libidn was given, but test for libidn failed])
  fi
fi
AC_SUBST(LIB_IDN)

dnl --------
dnl KNetwork extra configuration
dnl --------

netincludes="#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>"

kde_safe_LIBS="$LIBS"
LIBS="$LIBS $all_libraries $X_EXTRA_LIBS"
AC_CHECK_FUNCS([inet_ntop inet_pton getpeername getsockname getsockopt gethostbyname2_r gethostbyname_r gethostbyname2 if_nametoindex getprotobyname_r getservbyname_r getservbyport_r])
LIBS="$kde_safe_LIBS"

dnl
dnl Some systems, like OpenBSD 3.6, have getservbyname_r but don't declare it
dnl
if test "x$ac_cv_func_getservbyname_r" = "xyes"; then

  AC_CHECK_DECLS([getservbyname_r],,,[$netincludes])

fi

KDE_CHECK_HEADERS([netinet/in.h net/if.h],,,[$netincludes])
KDE_CHECK_HEADERS([sys/filio.h])
AC_CHECK_FUNCS([usleep poll madvise])

dnl Check for struct addrinfo
AC_CHECK_TYPES([struct addrinfo],,,[$netincludes])

kde_safe_LIBS="$LIBS"
LIBS="$LIBS $LIBSOCKET"
AC_CHECK_FUNCS([getaddrinfo],
  [
    dnl Even though we now know that getaddrinfo is there, make sure getnameinfo is there too
    kde_gai_ok=true
    AC_CHECK_FUNCS([freeaddrinfo getnameinfo gai_strerror], : , 
    [
      kde_gai_ok=false
      AC_DEFINE(HAVE_BROKEN_GETADDRINFO, 1, [Define if getaddrinfo is broken and should be replaced])
      AC_DEFINE(GETADDRINFO_RETURNS_UNIX, 1, [Define if getaddrinfo returns AF_UNIX sockets])
      break
    ])

    AC_MSG_CHECKING([if getaddrinfo works using numeric service with null host])
    dnl On AIX (4.3), getaddrinfo returns NULL if the hint
    dnl is AF_INET/SOCK_STREAM/AI_PASSIVE.
    dnl The error code reports "Host not found".
    dnl It only seems to return non-NULL if the port is known (eg. in
    dnl /etc/services).
    AC_TRY_RUN(dnl
    [
      #include <sys/types.h>
      #include <sys/socket.h>
      #include <netdb.h>
      #include <string.h>
      int main()
      {
        struct addrinfo hint, *res;
        int err;
        memset(&hint, 0, sizeof(hint));
        hint.ai_family = AF_INET;
        hint.ai_protocol = 0;
        hint.ai_socktype = SOCK_STREAM;
        hint.ai_flags = AI_PASSIVE;
        err = getaddrinfo(0, "18300", &hint, &res); /* kxmlrpc tries this */
        if (err != 0 || res == 0 || res->ai_family != AF_INET)
          return 1;
        return 0;
      }
    ],
    [
      AC_MSG_RESULT(yes)
    ],
    [
      AC_MSG_RESULT(no)
      AC_DEFINE(HAVE_BROKEN_GETADDRINFO, 1, [Define if getaddrinfo is broken and should be replaced])
    ],
    [
      AC_MSG_RESULT(cross compiling. We hope so)
    ])
  ]
)
LIBS="$kde_safe_LIBS"

AC_CHECK_MEMBERS([struct sockaddr.sa_len],,,[#include <sys/socket.h>])
AC_CHECK_TYPES([struct sockaddr_in6],
  [AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,[#include <netinet/in.h>])],,
  [#include <sys/types.h>
#include <netinet/in.h>])

AC_MSG_CHECKING([for GLIBC function backtrace])
AC_TRY_LINK(dnl
      [
        #include <execinfo.h>
      ],
      [
        void* trace[256];
        backtrace(trace, 256);
      ],
      [
        AC_DEFINE(HAVE_BACKTRACE, 1, [Define if execinfo.h exists and defines backtrace (GLIBC >= 2.1)])
	AC_MSG_RESULT(yes)
      ],
      AC_MSG_RESULT(no)
)

AC_CHECK_HEADERS(sys/mount.h)  

dnl AC_OUTPUT(tdecore/tde-config.cpp)

AM_CONFIG_HEADER(tdecore/kdemacros.h)

SVGICONS=
	
AC_ARG_WITH(libart,
  [AC_HELP_STRING(--with-libart,
    [enable support for libart @<:@default=check@:>@])],
  [], with_libart=check)

if test "x$with_libart" != xno; then
  KDE_FIND_PATH(libart2-config, LIBART_CONFIG, [${prefix}/bin ${exec_prefix}/bin], [
    AC_MSG_WARN([Could not find libart anywhere, check http://www.levien.com/libart/])
  ])

  if test -n "$LIBART_CONFIG"; then
    vers=`$LIBART_CONFIG --version 2>/dev/null | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
    if test -n "$vers" && test "$vers" -ge 2003008
    then
      LIBART_LIBS="`$LIBART_CONFIG --libs`"
      LIBART_RPATH=
      for args in $LIBART_LIBS; do
	  case $args in
	    -L/usr/lib) ;;
	    -L*)
  	       LIBART_RPATH="$LIBART_RPATH $args"
 	       ;;
          esac
      done
      LIBART_RPATH=`echo $LIBART_RPATH | sed -e "s/-L/-R/g"`
      LIBART_CFLAGS="`$LIBART_CONFIG --cflags`"
      SVGICONS=svgicons

      AC_DEFINE_UNQUOTED(HAVE_LIBART, 1, [Defines if your system has the libart library])
    else
      AC_MSG_WARN([You need at least libart 2.3.8])
    fi
  fi
  if test "x$with_libart" != xcheck && test -z "$LIBART_LIBS"; then
    AC_MSG_ERROR([--with-libart was given, but test for libart failed])
  fi
fi


AC_SUBST(LIBART_LIBS)
AC_SUBST(LIBART_CFLAGS)
AC_SUBST(LIBART_RPATH)
AM_CONDITIONAL(include_SVGICONS, test -n "$SVGICONS")

AC_CHECK_HEADERS([sys/stropts.h sys/select.h libutil.h util.h termios.h pty.h termio.h])
AC_MSG_CHECKING([for revoke(tty) in unistd.h])
AC_TRY_LINK(dnl
      [
        #include <unistd.h>
      ],
      [
	revoke("/dev/tty");
      ],
      [
        AC_DEFINE(HAVE_REVOKE, 1, [Define if revoke(tty) is present in unistd.h])
        AC_MSG_RESULT(yes)
      ],
      AC_MSG_RESULT(no)
)
