Blob


1 AC_INIT([telescope], [0.4.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_WITH([libimsg],
12 AS_HELP_STRING([--with-libimsg],
13 [Build with imsg-compat library (default: disabled)]))
15 AC_ARG_WITH([libbsd],
16 AS_HELP_STRING([--with-libbsd],
17 [Build with libbsd library (default: disabled)]))
19 AS_IF([test "x$with_libbsd" = "xyes"], [
20 PKG_CHECK_MODULES([libbsd], [libbsd-overlay libbsd-ctor], [
21 CFLAGS="$libbsd_CFLAGS $CFLAGS"
22 LIBS="$libbsd_LIBS $LIBS"
23 ])
24 ])
26 AC_REPLACE_FUNCS([
27 asprintf \
28 err \
29 explicit_bzero \
30 freezero \
31 getdtablecount \
32 getdtablesize \
33 getprogname \
34 memmem \
35 recallocarray \
36 strcasestr \
37 strlcat \
38 strlcpy \
39 strsep \
40 strtonum \
41 setproctitle \
42 ])
44 AC_MSG_CHECKING([for sys/queue.h with TAILQ_FOREACH_SAFE])
45 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
46 #include <sys/queue.h>
47 #include <stddef.h>
48 ], [
49 TAILQ_HEAD(tailhead, entry) head;
50 struct entry {
51 TAILQ_ENTRY(entry) entries;
52 } *np, *nt;
53 TAILQ_INIT(&head);
54 TAILQ_FOREACH_SAFE(np, &head, entries, nt) {
55 /* nop */ ;
56 }
57 return 0;
58 ])], [
59 AC_MSG_RESULT(yes)
60 AC_DEFINE([HAVE_QUEUE_H], 1, [QUEUE_H])
61 ], AC_MSG_RESULT(no))
63 AC_CHECK_DECL(PR_SET_NAME, AC_DEFINE([HAVE_PR_SET_NAME], 1, [pr_set_name]), [],
64 [[#include <sys/prctl.h>]])
66 AC_SEARCH_LIBS([initscr], [ncursesw ncurses], [], [
67 AC_MSG_ERROR([requires either ncursesw or ncurses library])
68 ])
70 AC_SEARCH_LIBS([keyname], [ncursesw ncurses tinfow tinfo], [], [
71 AC_MSG_ERROR([requires either ncursesw or ncurses library with terminfo support])
72 ])
74 AC_CHECK_LIB(tls, tls_init, [], [
75 AC_MSG_ERROR([requires libtls])
76 ])
78 case "$host_os" in
79 *openbsd*)
80 AC_CHECK_LIB([event], [event_init], [],
81 [AC_MSG_ERROR([requires libevent])])
82 ;;
83 *)
84 PKG_CHECK_MODULES([libevent2], [libevent_core >= 2], [
85 AC_DEFINE([HAVE_EVENT2], 1, [1 if using event2])
86 CFLAGS="$libevent2_CFLAGS $CFLAGS"
87 LIBS="$libevent2_LIBS $LIBS"
88 ], [AC_MSG_ERROR([requires libevent])])
89 ;;
90 esac
92 AS_IF([test "x$with_libimsg" = "xyes"], [
93 PKG_CHECK_MODULES([libimsg], [libimsg], [
94 CFLAGS="$libimsg_CFLAGS $CFLAGS"
95 LIBS="$libimsg_LIBS $LIBS"
96 ])
97 ])
99 AC_SEARCH_LIBS([imsg_init], [util], [
100 AC_DEFINE([HAVE_IMSG], 1,
101 [Define to 1 if you have imsg functions (-lutil or -limsg).])
102 ], [
103 AC_LIBOBJ(imsg)
104 AC_LIBOBJ(imsg-buffer)
108 AC_CHECK_LIB(util, ohash_init, [], [
109 AC_LIBOBJ(ohash)
110 AC_LIBOBJ(fmt_scaled)
111 ])
113 AC_CHECK_FUNCS([asr_run])
115 # check compiler flags
116 AC_DEFUN([CC_ADD_CHECK_FLAGS], [
117 AC_MSG_CHECKING([if $CC supports $1 flag])
118 old_CFLAGS="$CFLAGS"
119 CFLAGS="$CFLAGS $1"
120 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
121 AC_MSG_RESULT(yes),
122 AC_MSG_RESULT(no)
123 CFLAGS="$old_CFLAGS")
124 ])
125 CC_ADD_CHECK_FLAGS([-Wall])
126 CC_ADD_CHECK_FLAGS([-Wextra])
127 CC_ADD_CHECK_FLAGS([-Wmissing-prototypes])
128 CC_ADD_CHECK_FLAGS([-Wstrict-prototypes])
129 CC_ADD_CHECK_FLAGS([-Wwrite-strings])
130 CC_ADD_CHECK_FLAGS([-Wno-unused-parameter])
132 AC_CONFIG_HEADERS([config.h])
133 AC_CONFIG_FILES([
134 Makefile
135 pages/about_new.gmi
136 pages/about_crash.gmi
137 ])
139 AC_OUTPUT