1 AC_INIT([kamid], [0.2], [kamid@omarpolo.com], [],
2 [https://kamid.omarpolo.com])
4 AC_CONFIG_LIBOBJ_DIR(compat)
5 AM_INIT_AUTOMAKE([foreign subdir-objects])
9 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
11 AC_SUBST(KAMID_RELEASE)
15 # When CFLAGS isn't set at this stage and gcc is detected by the macro below,
16 # autoconf will automatically use CFLAGS="-O2 -g". Prevent that by using an
20 # Save user CPPFLAGS, CFLAGS and LDFLAGS. We need to change them because
21 # AC_CHECK_HEADER doesn't give us any other way to update the include
22 # paths. But for Makefile.am we want to use AM_CPPFLAGS and friends.
23 SAVED_CFLAGS="$CFLAGS"
24 SAVED_CPPFLAGS="$CPPFLAGS"
25 SAVED_LDFLAGS="$LDFLAGS"
27 # Checks for programs.
36 AC_USE_SYSTEM_EXTENSIONS
38 # Some functions can be in libbsd. Thanks to lldpb for the inspiration :)
40 AS_HELP_STRING([--with-libbsd], [Use libbsd @<:@default=auto@:>@]),
43 if test x"$with_libbsd" != x"no"; then
44 PKG_CHECK_MODULES([libbsd], [libbsd-overlay libbsd-ctor], [
45 _save_AM_CFLAGS="$AM_CFLAGS"
47 AM_CFLAGS="$AM_CFLAGS $libbsd_CFLAGS"
48 LIBS="$LIBS $libbsd_LIBS"
50 if test x"$with_libbsd" = x"yes"; then
51 AC_MSG_FAILURE([*** no libbsd support found])
76 AC_MSG_CHECKING([for sys/queue.h with TAILQ_FOREACH_SAFE and STAILQ_ENTRY])
77 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
78 #include <sys/queue.h>
81 TAILQ_HEAD(tailhead, entry) head;
83 TAILQ_ENTRY(entry) entries;
86 TAILQ_FOREACH_SAFE(np, &head, entries, nt) {
90 STAILQ_HEAD(listhead, qentry) qhead = STAILQ_HEAD_INITIALIZER(qhead);
92 STAILQ_ENTRY(qentry) entries;
98 AC_DEFINE([HAVE_QUEUE_H], 1, [QUEUE_H])
101 AC_CHECK_HEADERS([sys/tree.h])
103 AC_CHECK_HEADER([endian.h], [AC_DEFINE(HAVE_ENDIAN_H, 1, [have endian.h])], [
104 AC_CHECK_HEADER([sys/endian.h],
105 [AC_DEFINE(HAVE_SYS_ENDIAN_H, 1, [have sys/endian.h])], [
106 AC_CHECK_HEADERS([libkern/OSByteOrder.h],
107 [AC_DEFINE(HAVE_LIBKERN_OSBYTEORDER_H, 1, [have OSByteOrder.h])],
108 [AC_MSG_ERROR([can't find compatible endian.h header])],
109 [#include <machine/endian.h>])
113 AC_CHECK_DECL(PR_SET_NAME, AC_DEFINE([HAVE_PR_SET_NAME], 1, [pr_set_name]), [],
114 [[#include <sys/prctl.h>]])
116 AC_CHECK_LIB([crypto], [RAND_add], [], [
117 AC_MSG_ERROR([requires openssl])
120 AC_CHECK_LIB(tls, tls_init, [], [
121 AC_MSG_ERROR([requires libtls])
125 [*openbsd*], [AC_CHECK_LIB([event], [event_init], [],
126 [AC_MSG_ERROR([requires libevent])])],
127 [PKG_CHECK_MODULES([libevent2], [libevent_core >= 2],
129 AC_DEFINE([HAVE_EVENT2], 1, [1 if using event2])
130 AM_CFLAGS="$libevent2_CFLAGS $AM_CFLAGS"
131 LIBS="$libevent2_LIBS $LIBS"
132 ], [AC_MSG_ERROR([requires libevent])])])
134 AC_CHECK_LIB(util, imsg_init, [], [
135 AC_LIBOBJ(fmt_scaled)
137 AC_LIBOBJ(imsg-buffer)
144 AC_DEFINE([HAVE_READLINE], 1, [1 if readline found])
146 READLINE_LIBS='-lreadline'
148 PKG_CHECK_MODULES([READLINE], [readline], [
149 AC_DEFINE([HAVE_READLINE], 1, [])
151 AC_DEFINE([HAVE_READLINE], 0, [])
155 AC_SUBST(READLINE_CFLAGS)
156 AC_SUBST(READLINE_LIBS)
158 # check compiler flags
159 AC_DEFUN([CC_ADD_CHECK_FLAGS], [
160 AC_MSG_CHECKING([if $CC supports $1 flag])
161 old_AM_CFLAGS="$AM_CFLAGS"
162 AM_CFLAGS="$AM_CFLAGS $1"
163 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])],
164 AC_MSG_RESULT(yes), [
166 AM_CFLAGS="$old_AM_CFLAGS"
169 CC_ADD_CHECK_FLAGS([-Wall])
170 CC_ADD_CHECK_FLAGS([-Wextra])
171 CC_ADD_CHECK_FLAGS([-Wmissing-declarations])
172 CC_ADD_CHECK_FLAGS([-Wmissing-prototypes])
173 CC_ADD_CHECK_FLAGS([-Wstrict-prototypes])
174 CC_ADD_CHECK_FLAGS([-Wwrite-strings])
175 CC_ADD_CHECK_FLAGS([-Wno-unused-parameter])
176 CC_ADD_CHECK_FLAGS([-Wpointer-arith])
177 CC_ADD_CHECK_FLAGS([-Wsign-compare])
178 CC_ADD_CHECK_FLAGS([-Wcast-align])
180 # Save our CFLAGS/CPPFLAGS/LDFLAGS for the Makefile and restore the old user
182 AC_SUBST(AM_CPPFLAGS)
183 CPPFLAGS="$SAVED_CPPFLAGS"
185 CFLAGS="$SAVED_CFLAGS"
187 LDFLAGS="$SAVED_LDFLAGS"
189 AC_CONFIG_HEADERS([config.h])
201 regress/lisp/Makefile
202 regress/ninepscript/Makefile