Blob


1 AC_INIT([telescope], [0.6.1-dev], [telescope@omarpolo.com], [telescope], [gemini://telescope.omarpolo.com])
2 AC_CONFIG_LIBOBJ_DIR(compat)
3 AC_CANONICAL_HOST
4 AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])
5 AC_PROG_CC_C99
6 AC_USE_SYSTEM_EXTENSIONS
7 AC_PROG_YACC
9 PKG_PROG_PKG_CONFIG
11 AC_ARG_VAR(HOSTCC, [The C compiler on the host.])
12 AC_ARG_VAR(HOSTCFLAGS, [CFLAGS for the host compiler])
14 test -z "${HOSTCC}" && HOSTCC='$(CC)'
15 test -z "${HOSTCFLAGS}" && HOSTCFLAGS='$(CFLAGS)'
17 AC_ARG_WITH([libimsg],
18 AS_HELP_STRING([--with-libimsg],
19 [Build with imsg-compat library (default: disabled)]))
21 AC_ARG_WITH([libbsd],
22 AS_HELP_STRING([--with-libbsd],
23 [Build with libbsd library (default: disabled)]))
25 AS_IF([test "x$with_libbsd" = "xyes"], [
26 PKG_CHECK_MODULES([libbsd], [libbsd-overlay libbsd-ctor], [
27 CFLAGS="$libbsd_CFLAGS $CFLAGS"
28 LIBS="$libbsd_LIBS $LIBS"
29 ])
30 ])
32 AC_REPLACE_FUNCS([
33 asprintf \
34 err \
35 explicit_bzero \
36 freezero \
37 getdtablecount \
38 getdtablesize \
39 getprogname \
40 memmem \
41 recallocarray \
42 strcasestr \
43 strlcat \
44 strlcpy \
45 strsep \
46 strtonum \
47 setproctitle \
48 ])
50 AC_MSG_CHECKING([for sys/queue.h with TAILQ_FOREACH_SAFE])
51 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
52 #include <sys/queue.h>
53 #include <stddef.h>
54 ], [
55 TAILQ_HEAD(tailhead, entry) head;
56 struct entry {
57 TAILQ_ENTRY(entry) entries;
58 } *np, *nt;
59 TAILQ_INIT(&head);
60 TAILQ_FOREACH_SAFE(np, &head, entries, nt) {
61 /* nop */ ;
62 }
63 return 0;
64 ])], [
65 AC_MSG_RESULT(yes)
66 AC_DEFINE([HAVE_QUEUE_H], 1, [QUEUE_H])
67 ], AC_MSG_RESULT(no))
69 AC_CHECK_DECL(PR_SET_NAME, AC_DEFINE([HAVE_PR_SET_NAME], 1, [pr_set_name]), [],
70 [[#include <sys/prctl.h>]])
72 AC_SEARCH_LIBS([initscr], [ncursesw ncurses], [], [
73 AC_MSG_ERROR([requires either ncursesw or ncurses library])
74 ])
76 AC_SEARCH_LIBS([keyname], [ncursesw ncurses tinfow tinfo], [], [
77 AC_MSG_ERROR([requires either ncursesw or ncurses library with terminfo support])
78 ])
80 AC_CHECK_LIB(tls, tls_init, [], [
81 AC_MSG_ERROR([requires libtls])
82 ])
84 case "$host_os" in
85 *openbsd*)
86 AC_CHECK_LIB([event], [event_init], [],
87 [AC_MSG_ERROR([requires libevent])])
88 ;;
89 *)
90 PKG_CHECK_MODULES([libevent2], [libevent_core >= 2], [
91 AC_DEFINE([HAVE_EVENT2], 1, [1 if using event2])
92 CFLAGS="$libevent2_CFLAGS $CFLAGS"
93 LIBS="$libevent2_LIBS $LIBS"
94 ], [AC_MSG_ERROR([requires libevent])])
95 ;;
96 esac
98 AS_IF([test "x$with_libimsg" = "xyes"], [
99 PKG_CHECK_MODULES([libimsg], [libimsg], [
100 CFLAGS="$libimsg_CFLAGS $CFLAGS"
101 LIBS="$libimsg_LIBS $LIBS"
102 ])
103 ])
105 AC_SEARCH_LIBS([imsg_init], [util], [
106 AC_DEFINE([HAVE_IMSG], 1,
107 [Define to 1 if you have imsg functions (-lutil or -limsg).])
108 ], [
109 AC_LIBOBJ(imsg)
110 AC_LIBOBJ(imsg-buffer)
114 AC_CHECK_LIB(util, ohash_init, [], [
115 AC_LIBOBJ(ohash)
116 AC_LIBOBJ(fmt_scaled)
117 ])
119 AC_CHECK_FUNCS([asr_run])
121 AC_CHECK_HEADERS([linux/landlock.h])
123 # check compiler flags
124 AC_DEFUN([CC_ADD_CHECK_FLAGS], [
125 AC_MSG_CHECKING([if $CC supports $1 flag])
126 old_CFLAGS="$CFLAGS"
127 CFLAGS="$CFLAGS $1"
128 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
129 AC_MSG_RESULT(yes),
130 AC_MSG_RESULT(no)
131 CFLAGS="$old_CFLAGS")
132 ])
133 CC_ADD_CHECK_FLAGS([-Wall])
134 CC_ADD_CHECK_FLAGS([-Wextra])
135 CC_ADD_CHECK_FLAGS([-Wmissing-prototypes])
136 CC_ADD_CHECK_FLAGS([-Wstrict-prototypes])
137 CC_ADD_CHECK_FLAGS([-Wwrite-strings])
138 CC_ADD_CHECK_FLAGS([-Wno-unused-parameter])
140 AC_CONFIG_HEADERS([config.h])
141 AC_CONFIG_FILES([
142 Makefile
143 pages/about_new.gmi
144 pages/about_crash.gmi
145 ])
147 AC_OUTPUT