1 # To compile this into a configure script, you need:
2 # * Autoconf 2.50 or newer
3 # * Gtk (for $prefix/share/aclocal/gtk.m4)
4 # * Automake (for aclocal)
5 # If you've got them, running "autoreconf" should work.
7 # Version number is substituted by Buildscr for releases, snapshots
8 # and custom builds out of svn; X.XX shows up in ad-hoc developer
9 # builds, which shouldn't matter
11 AC_CONFIG_FILES([Makefile])
12 AC_CONFIG_HEADERS([uxconfig.h:uxconfig.in])
13 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
17 ifdef([AM_PROG_AR],[AM_PROG_AR])
20 # Mild abuse of the '--enable' option format to allow manual
21 # specification of setuid or setgid setup in pterm.
23 AC_ARG_ENABLE([setuid],
24 [AS_HELP_STRING([--enable-setuid=USER],
25 [make pterm setuid to a given user])],
28 *) setidtype=setuid; setidval="$enableval";;
30 AC_ARG_ENABLE([setgid],
31 [AS_HELP_STRING([--enable-setgid=GROUP],
32 [make pterm setgid to a given group])],
35 *) setidtype=setgid; setidval="$enableval";;
37 AM_CONDITIONAL(HAVE_SETID_CMD, [test "$setidtype" != "none"])
38 AS_IF([test "x$setidtype" = "xsetuid"],
39 [SETID_CMD="chown $setidval"; SETID_MODE="4755"])
40 AS_IF([test "x$setidtype" = "xsetgid"],
41 [SETID_CMD="chgrp $setidval"; SETID_MODE="2755"])
46 [AS_HELP_STRING([--without-gssapi],
47 [disable GSSAPI support])],
52 AS_IF([test "x$with_gssapi" != xno],
53 [AC_DEFINE([WITH_GSSAPI], [1], [Define if building with GSSAPI support.])])
56 [AS_HELP_STRING([--with-gtk=VER],
57 [specify GTK version to use (`1', `2' or `3')])
58 AS_HELP_STRING([--without-gtk],
59 [do not use GTK (build command-line tools only)])],
60 [gtk_version_desired="$withval"],
61 [gtk_version_desired="any"])
63 case "$gtk_version_desired" in
64 1 | 2 | 3 | any | no) ;;
65 yes) gtk_version_desired="any" ;;
66 *) AC_ERROR([Invalid GTK version specified])
69 AC_CHECK_HEADERS([utmpx.h sys/select.h],,,[
70 #include <sys/types.h>
73 # Look for GTK 2, GTK 3 and GTK 1, in descending order of preference.
75 # (I like GTK 2 for its faster support for X server-side fonts due to
76 # not being required to do all its drawing via Cairo; GTK 3 is
77 # tolerable if GTK 2 can't be had, and GTK 1 is an extreme fallback
78 # for platforms - of which I've heard of at least one - to which
79 # nothing newer has ever been ported.)
81 # If we can't find any, have the makefile only build the CLI programs.
85 case "$gtk_version_desired:$gtk" in
87 ifdef([AM_PATH_GTK_2_0],[
88 AM_PATH_GTK_2_0([2.0.0], [gtk=2], [])
89 ],[AC_WARNING([generating configure script without GTK 2 autodetection])])
93 case "$gtk_version_desired:$gtk" in
95 ifdef([AM_PATH_GTK_3_0],[
96 AM_PATH_GTK_3_0([3.0.0], [gtk=3], [])
97 ],[AC_WARNING([generating configure script without GTK 3 autodetection])])
101 case "$gtk_version_desired:$gtk" in
103 ifdef([AM_PATH_GTK],[
104 AM_PATH_GTK([1.2.0], [gtk=1], [])
106 # manual check for gtk1
107 AC_PATH_PROG(GTK1_CONFIG, gtk-config, absent)
108 if test "$GTK1_CONFIG" != "absent"; then
109 GTK_CFLAGS=`"$GTK1_CONFIG" --cflags`
110 GTK_LIBS=`"$GTK1_CONFIG" --libs`
117 AM_CONDITIONAL(HAVE_GTK, [test "$gtk" != "none"])
119 if test "$gtk" = "2" -o "$gtk" = "3"; then
120 ac_save_CFLAGS="$CFLAGS"
122 CFLAGS="$CFLAGS $GTK_CFLAGS"
123 LIBS="$GTK_LIBS $LIBS"
124 AC_CHECK_FUNCS([pango_font_family_is_monospace pango_font_map_list_families])
125 CFLAGS="$ac_save_CFLAGS"
129 AC_SEARCH_LIBS([socket], [xnet])
131 AS_IF([test "x$with_gssapi" != xno],
135 [AC_DEFINE([NO_LIBDL], [1], [Define if we could not find libdl.])
136 AC_CHECK_HEADERS([gssapi/gssapi.h])
138 [gss_init_sec_context],[gssapi gssapi_krb5 gss],
140 [AC_DEFINE([NO_GSSAPI_LIB], [1], [Define if we could not find a gssapi library])])])])
142 AC_CHECK_LIB(X11, XOpenDisplay,
143 [GTK_LIBS="-lX11 $GTK_LIBS"
144 AC_DEFINE([HAVE_LIBX11],[],[Define if libX11.a is available])])
146 AC_CHECK_FUNCS([getaddrinfo posix_openpt ptsname setresuid strsignal updwtmpx])
147 AC_CHECK_DECLS([CLOCK_MONOTONIC], [], [], [[#include <time.h>]])
148 AC_SEARCH_LIBS([clock_gettime], [rt], [AC_DEFINE([HAVE_CLOCK_GETTIME],[],[Define if clock_gettime() is available])])
150 AC_CACHE_CHECK([for SO_PEERCRED and dependencies], [x_cv_linux_so_peercred], [
154 #include <features.h>
155 #include <sys/socket.h>
158 socklen_t crlen = sizeof(cr);
159 return getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cr, &crlen) +
160 cr.pid + cr.uid + cr.gid;
163 AS_VAR_SET(x_cv_linux_so_peercred, yes),
164 AS_VAR_SET(x_cv_linux_so_peercred, no)
167 AS_IF([test AS_VAR_GET(x_cv_linux_so_peercred) = yes],
168 [AC_DEFINE([HAVE_SO_PEERCRED], [1],
169 [Define if SO_PEERCRED works in the Linux fashion.])]
172 if test "x$GCC" = "xyes"; then
174 AC_SUBST(WARNINGOPTS, ['-Wall -Werror'])
177 AC_SUBST(WARNINGOPTS, [])
182 if test "$gtk_version_desired" = "no"; then cat <<EOF
184 'configure' was instructed not to build using GTK. Therefore, PuTTY
185 itself and the other GUI utilities will not be built by the generated
186 Makefile: only the command-line tools such as puttygen, plink and
190 elif test "$gtk" = "none"; then cat <<EOF
192 'configure' was unable to find any version of the GTK libraries on
193 your system. Therefore, PuTTY itself and the other GUI utilities will
194 not be built by the generated Makefile: only the command-line tools
195 such as puttygen, plink and psftp will be built.
198 elif test "$gtk" = "3"; then cat <<EOF
200 PuTTY will be built with GTK 3. Be aware that the GTK 3 support in
201 this codebase is UNFINISHED AND EXPERIMENTAL!
207 /* Convert autoconf definitions to ones that PuTTY wants. */
209 #ifndef HAVE_GETADDRINFO
212 #ifndef HAVE_SETRESUID
213 # define HAVE_NO_SETRESUID
215 #ifndef HAVE_STRSIGNAL
216 # define HAVE_NO_STRSIGNAL
218 #if !defined(HAVE_UTMPX_H) || !defined(HAVE_UPDWTMPX)
224 #ifndef HAVE_SYS_SELECT_H
225 # define HAVE_NO_SYS_SELECT_H
227 #ifndef HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE
228 # define PANGO_PRE_1POINT4
230 #ifndef HAVE_PANGO_FONT_MAP_LIST_FAMILIES
231 # define PANGO_PRE_1POINT6
233 #if !defined(WITH_GSSAPI)
236 #if !defined(NO_GSSAPI) && defined(NO_LIBDL)
237 # if !defined(HAVE_GSSAPI_GSSAPI_H) || defined(NO_GSSAPI_LIB)