commit 2f90eb01f916ad69d90c24933ae80cdf465ef22e from: Omar Polo date: Sun Jan 09 16:54:24 2022 UTC add the configure script commit - 0d6fb46a3481c0493884d5b916be3ccccd896cf7 commit + 2f90eb01f916ad69d90c24933ae80cdf465ef22e blob - /dev/null blob + 67bb54f06de86150fa77bc6a943c7d358e442674 (mode 644) --- /dev/null +++ configure.ac @@ -0,0 +1,152 @@ +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 +#include +], [ + 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 ]]) + +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