123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611 |
- # configure.ac
- AC_INIT(tmate, 2.2.1)
- AC_CONFIG_AUX_DIR(etc)
- AM_INIT_AUTOMAKE([foreign subdir-objects])
- AC_CANONICAL_HOST
- # When CFLAGS isn't set at this stage and gcc is detected by the macro below,
- # autoconf will automatically use CFLAGS="-O2 -g". Prevent that by using an
- # empty default.
- : ${CFLAGS=""}
- # Set up the compiler in two different ways and say yes we may want to install.
- AC_PROG_CC
- AM_PROG_CC_C_O
- AC_PROG_CPP
- AC_PROG_EGREP
- AC_PROG_INSTALL
- PKG_PROG_PKG_CONFIG
- # Default tmux.conf goes in /etc not ${prefix}/etc.
- test "$sysconfdir" = '${prefix}/etc' && sysconfdir=/etc
- # Is this --enable-debug?
- found_debug=yes
- AC_ARG_ENABLE(
- debug,
- AC_HELP_STRING(--enable-debug, enable debug build flags),
- found_debug=$enable_debug
- )
- AM_CONDITIONAL(IS_DEBUG, test "x$found_debug" = xyes)
- # Is this --enable-coverage?
- AC_ARG_ENABLE(
- coverage,
- AC_HELP_STRING(--enable-coverage, enable coverage build flags),
- found_coverage=$enable_coverage
- )
- AM_CONDITIONAL(IS_COVERAGE, test "x$found_coverage" = xyes)
- # Is this a static build?
- AC_ARG_ENABLE(
- static,
- AC_HELP_STRING(--enable-static, create a static build),
- found_static=$enable_static
- )
- if test "x$found_static" = xyes; then
- PKG_CONFIG="pkg-config --static"
- CFLAGS="$CFLAGS -flto"
- LDFLAGS="$LDFLAGS -flto"
- PKG_CHECK_MODULES([ZLIB], [zlib], [
- CPPFLAGS="$ZLIB_CFLAGS $CPPFLAGS"
- LIBS="$ZLIB_LIBS $LIBS"
- ])
- PKG_CHECK_MODULES([LIBCRYPTO], [libcrypto], [
- CPPFLAGS="$LIBCRYPTO_CFLAGS $CPPFLAGS"
- LIBS="$LIBCRYPTO_LIBS $LIBS"
- ])
- # See more static settings below... (search for found_static)
- fi
- # Is this gcc?
- AM_CONDITIONAL(IS_GCC, test "x$GCC" = xyes)
- # Is this Sun CC?
- AC_EGREP_CPP(
- yes,
- [
- #ifdef __SUNPRO_C
- yes
- #endif
- ],
- found_suncc=yes,
- found_suncc=no
- )
- AM_CONDITIONAL(IS_SUNCC, test "x$found_suncc" = xyes)
- # Is this glibc?
- AC_MSG_CHECKING(for glibc)
- AC_EGREP_CPP(
- yes,
- [
- #include <features.h>
- #ifdef __GLIBC__
- yes
- #endif
- ],
- found_glibc=yes,
- found_glibc=no
- )
- AM_CONDITIONAL(IS_GLIBC, test "x$found_glibc" = xyes)
- AC_MSG_RESULT($found_glibc)
- # Check for various headers. Alternatives included from compat.h.
- AC_CHECK_HEADERS(
- [ \
- bitstring.h \
- curses.h \
- dirent.h \
- fcntl.h \
- inttypes.h \
- libutil.h \
- ncurses.h \
- ndir.h \
- paths.h \
- pty.h \
- stdint.h \
- sys/dir.h \
- sys/ndir.h \
- sys/tree.h \
- term.h \
- util.h \
- ]
- )
- # Look for library needed for flock.
- AC_SEARCH_LIBS(flock, bsd)
- # Check for some functions that are replaced or omitted.
- AC_CHECK_FUNCS(
- [ \
- dirfd \
- flock \
- setproctitle \
- sysconf \
- cfmakeraw \
- ]
- )
- # Look for clock_gettime. Must come before event_init.
- AC_SEARCH_LIBS(clock_gettime, rt)
- # Look for libevent.
- PKG_CHECK_MODULES(
- LIBEVENT,
- libevent,
- [
- CPPFLAGS="$LIBEVENT_CFLAGS $CPPFLAGS"
- LIBS="$LIBEVENT_LIBS $LIBS"
- found_libevent=yes
- ],
- [
- AC_SEARCH_LIBS(
- event_init,
- [event event-1.4 event2],
- found_libevent=yes,
- found_libevent=no
- )
- ]
- )
- if test "x$found_libevent" = xno; then
- AC_MSG_ERROR("libevent not found")
- fi
- # Look for ncurses
- PKG_CHECK_MODULES(
- LIBNCURSES,
- ncurses,
- [
- CPPFLAGS="$LIBNCURSES_CFLAGS $CPPFLAGS"
- LIBS="$LIBNCURSES_LIBS $LIBS"
- found_curses=yes
- ],
- [
- AC_SEARCH_LIBS(
- setupterm,
- [ncurses curses terminfo],
- found_curses=yes,
- found_curses=no
- )
- ]
- )
- if test "x$found_curses" = xno; then
- AC_MSG_ERROR("curses not found")
- fi
- # Look for utempter.
- AC_CHECK_HEADER(utempter.h, found_utempter=yes, found_utempter=no)
- if test "x$found_utempter" = xyes; then
- AC_SEARCH_LIBS(
- utempter_add_record,
- utempter,
- found_utempter=yes,
- found_utempter=no
- )
- if test "x$found_utempter" = xyes; then
- AC_DEFINE(HAVE_UTEMPTER)
- fi
- fi
- PKG_CHECK_MODULES(
- MSGPACK,
- msgpack >= 1.1.0,
- [
- CPPFLAGS="$MSGPACK_CFLAGS $CPPFLAGS"
- LIBS="$MSGPACK_LIBS $LIBS"
- found_msgpack=yes
- ],
- found_msgpack=no
- )
- if test "x$found_msgpack" = xno; then
- AC_MSG_ERROR("msgpack >= 1.1.0 not found")
- fi
- PKG_CHECK_MODULES(
- LIBSSH,
- libssh >= 0.6.0,
- [
- CPPFLAGS="$LIBSSH_CFLAGS $CPPFLAGS"
- LIBS="$LIBSSH_LIBS $LIBS"
- found_libssh=yes
- ],
- found_libssh=no
- )
- if test "x$found_libssh" = xno; then
- AC_MSG_ERROR("libssh >= 0.6.0 not found")
- fi
- # Check for b64_ntop.
- AC_MSG_CHECKING(for b64_ntop)
- AC_TRY_LINK(
- [
- #include <sys/types.h>
- #include <netinet/in.h>
- #include <resolv.h>
- ],
- [b64_ntop(NULL, 0, NULL, 0);],
- found_b64_ntop=yes,
- found_b64_ntop=no
- )
- if test "x$found_b64_ntop" = xno; then
- AC_MSG_RESULT(no)
- AC_MSG_CHECKING(for b64_ntop with -lresolv)
- LIBS="$LIBS -lresolv"
- AC_TRY_LINK(
- [
- #include <sys/types.h>
- #include <netinet/in.h>
- #include <resolv.h>
- ],
- [b64_ntop(NULL, 0, NULL, 0);],
- found_b64_ntop=yes,
- found_b64_ntop=no
- )
- if test "x$found_b64_ntop" = xno; then
- AC_MSG_RESULT(no)
- fi
- fi
- if test "x$found_b64_ntop" = xyes; then
- AC_DEFINE(HAVE_B64_NTOP)
- AC_MSG_RESULT(yes)
- fi
- AM_CONDITIONAL(NO_B64_NTOP, [test "x$found_b64_ntop" = xno])
- # Look for networking libraries.
- AC_SEARCH_LIBS(inet_ntoa, nsl)
- AC_SEARCH_LIBS(socket, socket)
- AC_CHECK_LIB(xnet, socket)
- # Check for CMSG_DATA. Some platforms require _XOPEN_SOURCE_EXTENDED (for
- # example see xopen_networking(7) on HP-UX).
- XOPEN_DEFINES=
- AC_MSG_CHECKING(for CMSG_DATA)
- AC_EGREP_CPP(
- yes,
- [
- #include <sys/socket.h>
- #ifdef CMSG_DATA
- yes
- #endif
- ],
- found_cmsg_data=yes,
- found_cmsg_data=no
- )
- AC_MSG_RESULT($found_cmsg_data)
- if test "x$found_cmsg_data" = xno; then
- AC_MSG_CHECKING(if CMSG_DATA needs _XOPEN_SOURCE_EXTENDED)
- AC_EGREP_CPP(
- yes,
- [
- #define _XOPEN_SOURCE 1
- #define _XOPEN_SOURCE_EXTENDED 1
- #include <sys/socket.h>
- #ifdef CMSG_DATA
- yes
- #endif
- ],
- found_cmsg_data=yes,
- found_cmsg_data=no
- )
- AC_MSG_RESULT($found_cmsg_data)
- if test "x$found_cmsg_data" = xyes; then
- XOPEN_DEFINES="-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED"
- else
- AC_MSG_ERROR("CMSG_DATA not found")
- fi
- fi
- AC_SUBST(XOPEN_DEFINES)
- # Look for imsg in libutil. compat/imsg.c is linked by Makefile.am if missing.
- AC_SEARCH_LIBS(imsg_init, util, found_imsg_init=yes, found_imsg_init=no)
- if test "x$found_imsg_init" = xyes; then
- AC_DEFINE(HAVE_IMSG)
- fi
- AM_CONDITIONAL(NO_IMSG, [test "x$found_imsg_init" = xno])
- # Look for forkpty in libutil. compat/forkpty-*.c is linked if not found.
- AC_SEARCH_LIBS(forkpty, util, found_forkpty=yes, found_forkpty=no)
- if test "x$found_forkpty" = xyes; then
- AC_DEFINE(HAVE_FORKPTY)
- fi
- AM_CONDITIONAL(NO_FORKPTY, [test "x$found_forkpty" = xno])
- # Look for closefrom, compat/closefrom.c used if missing.
- AC_CHECK_FUNC(closefrom, found_closefrom=yes, found_closefrom=no)
- if test "x$found_closefrom" = xyes; then
- AC_DEFINE(HAVE_CLOSEFROM)
- fi
- AM_CONDITIONAL(NO_CLOSEFROM, [test "x$found_closefrom" = xno])
- # Look for daemon, compat/daemon.c used if missing.
- AC_CHECK_FUNC(daemon, found_daemon=yes, found_daemon=no)
- if test "x$found_daemon" = xyes; then
- AC_DEFINE(HAVE_DAEMON)
- fi
- AM_CONDITIONAL(NO_DAEMON, [test "x$found_daemon" = xno])
- # Look for setenv, compat/setenv.c used if missing.
- AC_CHECK_FUNC(setenv, found_setenv=yes, found_setenv=no)
- if test "x$found_setenv" = xyes; then
- AC_DEFINE(HAVE_SETENV)
- fi
- AM_CONDITIONAL(NO_SETENV, [test "x$found_setenv" = xno])
- # Look for strlcpy, compat/strlcpy.c used if missing.
- AC_CHECK_FUNC(strlcpy, found_strlcpy=yes, found_strlcpy=no)
- if test "x$found_strlcpy" = xyes; then
- AC_DEFINE(HAVE_STRLCPY)
- fi
- AM_CONDITIONAL(NO_STRLCPY, [test "x$found_strlcpy" = xno])
- # Look for strlcat, compat/strlcat.c used if missing.
- AC_CHECK_FUNC(strlcat, found_strlcat=yes, found_strlcat=no)
- if test "x$found_strlcat" = xyes; then
- AC_DEFINE(HAVE_STRLCAT)
- fi
- AM_CONDITIONAL(NO_STRLCAT, [test "x$found_strlcat" = xno])
- # Look for asprintf, compat/asprintf.c used if missing.
- AC_CHECK_FUNC(asprintf, found_asprintf=yes, found_asprintf=no)
- if test "x$found_asprintf" = xyes; then
- AC_DEFINE(HAVE_ASPRINTF)
- fi
- AM_CONDITIONAL(NO_ASPRINTF, [test "x$found_asprintf" = xno])
- # Look for fgetln, compat/fgetln.c used if missing.
- AC_CHECK_FUNC(fgetln, found_fgetln=yes, found_fgetln=no)
- if test "x$found_fgetln" = xyes; then
- AC_DEFINE(HAVE_FGETLN)
- fi
- AM_CONDITIONAL(NO_FGETLN, [test "x$found_fgetln" = xno])
- # Look for fparseln, compat/fparseln.c used if missing.
- AC_CHECK_FUNC(fparseln, found_fparseln=yes, found_fparseln=no)
- if test "x$found_fparseln" = xyes; then
- AC_DEFINE(HAVE_FPARSELN)
- fi
- AM_CONDITIONAL(NO_FPARSELN, [test "x$found_fparseln" = xno])
- # Look for strcasestr, compat/strcasestr.c used if missing.
- AC_CHECK_FUNC(strcasestr, found_strcasestr=yes, found_strcasestr=no)
- if test "x$found_strcasestr" = xyes; then
- AC_DEFINE(HAVE_STRCASESTR)
- fi
- AM_CONDITIONAL(NO_STRCASESTR, [test "x$found_strcasestr" = xno])
- # Look for strsep, compat/strsep.c used if missing.
- AC_CHECK_FUNC(strsep, found_strsep=yes, found_strsep=no)
- if test "x$found_strsep" = xyes; then
- AC_DEFINE(HAVE_STRSEP)
- fi
- AM_CONDITIONAL(NO_STRSEP, [test "x$found_strsep" = xno])
- # Look for strtonum, compat/strtonum.c used if missing.
- AC_CHECK_FUNC(strtonum, found_strtonum=yes, found_strtonum=no)
- if test "x$found_strtonum" = xyes; then
- AC_DEFINE(HAVE_STRTONUM)
- fi
- AM_CONDITIONAL(NO_STRTONUM, [test "x$found_strtonum" = xno])
- # Look for stravis, compat/{vis,unvis}.c used if missing.
- AC_CHECK_FUNC(stravis, found_stravis=yes, found_stravis=no)
- if test "x$found_stravis" = xyes; then
- AC_MSG_CHECKING(if strnvis is broken)
- AC_EGREP_HEADER([strnvis\(char \*, const char \*, size_t, int\)],
- vis.h,
- AC_MSG_RESULT(no),
- [found_stravis=no])
- if test "x$found_stravis" = xno; then
- AC_MSG_RESULT(yes)
- fi
- fi
- if test "x$found_stravis" = xyes; then
- AC_DEFINE(HAVE_VIS)
- fi
- AM_CONDITIONAL(NO_VIS, [test "x$found_stravis" = xno])
- # Look for cfmakeraw, compat/cfmakeraw.c used if missing.
- AC_CHECK_FUNC(cfmakeraw, found_cfmakeraw=yes, found_cfmakeraw=no)
- if test "x$found_cfmakeraw" = xyes; then
- AC_DEFINE(HAVE_CFMAKERAW)
- fi
- AM_CONDITIONAL(NO_CFMAKERAW, [test "x$found_cfmakeraw" = xno])
- # Look for openat, compat/openat.c used if missing.
- AC_CHECK_FUNC(openat, found_openat=yes, found_openat=no)
- if test "x$found_openat" = xyes; then
- AC_DEFINE(HAVE_OPENAT)
- fi
- AM_CONDITIONAL(NO_OPENAT, [test "x$found_openat" = xno])
- # Look for reallocarray, compat/reallocarray.c used if missing.
- AC_CHECK_FUNC(reallocarray, found_reallocarray=yes, found_reallocarray=no)
- if test "x$found_reallocarray" = xyes; then
- AC_DEFINE(HAVE_REALLOCARRAY)
- fi
- AM_CONDITIONAL(NO_REALLOCARRAY, [test "x$found_reallocarray" = xno])
- # Look for getopt. glibc's getopt does not enforce argument order and the ways
- # of making it do so are stupid, so just use our own instead.
- AC_CHECK_FUNC(getopt, found_getopt=yes, found_getopt=no)
- if test "x$found_getopt" != xno; then
- AC_CHECK_DECLS(
- [optarg, optind, optreset],
- ,
- found_getopt=no,
- [
- #include <unistd.h>
- ]
- )
- if test "x$found_getopt" != xno; then
- AC_MSG_CHECKING(if system getopt should be avoided)
- if test "x$found_glibc" = xyes; then
- found_getopt=no
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- AC_DEFINE(HAVE_GETOPT)
- fi
- fi
- fi
- AM_CONDITIONAL(NO_GETOPT, [test "x$found_getopt" = xno])
- if test "x$found_static" = xyes; then
- # libc and libdl should be dynamically linked.
- # but we want to lower our requirements for libc's version.
- # so we extract some symobls and add them here
- if test `uname -m` = x86_64; then
- LIBS="compat/memcpy.o -Wl,--wrap=memcpy $LIBS"
- fi
- LIBS="compat/clock_gettime.o libc/fdelt_chk.o $LIBS"
- LIBS="-Wl,-Bstatic ${LIBS/-ldl/} -Wl,-Bdynamic -ldl"
- fi
- # Check for BSD-style integer types.
- AC_MSG_CHECKING(for BSD-style unsigned types)
- AC_COMPILE_IFELSE([AC_LANG_SOURCE(
- [
- #include <sys/types.h>
- #ifdef HAVE_STDINT_H
- #include <stdint.h>
- #else
- #include <inttypes.h>
- #endif
- int main(void)
- { u_int8_t u8; u_int16_t u16; u_int32_t u32; u_int64_t u64; }
- ])],
- [AC_DEFINE(HAVE_BSD_TYPES) AC_MSG_RESULT(yes)],
- AC_MSG_RESULT(no)
- )
- # Look for a suitable queue.h.
- AC_CHECK_DECL(
- TAILQ_PREV,
- found_queue_h=yes,
- found_queue_h=no,
- [#include <sys/queue.h>]
- )
- AC_CHECK_DECL(
- TAILQ_REPLACE,
- ,
- found_queue_h=no,
- [#include <sys/queue.h>]
- )
- if test "x$found_queue_h" = xyes; then
- AC_DEFINE(HAVE_QUEUE_H)
- fi
- # Look for __progname.
- AC_MSG_CHECKING(for __progname)
- AC_LINK_IFELSE([AC_LANG_SOURCE(
- [
- #include <stdio.h>
- #include <stdlib.h>
- extern char *__progname;
- int main(void) {
- const char *cp = __progname;
- printf("%s\n", cp);
- exit(0);
- }
- ])],
- [AC_DEFINE(HAVE___PROGNAME) AC_MSG_RESULT(yes)],
- AC_MSG_RESULT(no)
- )
- # Look for fcntl(F_CLOSEM).
- AC_CHECK_DECL(
- F_CLOSEM,
- AC_DEFINE(HAVE_FCNTL_CLOSEM),
- ,
- [#include <fcntl.h>]
- )
- # Look for /proc/$$.
- AC_MSG_CHECKING(for /proc/\$\$)
- if test -d /proc/$$; then
- AC_DEFINE(HAVE_PROC_PID)
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- # Man page defaults to mdoc.
- MANFORMAT=mdoc
- AC_SUBST(MANFORMAT)
- # Figure out the platform for osdep-*.c and forkpty-*.c.
- AC_MSG_CHECKING(platform)
- case "$host_os" in
- *aix*)
- AC_MSG_RESULT(aix)
- PLATFORM=aix
- ;;
- *darwin*)
- AC_MSG_RESULT(darwin)
- AC_DEFINE(BROKEN_CMSG_FIRSTHDR)
- PLATFORM=darwin
- ;;
- *dragonfly*)
- AC_MSG_RESULT(dragonfly)
- PLATFORM=dragonfly
- ;;
- *linux*)
- AC_MSG_RESULT(linux)
- PLATFORM=linux
- AC_DEFINE(IS_LINUX)
- ;;
- *freebsd*)
- AC_MSG_RESULT(freebsd)
- PLATFORM=freebsd
- ;;
- *netbsd*)
- AC_MSG_RESULT(netbsd)
- PLATFORM=netbsd
- ;;
- *openbsd*)
- AC_MSG_RESULT(openbsd)
- PLATFORM=openbsd
- ;;
- *sunos*)
- AC_MSG_RESULT(sunos)
- PLATFORM=sunos
- ;;
- *solaris*)
- AC_MSG_RESULT(sunos)
- PLATFORM=sunos
- MANFORMAT=man
- ;;
- *hpux*)
- AC_MSG_RESULT(hpux)
- PLATFORM=hpux
- ;;
- *cygwin*)
- AC_MSG_RESULT(cygwin)
- PLATFORM=cygwin
- ;;
- *)
- AC_MSG_RESULT(unknown)
- PLATFORM=unknown
- ;;
- esac
- AC_SUBST(PLATFORM)
- AM_CONDITIONAL(IS_AIX, test "x$PLATFORM" = xaix)
- AM_CONDITIONAL(IS_DARWIN, test "x$PLATFORM" = xdarwin)
- AM_CONDITIONAL(IS_DRAGONFLY, test "x$PLATFORM" = xdragonfly)
- AM_CONDITIONAL(IS_LINUX, test "x$PLATFORM" = xlinux)
- AM_CONDITIONAL(IS_FREEBSD, test "x$PLATFORM" = xfreebsd)
- AM_CONDITIONAL(IS_NETBSD, test "x$PLATFORM" = xnetbsd)
- AM_CONDITIONAL(IS_OPENBSD, test "x$PLATFORM" = xopenbsd)
- AM_CONDITIONAL(IS_SUNOS, test "x$PLATFORM" = xsunos)
- AM_CONDITIONAL(IS_HPUX, test "x$PLATFORM" = xhpux)
- AM_CONDITIONAL(IS_UNKNOWN, test "x$PLATFORM" = xunknown)
- # autoconf should create a Makefile.
- AC_OUTPUT(Makefile)
|