Blob


1 AC_INIT([telescope], [0.8.1-current], [telescope@omarpolo.com], [telescope], [gemini://telescope.omarpolo.com])
2 AC_CONFIG_AUX_DIR(etc)
3 AC_CONFIG_LIBOBJ_DIR(compat)
4 AC_CANONICAL_HOST
5 AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])
6 AC_PROG_CC_C99
7 AC_USE_SYSTEM_EXTENSIONS
8 AC_PROG_YACC
10 PKG_PROG_PKG_CONFIG
12 AC_ARG_VAR(HOSTCC, [The C compiler on the host.])
13 AC_ARG_VAR(HOSTCFLAGS, [CFLAGS for the host compiler])
15 test -z "${HOSTCC}" && HOSTCC='$(CC)'
16 test -z "${HOSTCFLAGS}" && HOSTCFLAGS='$(CFLAGS)'
18 AC_ARG_WITH([libimsg],
19 AS_HELP_STRING([--with-libimsg],
20 [Build with imsg-compat library (default: disabled)]))
22 AC_ARG_WITH([libbsd],
23 AS_HELP_STRING([--with-libbsd],
24 [Build with libbsd library (default: disabled)]))
26 AS_IF([test "x$with_libbsd" = "xyes"], [
27 PKG_CHECK_MODULES([libbsd], [libbsd-overlay libbsd-ctor], [
28 CFLAGS="$libbsd_CFLAGS $CFLAGS"
29 LIBS="$libbsd_LIBS $LIBS"
30 ])
31 ])
33 AC_REPLACE_FUNCS([
34 asprintf \
35 err \
36 explicit_bzero \
37 freezero \
38 getdtablecount \
39 getdtablesize \
40 getprogname \
41 memmem \
42 recallocarray \
43 strcasestr \
44 strlcat \
45 strlcpy \
46 strsep \
47 strtonum \
48 setproctitle \
49 ])
51 AC_MSG_CHECKING([for sys/queue.h with TAILQ_FOREACH_SAFE])
52 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
53 #include <sys/queue.h>
54 #include <stddef.h>
55 ], [
56 TAILQ_HEAD(tailhead, entry) head;
57 struct entry {
58 TAILQ_ENTRY(entry) entries;
59 } *np, *nt;
60 TAILQ_INIT(&head);
61 TAILQ_FOREACH_SAFE(np, &head, entries, nt) {
62 /* nop */ ;
63 }
64 return 0;
65 ])], [
66 AC_MSG_RESULT(yes)
67 AC_DEFINE([HAVE_QUEUE_H], 1, [QUEUE_H])
68 ], AC_MSG_RESULT(no))
70 AC_CHECK_DECL(PR_SET_NAME, AC_DEFINE([HAVE_PR_SET_NAME], 1, [pr_set_name]), [],
71 [[#include <sys/prctl.h>]])
73 AC_SEARCH_LIBS([initscr], [ncursesw ncurses], [], [
74 AC_MSG_ERROR([requires either ncursesw or ncurses library])
75 ])
77 AC_SEARCH_LIBS([keyname], [ncursesw ncurses tinfow tinfo], [], [
78 AC_MSG_ERROR([requires either ncursesw or ncurses library with terminfo support])
79 ])
81 AC_CHECK_LIB(tls, tls_init, [], [
82 AC_MSG_ERROR([requires libtls])
83 ])
85 PKG_CHECK_MODULES([libgrapheme], [libgrapheme], [
86 AC_SUBST([LIBGRAPHEME], [])
87 CFLAGS="$libgrapheme_CFLAGS $CFLAGS"
88 LIBS="$libgrapheme_LIBS $LIBS"
89 ], [
90 # build the bundled version.
91 AC_SUBST([LIBGRAPHEME], "$srcdir/libgrapheme/libgrapheme.a")
92 CFLAGS="-I$srcdir/libgrapheme $CFLAGS"
93 ])
95 case "$host_os" in
96 *openbsd*)
97 AC_CHECK_LIB([event], [event_init], [],
98 [AC_MSG_ERROR([requires libevent])])
99 ;;
100 *)
101 PKG_CHECK_MODULES([libevent2], [libevent_core >= 2], [
102 AC_DEFINE([HAVE_EVENT2], 1, [1 if using event2])
103 CFLAGS="$libevent2_CFLAGS $CFLAGS"
104 LIBS="$libevent2_LIBS $LIBS"
105 ], [AC_MSG_ERROR([requires libevent])])
106 ;;
107 esac
109 AS_IF([test "x$with_libimsg" = "xyes"], [
110 PKG_CHECK_MODULES([libimsg], [libimsg], [
111 CFLAGS="$libimsg_CFLAGS $CFLAGS"
112 LIBS="$libimsg_LIBS $LIBS"
113 ])
114 ])
116 AC_SEARCH_LIBS([imsg_init], [util], [
117 AC_DEFINE([HAVE_IMSG], 1,
118 [Define to 1 if you have imsg functions (-lutil or -limsg).])
119 ], [
120 AC_LIBOBJ(imsg)
121 AC_LIBOBJ(imsg-buffer)
125 AC_CHECK_LIB(util, ohash_init, [], [
126 AC_LIBOBJ(ohash)
127 AC_LIBOBJ(fmt_scaled)
128 ])
130 AC_CHECK_FUNCS([asr_run])
132 # don't check for landlock: it currently unusable.
133 dnl AC_CHECK_HEADERS([linux/landlock.h])
135 # check compiler flags
136 AC_DEFUN([CC_ADD_CHECK_FLAGS], [
137 AC_MSG_CHECKING([if $CC supports $1 flag])
138 old_CFLAGS="$CFLAGS"
139 CFLAGS="$CFLAGS $1"
140 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
141 AC_MSG_RESULT(yes),
142 AC_MSG_RESULT(no)
143 CFLAGS="$old_CFLAGS")
144 ])
145 CC_ADD_CHECK_FLAGS([-Wall])
146 CC_ADD_CHECK_FLAGS([-Wextra])
147 CC_ADD_CHECK_FLAGS([-Wmissing-declarations])
148 CC_ADD_CHECK_FLAGS([-Wmissing-prototypes])
149 CC_ADD_CHECK_FLAGS([-Wstrict-prototypes])
150 CC_ADD_CHECK_FLAGS([-Wwrite-strings])
151 CC_ADD_CHECK_FLAGS([-Wno-unused-parameter])
152 CC_ADD_CHECK_FLAGS([-Wpointer-arith])
153 CC_ADD_CHECK_FLAGS([-Wsign-compare])
154 CC_ADD_CHECK_FLAGS([-Wcast-align])
156 AC_CONFIG_HEADERS([config.h])
157 AC_CONFIG_FILES([
158 Makefile
159 test/Makefile
160 pages/about_about.gmi
161 pages/about_blank.gmi
162 pages/about_crash.gmi
163 pages/about_help.gmi
164 pages/about_license.gmi
165 pages/about_new.gmi
166 pages/bookmarks.gmi
167 ])
169 AC_OUTPUT