| 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. |
| 6 | |
| 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 |
| 10 | AC_INIT(putty, X.XX) |
| 11 | AC_CONFIG_FILES([Makefile]) |
| 12 | AC_CONFIG_HEADERS([uxconfig.h:uxconfig.in]) |
| 13 | AM_INIT_AUTOMAKE([-Wall -Werror foreign]) |
| 14 | |
| 15 | AC_PROG_INSTALL |
| 16 | AC_PROG_RANLIB |
| 17 | |
| 18 | # Mild abuse of the '--enable' option format to allow manual |
| 19 | # specification of setuid or setgid setup in pterm. |
| 20 | setidtype=none |
| 21 | AC_ARG_ENABLE([setuid], |
| 22 | [AS_HELP_STRING([--enable-setuid=USER], |
| 23 | [make pterm setuid to a given user])], |
| 24 | [case "$enableval" in |
| 25 | no) setidtype=none;; |
| 26 | *) setidtype=setuid; setidval="$enableval";; |
| 27 | esac]) |
| 28 | AC_ARG_ENABLE([setgid], |
| 29 | [AS_HELP_STRING([--enable-setgid=GROUP], |
| 30 | [make pterm setgid to a given group])], |
| 31 | [case "$enableval" in |
| 32 | no) setidtype=none;; |
| 33 | *) setidtype=setgid; setidval="$enableval";; |
| 34 | esac]) |
| 35 | AM_CONDITIONAL(HAVE_SETID_CMD, [test "$setidtype" != "none"]) |
| 36 | AS_IF([test "x$setidtype" = "xsetuid"], |
| 37 | [SETID_CMD="chown $setidval"; SETID_MODE="4755"]) |
| 38 | AS_IF([test "x$setidtype" = "xsetgid"], |
| 39 | [SETID_CMD="chgrp $setidval"; SETID_MODE="2755"]) |
| 40 | AC_SUBST(SETID_CMD) |
| 41 | AC_SUBST(SETID_MODE) |
| 42 | |
| 43 | AC_ARG_WITH([gssapi], |
| 44 | [AS_HELP_STRING([--without-gssapi], |
| 45 | [disable GSSAPI support])], |
| 46 | [], |
| 47 | [with_gssapi=yes]) |
| 48 | |
| 49 | WITH_GSSAPI= |
| 50 | AS_IF([test "x$with_gssapi" != xno], |
| 51 | [AC_DEFINE([WITH_GSSAPI], [1], [Define if building with GSSAPI support.])]) |
| 52 | |
| 53 | AC_ARG_WITH([gtk], |
| 54 | [AS_HELP_STRING([--with-gtk=VER], |
| 55 | [specify GTK version to use (`1' or `2')]) |
| 56 | AS_HELP_STRING([--without-gtk], |
| 57 | [do not use GTK (build command-line tools only)])], |
| 58 | [gtk_version_desired="$withval"], |
| 59 | [gtk_version_desired="any"]) |
| 60 | |
| 61 | case "$gtk_version_desired" in |
| 62 | 1 | 2 | any | no) ;; |
| 63 | yes) gtk_version_desired="any" ;; |
| 64 | *) AC_ERROR([Invalid GTK version specified]) |
| 65 | esac |
| 66 | |
| 67 | AC_CHECK_HEADERS([utmpx.h sys/select.h],,,[ |
| 68 | #include <sys/types.h> |
| 69 | #include <utmp.h>]) |
| 70 | |
| 71 | # Look for both GTK 2 and GTK 1, in descending order of preference. If |
| 72 | # we can't find either, have the makefile only build the CLI programs. |
| 73 | |
| 74 | gtk=none |
| 75 | |
| 76 | case "$gtk_version_desired:$gtk" in |
| 77 | 2:none | any:none) |
| 78 | ifdef([AM_PATH_GTK_2_0],[ |
| 79 | AM_PATH_GTK_2_0([2.0.0], [gtk=2], []) |
| 80 | ],[AC_WARNING([generating configure script without GTK 2 autodetection])]) |
| 81 | ;; |
| 82 | esac |
| 83 | |
| 84 | case "$gtk_version_desired:$gtk" in |
| 85 | 1:none | any:none) |
| 86 | ifdef([AM_PATH_GTK],[ |
| 87 | AM_PATH_GTK([1.2.0], [gtk=1], []) |
| 88 | ],[AC_WARNING([generating configure script without GTK 1 autodetection])]) |
| 89 | ;; |
| 90 | esac |
| 91 | |
| 92 | AM_CONDITIONAL(HAVE_GTK, [test "$gtk" != "none"]) |
| 93 | |
| 94 | if test "$gtk" = "2"; then |
| 95 | ac_save_CFLAGS="$CFLAGS" |
| 96 | ac_save_LIBS="$LIBS" |
| 97 | CFLAGS="$CFLAGS $GTK_CFLAGS" |
| 98 | LIBS="$GTK_LIBS $LIBS" |
| 99 | AC_CHECK_FUNCS([pango_font_family_is_monospace pango_font_map_list_families]) |
| 100 | CFLAGS="$ac_save_CFLAGS" |
| 101 | LIBS="$ac_save_LIBS" |
| 102 | fi |
| 103 | |
| 104 | AC_SEARCH_LIBS([socket], [xnet]) |
| 105 | |
| 106 | AS_IF([test "x$with_gssapi" != xno], |
| 107 | [AC_SEARCH_LIBS( |
| 108 | [dlopen],[dl], |
| 109 | [], |
| 110 | [AC_DEFINE([NO_LIBDL], [1], [Define if we could not find libdl.]) |
| 111 | AC_CHECK_HEADERS([gssapi/gssapi.h]) |
| 112 | AC_SEARCH_LIBS( |
| 113 | [gss_init_sec_context],[gssapi gssapi_krb5 gss], |
| 114 | [], |
| 115 | [AC_DEFINE([NO_GSSAPI_LIB], [1], [Define if we could not find a gssapi library])])])]) |
| 116 | |
| 117 | AC_CHECK_LIB(X11, XOpenDisplay, |
| 118 | [GTK_LIBS="-lX11 $GTK_LIBS" |
| 119 | AC_DEFINE([HAVE_LIBX11],[],[Define if libX11.a is available])]) |
| 120 | |
| 121 | AC_CHECK_FUNCS([getaddrinfo ptsname setresuid strsignal updwtmpx]) |
| 122 | AC_CHECK_DECLS([CLOCK_MONOTONIC], [], [], [[#include <time.h>]]) |
| 123 | AC_SEARCH_LIBS([clock_gettime], [rt], [AC_DEFINE([HAVE_CLOCK_GETTIME],[],[Define if clock_gettime() is available])]) |
| 124 | |
| 125 | if test "x$GCC" = "xyes"; then |
| 126 | : |
| 127 | AC_SUBST(WARNINGOPTS, ['-Wall -Werror']) |
| 128 | else |
| 129 | : |
| 130 | AC_SUBST(WARNINGOPTS, []) |
| 131 | fi |
| 132 | |
| 133 | AC_OUTPUT |
| 134 | |
| 135 | if test "$gtk_version_desired" = "no"; then cat <<EOF |
| 136 | |
| 137 | 'configure' was instructed not to build using GTK. Therefore, PuTTY |
| 138 | itself and the other GUI utilities will not be built by the generated |
| 139 | Makefile: only the command-line tools such as puttygen, plink and |
| 140 | psftp will be built. |
| 141 | |
| 142 | EOF |
| 143 | elif test "$gtk" = "none"; then cat <<EOF |
| 144 | |
| 145 | 'configure' was unable to find either the GTK 1 or GTK 2 libraries on |
| 146 | your system. Therefore, PuTTY itself and the other GUI utilities will |
| 147 | not be built by the generated Makefile: only the command-line tools |
| 148 | such as puttygen, plink and psftp will be built. |
| 149 | |
| 150 | EOF |
| 151 | fi |
| 152 | |
| 153 | AH_BOTTOM([ |
| 154 | /* Convert autoconf definitions to ones that PuTTY wants. */ |
| 155 | |
| 156 | #ifndef HAVE_GETADDRINFO |
| 157 | # define NO_IPV6 |
| 158 | #endif |
| 159 | #ifndef HAVE_SETRESUID |
| 160 | # define HAVE_NO_SETRESUID |
| 161 | #endif |
| 162 | #ifndef HAVE_STRSIGNAL |
| 163 | # define HAVE_NO_STRSIGNAL |
| 164 | #endif |
| 165 | #if !defined(HAVE_UTMPX_H) || !defined(HAVE_UPDWTMPX) |
| 166 | # define OMIT_UTMP |
| 167 | #endif |
| 168 | #ifndef HAVE_PTSNAME |
| 169 | # define BSD_PTYS |
| 170 | #endif |
| 171 | #ifndef HAVE_SYS_SELECT_H |
| 172 | # define HAVE_NO_SYS_SELECT_H |
| 173 | #endif |
| 174 | #ifndef HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE |
| 175 | # define PANGO_PRE_1POINT4 |
| 176 | #endif |
| 177 | #ifndef HAVE_PANGO_FONT_MAP_LIST_FAMILIES |
| 178 | # define PANGO_PRE_1POINT6 |
| 179 | #endif |
| 180 | #if !defined(WITH_GSSAPI) |
| 181 | # define NO_GSSAPI |
| 182 | #endif |
| 183 | #if !defined(NO_GSSAPI) && defined(NO_LIBDL) |
| 184 | # if !defined(HAVE_GSSAPI_GSSAPI_H) || defined(NO_GSSAPI_LIB) |
| 185 | # define NO_GSSAPI |
| 186 | # endif |
| 187 | #endif |
| 188 | ]) |