commit - 0d6fb46a3481c0493884d5b916be3ccccd896cf7
commit + 2f90eb01f916ad69d90c24933ae80cdf465ef22e
blob - /dev/null
blob + 67bb54f06de86150fa77bc6a943c7d358e442674 (mode 644)
--- /dev/null
+++ configure.ac
+AC_INIT([kamid-portable], [0.1], [kamid@omarpolo.com], [],
+ [https://kamid.omarpolo.com])
+AC_CONFIG_AUX_DIR(etc)
+AC_CONFIG_LIBOBJ_DIR(compat)
+AM_INIT_AUTOMAKE([foreign subdir-objects])
+
+KAMID_RELEASE=No
+
+AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
+AC_SUBST(VERSION)
+AC_SUBST(KAMID_RELEASE)
+
+AC_CANONICAL_HOST
+
+# When CFLAGS isn't set at this stage and gcc is detected by the macro below,
+# autoconf will automatically use CFLAGS="-O2 -g". Prevent that by using an
+# empty default.
+: ${CFLAGS=""}
+
+# Save user CPPFLAGS, CFLAGS and LDFLAGS. We need to change them because
+# AC_CHECK_HEADER doesn't give us any other way to update the include
+# paths. But for Makefile.am we want to use AM_CPPFLAGS and friends.
+SAVED_CFLAGS="$CFLAGS"
+SAVED_CPPFLAGS="$CPPFLAGS"
+SAVED_LDFLAGS="$LDFLAGS"
+
+# Checks for programs.
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AC_PROG_YACC
+PKG_PROG_PKG_CONFIG
+AC_USE_SYSTEM_EXTENSIONS
+
+# Some functions can be in libbsd. Thanks to lldpb for the inspiration :)
+AC_ARG_WITH([libbsd],
+ AS_HELP_STRING([--with-libbsd], [Use libbsd @<:@default=auto@:>@]),
+ [],
+ [with_libbsd=auto])
+if test x"$with_libbsd" != x"no"; then
+ PKG_CHECK_MODULES([libbsd], [libbsd-overlay libbsd-ctor], [
+ _save_AM_CFLAGS="$AM_CFLAGS"
+ _save_LIBS="$LIBS"
+ AM_CFLAGS="$AM_CFLAGS $libbsd_CFLAGS"
+ LIBS="$LIBS $libbsd_LIBS"
+ ], [
+ if test x"$with_libbsd" = x"yes"; then
+ AC_MSG_FAILURE([*** no libbsd support found])
+ fi
+ with_libbsd=no
+ ])
+fi
+
+# Checks for library functions.
+AC_SEARCH_LIBS([arc4random], [],
+ [AC_DEFINE([HAVE_ARC4RANDOM], 1, [arc4random])],
+ [AC_DEFINE([HAVE_ARC4RANDOM], 0, [arc4random])])
+
+AC_REPLACE_FUNCS([
+ asprintf \
+ err \
+ freezero \
+ getdtablecount \
+ getdtablesize \
+ getprogname \
+ memmem \
+ recallocarray \
+ setproctitle \
+ setprogname \
+ strlcat \
+ strlcpy \
+ strsep \
+ strtonum \
+ vis \
+])
+
+AC_MSG_CHECKING([for sys/queue.h with TAILQ_FOREACH_SAFE and STAILQ_ENTRY])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+#include <sys/queue.h>
+#include <stddef.h>
+], [
+ TAILQ_HEAD(tailhead, entry) head;
+ struct entry {
+ TAILQ_ENTRY(entry) entries;
+ } *np, *nt;
+ TAILQ_INIT(&head);
+ TAILQ_FOREACH_SAFE(np, &head, entries, nt) {
+ /* nop */ ;
+ }
+
+ STAILQ_HEAD(listhead, qentry) qhead = STAILQ_HEAD_INITIALIZER(qhead);
+ struct qentry {
+ STAILQ_ENTRY(qentry) entries;
+ } foo;
+
+ return 0;
+])], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([HAVE_QUEUE_H], 1, [QUEUE_H])
+], AC_MSG_RESULT(no))
+
+AC_CHECK_HEADERS([sys/tree.h])
+
+AC_CHECK_DECL(PR_SET_NAME, AC_DEFINE([HAVE_PR_SET_NAME], 1, [pr_set_name]), [],
+ [[#include <sys/prctl.h>]])
+
+AC_CHECK_LIB([crypto], [RAND_add], [], [
+ AC_MSG_ERROR([requires openssl])
+])
+
+AC_CHECK_LIB(tls, tls_init, [], [
+ AC_MSG_ERROR([requires libtls])
+])
+
+AS_CASE([$host_os],
+ [*openbsd*], [AC_CHECK_LIB([event], [event_init], [],
+ [AC_MSG_ERROR([requires libevent])])],
+ [PKG_CHECK_MODULES([libevent2], [libevent_core >= 2],
+ [
+ AC_DEFINE([HAVE_EVENT2], 1, [1 if using event2])
+ AM_CFLAGS="$libevent2_CFLAGS $AM_CFLAGS"
+ LIBS="$libevent2_LIBS $LIBS"
+ ], [AC_MSG_ERROR([requires libevent])])])
+
+AC_CHECK_LIB(util, imsg_init, [], [
+ AC_LIBOBJ(fmt_scaled)
+ AC_LIBOBJ(imsg)
+ AC_LIBOBJ(imsg-buffer)
+ AC_LIBOBJ(ohash)
+])
+
+# Save our CFLAGS/CPPFLAGS/LDFLAGS for the Makefile and restore the old user
+# variables.
+AC_SUBST(AM_CPPFLAGS)
+CPPFLAGS="$SAVED_CPPFLAGS"
+AC_SUBST(AM_CFLAGS)
+CFLAGS="$SAVED_CFLAGS"
+AC_SUBST(AM_LDFLAGS)
+LDFLAGS="$SAVED_LDFLAGS"
+
+AC_CONFIG_FILES([
+ Makefile
+ kamictl/Makefile
+ kamid/Makefile
+ kamiftp/Makefile
+ kamirepl/Makefile
+ ninepscript/Makefile
+])
+
+AC_OUTPUT