dnl ProFTPD - mod_prometheus
dnl Copyright (c) 2021 TJ Saunders <tj@castaglia.org>
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2 of the License, or
dnl (at your option) any later version.
dnl
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA.
dnl
dnl Process this file with autoconf to produce a configure script.

AC_INIT(./mod_prometheus.c)

AC_CANONICAL_SYSTEM

ostype=`echo $build_os | sed 's/\..*$//g' | sed 's/-.*//g' | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`

AC_PROG_CC
AC_PROG_CPP
AC_AIX
AC_ISC_POSIX
AC_MINIX
AC_PROG_MAKE_SET

dnl Need to support/handle the --with-includes and --with-libraries options
AC_ARG_WITH(includes,
  [AC_HELP_STRING(
    [--with-includes=LIST],
    [add additional include paths to proftpd. LIST is a colon-separated list of include paths to add e.g. --with-includes=/some/mysql/include:/my/include])
  ],
  [ ac_addl_includes=`echo "$withval" | sed -e 's/:/ /g'` ;
    for ainclude in $ac_addl_includes; do
      if test x"$ac_build_addl_includes" = x ; then
        ac_build_addl_includes="-I$ainclude"
      else
        ac_build_addl_includes="-I$ainclude $ac_build_addl_includes"
      fi
    done
    CPPFLAGS="$CPPFLAGS $ac_build_addl_includes"
  ])

AC_ARG_WITH(libraries,
  [AC_HELP_STRING(
    [--with-libraries=LIST],
    [add additional library paths to proftpd. LIST is a colon-separated list of include paths to add e.g. --with-libraries=/some/mysql/libdir:/my/libs])
  ],
  [ ac_addl_libdirs=`echo "$withval" | sed -e 's/:/ /g'` ;
    for alibdir in $ac_addl_libdirs; do
      if test x"$ac_build_addl_libdirs" = x ; then
        ac_build_addl_libdirs="-L$alibdir"
      else
        ac_build_addl_libdirs="-L$alibdir $ac_build_addl_libdirs"
      fi
    done
    LDFLAGS="$LDFLAGS $ac_build_addl_libdirs"
  ])

AC_HEADER_STDC
AC_CHECK_HEADERS(microhttpd.h sqlite3.h stdlib.h unistd.h limits.h fcntl.h sys/sysctl.h sys/sysinfo.h zlib.h)
AC_CHECK_FUNCS(sysctl sysinfo)

# Check for SQLite-isms
AC_MSG_CHECKING([for sqlite3_stmt_readonly])
saved_libs="$LIBS"
LIBS="-lsqlite3"
AC_TRY_LINK([
    #include <stdlib.h>
    #include <sys/types.h>
    #ifdef HAVE_SQLITE3_H
    # include <sqlite3.h>
    #endif
  ], [
    (void) sqlite3_stmt_readonly(NULL);
  ], [
    AC_MSG_RESULT(yes)
    AC_DEFINE(HAVE_SQLITE3_STMT_READONLY, 1, [Define if you have the sqlite3_stmt_readonly function])
  ], [
    AC_MSG_RESULT(no)
  ]
)
LIBS="$saved_libs"

AC_MSG_CHECKING([for sqlite3_trace])
saved_libs="$LIBS"
LIBS="-lsqlite3"
AC_TRY_LINK([
    #include <stdlib.h>
    #include <sys/types.h>
    #ifdef HAVE_SQLITE3_H
    # include <sqlite3.h>
    #endif
  ], [
    (void) sqlite3_trace(NULL, NULL, NULL);
  ], [
    AC_MSG_RESULT(yes)
    AC_DEFINE(HAVE_SQLITE3_TRACE, 1, [Define if you have the sqlite3_trace function])
  ], [
    AC_MSG_RESULT(no)
  ]
)
LIBS="$saved_libs"

AC_MSG_CHECKING([for sqlite3_trace_v2])
saved_libs="$LIBS"
LIBS="-lsqlite3"
AC_TRY_LINK([
    #include <stdlib.h>
    #include <sys/types.h>
    #ifdef HAVE_SQLITE3_H
    # include <sqlite3.h>
    #endif
  ], [
    (void) sqlite3_trace_v2(NULL, 0, NULL, NULL);
  ], [
    AC_MSG_RESULT(yes)
    AC_DEFINE(HAVE_SQLITE3_TRACE_V2, 1, [Define if you have the sqlite3_trace_v2 function])
  ], [
    AC_MSG_RESULT(no)
  ]
)
LIBS="$saved_libs"

ac_compression_libs=''
saved_libs="$LIBS"
LIBS="$LIBS -lz"
AC_MSG_CHECKING([for gzip in libz])
AC_TRY_LINK(
  [ #include <stdlib.h>
    #include <sys/types.h>
    #ifdef HAVE_ZLIB_H
    # include <zlib.h>
    #endif
  ],
  [
    int res;
    res = deflateSetHeader(NULL, NULL);
  ],
  [
    AC_MSG_RESULT(yes)
    ac_compression_libs="-lz"
  ],
  [
    AC_MSG_RESULT(no)
  ]
)
LIBS="$saved_libs"

INCLUDES="$ac_build_addl_includes"
LIBDIRS="$ac_build_addl_libdirs"
MODULE_LIBS="$ac_compression_libs"

AC_SUBST(INCLUDES)
AC_SUBST(LDFLAGS)
AC_SUBST(LIBDIRS)
AC_SUBST(MODULE_LIBS)

AC_CONFIG_HEADER(mod_prometheus.h)
AC_OUTPUT(
  t/Makefile
  Makefile
)
