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_HELP_STRING([--with-quartz],
53 [build for the MacOS Quartz GTK back end])],
54 [AC_DEFINE([OSX_GTK], [1], [Define if building with GTK for MacOS.])],
58 AS_IF([test "x$with_gssapi" != xno],
59 [AC_DEFINE([WITH_GSSAPI], [1], [Define if building with GSSAPI support.])])
62 [AS_HELP_STRING([--with-gtk=VER],
63 [specify GTK version to use (`1', `2' or `3')])
64 AS_HELP_STRING([--without-gtk],
65 [do not use GTK (build command-line tools only)])],
66 [gtk_version_desired="$withval"],
67 [gtk_version_desired="any"])
69 case "$gtk_version_desired" in
70 1 | 2 | 3 | any | no) ;;
71 yes) gtk_version_desired="any" ;;
72 *) AC_ERROR([Invalid GTK version specified])
75 AC_CHECK_HEADERS([utmpx.h sys/select.h],,,[
76 #include <sys/types.h>
79 # Look for GTK 2, GTK 3 and GTK 1, in descending order of preference.
81 # (I like GTK 2 for its faster support for X server-side fonts due to
82 # not being required to do all its drawing via Cairo; GTK 3 is
83 # tolerable if GTK 2 can't be had, and GTK 1 is an extreme fallback
84 # for platforms - of which I've heard of at least one - to which
85 # nothing newer has ever been ported.)
87 # If we can't find any, have the makefile only build the CLI programs.
91 case "$gtk_version_desired:$gtk" in
93 ifdef([AM_PATH_GTK_2_0],[
94 AM_PATH_GTK_2_0([2.0.0], [gtk=2], [])
95 ],[AC_WARNING([generating configure script without GTK 2 autodetection])])
99 case "$gtk_version_desired:$gtk" in
101 ifdef([AM_PATH_GTK_3_0],[
102 AM_PATH_GTK_3_0([3.0.0], [gtk=3], [])
103 ],[AC_WARNING([generating configure script without GTK 3 autodetection])])
107 case "$gtk_version_desired:$gtk" in
109 ifdef([AM_PATH_GTK],[
110 AM_PATH_GTK([1.2.0], [gtk=1], [])
112 # manual check for gtk1
113 AC_PATH_PROG(GTK1_CONFIG, gtk-config, absent)
114 if test "$GTK1_CONFIG" != "absent"; then
115 GTK_CFLAGS=`"$GTK1_CONFIG" --cflags`
116 GTK_LIBS=`"$GTK1_CONFIG" --libs`
123 AM_CONDITIONAL(HAVE_GTK, [test "$gtk" != "none"])
125 if test "$gtk" = "2" -o "$gtk" = "3"; then
126 ac_save_CFLAGS="$CFLAGS"
128 CFLAGS="$CFLAGS $GTK_CFLAGS"
129 LIBS="$GTK_LIBS $LIBS"
130 AC_CHECK_FUNCS([pango_font_family_is_monospace pango_font_map_list_families])
131 CFLAGS="$ac_save_CFLAGS"
135 AC_SEARCH_LIBS([socket], [xnet])
137 AS_IF([test "x$with_gssapi" != xno],
141 [AC_DEFINE([NO_LIBDL], [1], [Define if we could not find libdl.])
142 AC_CHECK_HEADERS([gssapi/gssapi.h])
144 [gss_init_sec_context],[gssapi gssapi_krb5 gss],
146 [AC_DEFINE([NO_GSSAPI_LIB], [1], [Define if we could not find a gssapi library])])])])
148 AC_CHECK_LIB(X11, XOpenDisplay,
149 [GTK_LIBS="-lX11 $GTK_LIBS"
150 AC_DEFINE([HAVE_LIBX11],[],[Define if libX11.a is available])])
152 AC_CHECK_FUNCS([getaddrinfo posix_openpt ptsname setresuid strsignal updwtmpx])
153 AC_CHECK_DECLS([CLOCK_MONOTONIC], [], [], [[#include <time.h>]])
154 AC_SEARCH_LIBS([clock_gettime], [rt], [AC_DEFINE([HAVE_CLOCK_GETTIME],[],[Define if clock_gettime() is available])])
156 AC_CACHE_CHECK([for SO_PEERCRED and dependencies], [x_cv_linux_so_peercred], [
160 #include <features.h>
161 #include <sys/socket.h>
164 socklen_t crlen = sizeof(cr);
165 return getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cr, &crlen) +
166 cr.pid + cr.uid + cr.gid;
169 AS_VAR_SET(x_cv_linux_so_peercred, yes),
170 AS_VAR_SET(x_cv_linux_so_peercred, no)
173 AS_IF([test AS_VAR_GET(x_cv_linux_so_peercred) = yes],
174 [AC_DEFINE([HAVE_SO_PEERCRED], [1],
175 [Define if SO_PEERCRED works in the Linux fashion.])]
178 if test "x$GCC" = "xyes"; then
180 AC_SUBST(WARNINGOPTS, ['-Wall -Werror'])
183 AC_SUBST(WARNINGOPTS, [])
188 if test "$gtk_version_desired" = "no"; then cat <<EOF
190 'configure' was instructed not to build using GTK. Therefore, PuTTY
191 itself and the other GUI utilities will not be built by the generated
192 Makefile: only the command-line tools such as puttygen, plink and
196 elif test "$gtk" = "none"; then cat <<EOF
198 'configure' was unable to find any version of the GTK libraries on
199 your system. Therefore, PuTTY itself and the other GUI utilities will
200 not be built by the generated Makefile: only the command-line tools
201 such as puttygen, plink and psftp will be built.
204 elif test "$gtk" = "3"; then cat <<EOF
206 PuTTY will be built with GTK 3. Be aware that the GTK 3 support in
207 this codebase is UNFINISHED AND EXPERIMENTAL!
213 /* Convert autoconf definitions to ones that PuTTY wants. */
215 #ifndef HAVE_GETADDRINFO
218 #ifndef HAVE_SETRESUID
219 # define HAVE_NO_SETRESUID
221 #ifndef HAVE_STRSIGNAL
222 # define HAVE_NO_STRSIGNAL
224 #if !defined(HAVE_UTMPX_H) || !defined(HAVE_UPDWTMPX)
230 #ifndef HAVE_SYS_SELECT_H
231 # define HAVE_NO_SYS_SELECT_H
233 #ifndef HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE
234 # define PANGO_PRE_1POINT4
236 #ifndef HAVE_PANGO_FONT_MAP_LIST_FAMILIES
237 # define PANGO_PRE_1POINT6
239 #if !defined(WITH_GSSAPI)
242 #if !defined(NO_GSSAPI) && defined(NO_LIBDL)
243 # if !defined(HAVE_GSSAPI_GSSAPI_H) || defined(NO_GSSAPI_LIB)