Blob


1 AC_INIT([kamid], [0.1], [kamid@omarpolo.com], [kamid], [gemini://kamid.omarpolo.com])
2 AC_CONFIG_LIBOBJ_DIR(compat)
3 AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])
4 AC_PROG_CC
5 AC_USE_SYSTEM_EXTENSIONS
6 AC_PROG_YACC
8 AC_REPLACE_FUNCS([
9 arc4random \
10 asprintf \
11 err \
12 freezero \
13 getdtablecount \
14 getdtablesize \
15 getprogname \
16 recallocarray \
17 setproctitle \
18 setprogname \
19 strlcat \
20 strlcpy \
21 strtonum \
22 ])
24 AC_MSG_CHECKING([for sys/queue.h with TAILQ_FOREACH_SAFE])
25 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
26 #include <sys/queue.h>
27 #include <stddef.h>
28 ], [
29 TAILQ_HEAD(tailhead, entry) head;
30 struct entry {
31 TAILQ_ENTRY(entry) entries;
32 } *np, *nt;
33 TAILQ_INIT(&head);
34 TAILQ_FOREACH_SAFE(np, &head, entries, nt) {
35 /* nop */ ;
36 }
37 return 0;
38 ])], [
39 AC_MSG_RESULT(yes)
40 AC_DEFINE([HAVE_QUEUE_H], 1, [QUEUE_H])
41 ], AC_MSG_RESULT(no))
43 AC_CHECK_HEADERS([sys/tree.h])
45 AC_CHECK_DECL(PR_SET_NAME, AC_DEFINE([HAVE_PR_SET_NAME], 1, [pr_set_name]), [],
46 [[#include <sys/prctl.h>]])
48 AC_CHECK_LIB([crypto], [RAND_add], [], [
49 AC_MSG_ERROR([requires openssl])
50 ])
52 AC_CHECK_LIB(tls, tls_init, [], [
53 AC_MSG_ERROR([requires libtls])
54 ])
56 AC_CHECK_LIB(event, event_init, [], [
57 AC_MSG_ERROR([requires libevent])
58 ])
60 AC_CHECK_LIB(util, imsg_init, [], [
61 AC_LIBOBJ(imsg)
62 AC_LIBOBJ(imsg-buffer)
63 AC_LIBOBJ(ohash)
64 ])
66 # check compiler flags
67 AC_DEFUN([CC_ADD_CHECK_FLAGS], [
68 AC_MSG_CHECKING([if $CC supports $1 flag])
69 old_CFLAGS="$CFLAGS"
70 CFLAGS="$CFLAGS $1"
71 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
72 AC_MSG_RESULT(yes),
73 AC_MSG_RESULT(no)
74 CFLAGS="$old_CFLAGS")
75 ])
76 CC_ADD_CHECK_FLAGS([-Wall])
77 CC_ADD_CHECK_FLAGS([-Wextra])
78 CC_ADD_CHECK_FLAGS([-Wmissing-prototypes])
79 CC_ADD_CHECK_FLAGS([-Wstrict-prototypes])
80 CC_ADD_CHECK_FLAGS([-Wwrite-strings])
81 CC_ADD_CHECK_FLAGS([-Wno-unused-parameter])
83 AC_CONFIG_HEADERS([config.h])
84 AC_CONFIG_FILES([
85 Makefile
86 ])
88 AC_OUTPUT