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