1 AC_INIT([telescope], [0.9], [telescope@omarpolo.com], [telescope], [gemini://telescope.omarpolo.com])
3 AC_CONFIG_LIBOBJ_DIR(compat)
5 AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])
7 AC_USE_SYSTEM_EXTENSIONS
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)'
19 AS_HELP_STRING([--with-Werror],
20 [Add the compiler flag -Werror]))
22 AC_ARG_WITH([libimsg],
23 AS_HELP_STRING([--with-libimsg],
24 [Build with imsg-compat library (default: disabled)]))
27 AS_HELP_STRING([--with-libbsd],
28 [Build with libbsd library (default: disabled)]))
30 AS_IF([test "x$with_libbsd" = "xyes"], [
31 PKG_CHECK_MODULES([libbsd], [libbsd-overlay libbsd-ctor], [
32 CFLAGS="$libbsd_CFLAGS $CFLAGS"
33 LIBS="$libbsd_LIBS $LIBS"
56 AC_MSG_CHECKING([for sys/queue.h with TAILQ_FOREACH_SAFE])
57 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
58 #include <sys/queue.h>
61 TAILQ_HEAD(tailhead, entry) head;
63 TAILQ_ENTRY(entry) entries;
66 TAILQ_FOREACH_SAFE(np, &head, entries, nt) {
72 AC_DEFINE([HAVE_QUEUE_H], 1, [QUEUE_H])
75 AC_CHECK_DECL(timespecsub,
76 [AC_DEFINE([HAVE_TIMESPECSUB], 1, [have timespecsub])], [],
77 [#include <sys/time.h>])
79 AC_CHECK_DECL(timercmp,
80 [AC_DEFINE([HAVE_TIMERCMP], 1, [have timercmp])], [],
81 [#include <sys/time.h>])
83 dnl can't be used as r-value.
84 AC_MSG_CHECKING([for TIMEVAL_TO_TIMESPEC])
85 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
88 struct timeval a = {0, 0};
90 TIMEVAL_TO_TIMESPEC(&a, &b);
94 AC_DEFINE([HAVE_TIMEVAL_TO_TIMESPEC], 1, [have TIMEVAL_TO_TIMESPEC])
97 AC_CHECK_HEADER([endian.h], [AC_DEFINE(HAVE_ENDIAN_H, 1, [have endian.h])], [
98 AC_CHECK_HEADER([sys/endian.h],
99 [AC_DEFINE(HAVE_SYS_ENDIAN_H, 1, [have sys/endian.h])], [
100 AC_CHECK_HEADERS([libkern/OSByteOrder.h],
101 [AC_DEFINE(HAVE_LIBKERN_OSBYTEORDER_H, 1, [have OSByteOrder.h])],
102 [AC_MSG_ERROR([can't find compatible endian.h header])],
103 [#include <machine/endian.h>])
107 AC_CHECK_DECL(PR_SET_NAME, AC_DEFINE([HAVE_PR_SET_NAME], 1, [pr_set_name]), [],
108 [[#include <sys/prctl.h>]])
110 AC_SEARCH_LIBS([initscr], [ncursesw ncurses], [], [
111 AC_MSG_ERROR([requires either ncursesw or ncurses library])
114 AC_SEARCH_LIBS([keyname], [ncursesw ncurses tinfow tinfo], [], [
115 AC_MSG_ERROR([requires either ncursesw or ncurses library with terminfo support])
118 AC_SEARCH_LIBS([tls_init], [tls], [], [
119 AC_MSG_ERROR([requires libtls])
122 PKG_CHECK_MODULES([libgrapheme], [libgrapheme], [
123 AC_SUBST([LIBGRAPHEME], [])
124 CFLAGS="$libgrapheme_CFLAGS $CFLAGS"
125 LIBS="$libgrapheme_LIBS $LIBS"
127 # build the bundled version.
128 AC_SUBST([LIBGRAPHEME], "$srcdir/libgrapheme/libgrapheme.a")
129 CFLAGS="-I$srcdir/libgrapheme $CFLAGS"
132 AS_IF([test "x$with_libimsg" = "xyes"], [
133 PKG_CHECK_MODULES([libimsg], [libimsg], [
134 CFLAGS="$libimsg_CFLAGS $CFLAGS"
135 LIBS="$libimsg_LIBS $LIBS"
139 AC_SEARCH_LIBS([imsg_init], [util], [
140 AC_DEFINE([HAVE_IMSG], 1,
141 [Define to 1 if you have imsg functions (-lutil or -limsg).])
144 AC_LIBOBJ(imsg-buffer)
148 AC_SEARCH_LIBS([ohash_init], [util], [], [
150 AC_LIBOBJ(fmt_scaled)
153 AC_CHECK_FUNCS([asr_run])
155 AC_SEARCH_LIBS([RAND_add], [crypto], [:], [
156 AC_MSG_ERROR([can't find libcrypto])
159 AC_SEARCH_LIBS([SSL_CTX_new], [ssl], [:], [
160 AC_MSG_ERROR([can't find libssl])
163 AC_CHECK_HEADERS([linux/landlock.h])
165 dnl after all the function checks, add optional support for -Werror
166 AS_IF([test "x$with_Werror" = "xyes"], [
167 CFLAGS="$CFLAGS -Werror"
170 # check compiler flags
171 AC_DEFUN([CC_ADD_CHECK_FLAGS], [
172 AC_MSG_CHECKING([if $CC supports $1 flag])
174 CFLAGS="$CFLAGS -Werror $1"
175 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])], [
177 CFLAGS="$old_CFLAGS $1"
183 CC_ADD_CHECK_FLAGS([-Wall])
184 CC_ADD_CHECK_FLAGS([-Wextra])
185 CC_ADD_CHECK_FLAGS([-Wmissing-declarations])
186 CC_ADD_CHECK_FLAGS([-Wmissing-prototypes])
187 CC_ADD_CHECK_FLAGS([-Wstrict-prototypes])
188 CC_ADD_CHECK_FLAGS([-Wwrite-strings])
189 CC_ADD_CHECK_FLAGS([-Wno-unused-parameter])
190 CC_ADD_CHECK_FLAGS([-Wno-format-truncation])
191 CC_ADD_CHECK_FLAGS([-Wno-pointer-sign])
192 CC_ADD_CHECK_FLAGS([-Wpointer-arith])
193 CC_ADD_CHECK_FLAGS([-Wsign-compare])
194 CC_ADD_CHECK_FLAGS([-Wcast-align])
196 AC_CONFIG_HEADERS([config.h])
200 pages/about_about.gmi
201 pages/about_blank.gmi
202 pages/about_crash.gmi
204 pages/about_license.gmi