2005-04-25 19:55:06 +04:00
|
|
|
# To compile this into a configure script, you need:
|
|
|
|
# * Autoconf 2.50 or newer
|
|
|
|
# * Gtk (for $prefix/share/aclocal/gtk.m4)
|
|
|
|
# * Automake (for aclocal)
|
|
|
|
# If you've got them, running "autoreconf" should work.
|
|
|
|
|
Switch to using automake for the Unix autoconfigured build.
mkfiles.pl no longer generates a Makefile.in, but instead generates a
Makefile.am on which mkauto.sh runs automake. This means that the
autoconfigured makefile now does build-time dependency tracking (a
standard feature of automake-generated makefiles), and is generally
more like what Unix people will expect.
Some of the old-style make command-line settings (VER=-DRELEASE=foo,
XFLAGS=-DDEBUG) will still work; the COMPAT settings are better done
by autoconfiguration, and my habitual 'XFLAGS="-g -O0"' for an easily
debuggable build will actually not work any more because CFLAGS is
specified _after_ XFLAGS, so I should instead write 'make CFLAGS=-O0'
(-g is the default in automake, removed at 'make install' time).
The new makefile will automatically degrade into one that builds the
command-line tools only, in the case where GTK could not be found. In
principle, therefore, it should be an adequate replacement for _both_
the static Unix makefiles, Makefile.gtk and Makefile.ux. I haven't
actually retired those in this commit, but I'm pretty tempted.
[originally from svn r9239]
2011-07-23 15:33:29 +04:00
|
|
|
# Version number is substituted by Buildscr for releases, snapshots
|
|
|
|
# and custom builds out of svn; X.XX shows up in ad-hoc developer
|
|
|
|
# builds, which shouldn't matter
|
|
|
|
AC_INIT(putty, X.XX)
|
2005-04-25 19:55:06 +04:00
|
|
|
AC_CONFIG_FILES([Makefile])
|
|
|
|
AC_CONFIG_HEADERS([uxconfig.h:uxconfig.in])
|
Switch to using automake for the Unix autoconfigured build.
mkfiles.pl no longer generates a Makefile.in, but instead generates a
Makefile.am on which mkauto.sh runs automake. This means that the
autoconfigured makefile now does build-time dependency tracking (a
standard feature of automake-generated makefiles), and is generally
more like what Unix people will expect.
Some of the old-style make command-line settings (VER=-DRELEASE=foo,
XFLAGS=-DDEBUG) will still work; the COMPAT settings are better done
by autoconfiguration, and my habitual 'XFLAGS="-g -O0"' for an easily
debuggable build will actually not work any more because CFLAGS is
specified _after_ XFLAGS, so I should instead write 'make CFLAGS=-O0'
(-g is the default in automake, removed at 'make install' time).
The new makefile will automatically degrade into one that builds the
command-line tools only, in the case where GTK could not be found. In
principle, therefore, it should be an adequate replacement for _both_
the static Unix makefiles, Makefile.gtk and Makefile.ux. I haven't
actually retired those in this commit, but I'm pretty tempted.
[originally from svn r9239]
2011-07-23 15:33:29 +04:00
|
|
|
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
|
2005-04-25 19:55:06 +04:00
|
|
|
|
|
|
|
AC_PROG_INSTALL
|
Switch to using automake for the Unix autoconfigured build.
mkfiles.pl no longer generates a Makefile.in, but instead generates a
Makefile.am on which mkauto.sh runs automake. This means that the
autoconfigured makefile now does build-time dependency tracking (a
standard feature of automake-generated makefiles), and is generally
more like what Unix people will expect.
Some of the old-style make command-line settings (VER=-DRELEASE=foo,
XFLAGS=-DDEBUG) will still work; the COMPAT settings are better done
by autoconfiguration, and my habitual 'XFLAGS="-g -O0"' for an easily
debuggable build will actually not work any more because CFLAGS is
specified _after_ XFLAGS, so I should instead write 'make CFLAGS=-O0'
(-g is the default in automake, removed at 'make install' time).
The new makefile will automatically degrade into one that builds the
command-line tools only, in the case where GTK could not be found. In
principle, therefore, it should be an adequate replacement for _both_
the static Unix makefiles, Makefile.gtk and Makefile.ux. I haven't
actually retired those in this commit, but I'm pretty tempted.
[originally from svn r9239]
2011-07-23 15:33:29 +04:00
|
|
|
AC_PROG_RANLIB
|
2013-10-26 18:00:10 +04:00
|
|
|
AM_PROG_AR
|
|
|
|
AM_PROG_CC_C_O
|
Switch to using automake for the Unix autoconfigured build.
mkfiles.pl no longer generates a Makefile.in, but instead generates a
Makefile.am on which mkauto.sh runs automake. This means that the
autoconfigured makefile now does build-time dependency tracking (a
standard feature of automake-generated makefiles), and is generally
more like what Unix people will expect.
Some of the old-style make command-line settings (VER=-DRELEASE=foo,
XFLAGS=-DDEBUG) will still work; the COMPAT settings are better done
by autoconfiguration, and my habitual 'XFLAGS="-g -O0"' for an easily
debuggable build will actually not work any more because CFLAGS is
specified _after_ XFLAGS, so I should instead write 'make CFLAGS=-O0'
(-g is the default in automake, removed at 'make install' time).
The new makefile will automatically degrade into one that builds the
command-line tools only, in the case where GTK could not be found. In
principle, therefore, it should be an adequate replacement for _both_
the static Unix makefiles, Makefile.gtk and Makefile.ux. I haven't
actually retired those in this commit, but I'm pretty tempted.
[originally from svn r9239]
2011-07-23 15:33:29 +04:00
|
|
|
|
|
|
|
# Mild abuse of the '--enable' option format to allow manual
|
|
|
|
# specification of setuid or setgid setup in pterm.
|
|
|
|
setidtype=none
|
|
|
|
AC_ARG_ENABLE([setuid],
|
|
|
|
[AS_HELP_STRING([--enable-setuid=USER],
|
|
|
|
[make pterm setuid to a given user])],
|
|
|
|
[case "$enableval" in
|
|
|
|
no) setidtype=none;;
|
|
|
|
*) setidtype=setuid; setidval="$enableval";;
|
|
|
|
esac])
|
|
|
|
AC_ARG_ENABLE([setgid],
|
|
|
|
[AS_HELP_STRING([--enable-setgid=GROUP],
|
|
|
|
[make pterm setgid to a given group])],
|
|
|
|
[case "$enableval" in
|
|
|
|
no) setidtype=none;;
|
|
|
|
*) setidtype=setgid; setidval="$enableval";;
|
|
|
|
esac])
|
|
|
|
AM_CONDITIONAL(HAVE_SETID_CMD, [test "$setidtype" != "none"])
|
|
|
|
AS_IF([test "x$setidtype" = "xsetuid"],
|
|
|
|
[SETID_CMD="chown $setidval"; SETID_MODE="4755"])
|
|
|
|
AS_IF([test "x$setidtype" = "xsetgid"],
|
|
|
|
[SETID_CMD="chgrp $setidval"; SETID_MODE="2755"])
|
|
|
|
AC_SUBST(SETID_CMD)
|
|
|
|
AC_SUBST(SETID_MODE)
|
2005-04-25 19:55:06 +04:00
|
|
|
|
2010-05-19 22:22:17 +04:00
|
|
|
AC_ARG_WITH([gssapi],
|
|
|
|
[AS_HELP_STRING([--without-gssapi],
|
|
|
|
[disable GSSAPI support])],
|
|
|
|
[],
|
|
|
|
[with_gssapi=yes])
|
|
|
|
|
|
|
|
WITH_GSSAPI=
|
|
|
|
AS_IF([test "x$with_gssapi" != xno],
|
|
|
|
[AC_DEFINE([WITH_GSSAPI], [1], [Define if building with GSSAPI support.])])
|
2008-11-23 01:49:27 +03:00
|
|
|
|
2011-07-23 15:36:25 +04:00
|
|
|
AC_ARG_WITH([gtk],
|
|
|
|
[AS_HELP_STRING([--with-gtk=VER],
|
|
|
|
[specify GTK version to use (`1' or `2')])
|
|
|
|
AS_HELP_STRING([--without-gtk],
|
|
|
|
[do not use GTK (build command-line tools only)])],
|
2011-07-18 02:17:40 +04:00
|
|
|
[gtk_version_desired="$withval"],
|
|
|
|
[gtk_version_desired="any"])
|
|
|
|
|
|
|
|
case "$gtk_version_desired" in
|
2011-07-23 15:36:25 +04:00
|
|
|
1 | 2 | any | no) ;;
|
|
|
|
yes) gtk_version_desired="any" ;;
|
2011-07-18 02:17:40 +04:00
|
|
|
*) AC_ERROR([Invalid GTK version specified])
|
|
|
|
esac
|
|
|
|
|
2005-09-14 14:53:39 +04:00
|
|
|
AC_CHECK_HEADERS([utmpx.h sys/select.h],,,[
|
2005-04-26 03:28:25 +04:00
|
|
|
#include <sys/types.h>
|
|
|
|
#include <utmp.h>])
|
2005-04-25 22:51:15 +04:00
|
|
|
|
2011-08-20 12:18:56 +04:00
|
|
|
# Look for both GTK 2 and GTK 1, in descending order of preference. If
|
|
|
|
# we can't find either, have the makefile only build the CLI programs.
|
2011-07-18 02:17:40 +04:00
|
|
|
|
|
|
|
gtk=none
|
|
|
|
|
2011-08-20 12:18:56 +04:00
|
|
|
case "$gtk_version_desired:$gtk" in
|
|
|
|
2:none | any:none)
|
2011-07-18 02:17:40 +04:00
|
|
|
ifdef([AM_PATH_GTK_2_0],[
|
|
|
|
AM_PATH_GTK_2_0([2.0.0], [gtk=2], [])
|
|
|
|
],[AC_WARNING([generating configure script without GTK 2 autodetection])])
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2011-08-20 12:18:56 +04:00
|
|
|
case "$gtk_version_desired:$gtk" in
|
|
|
|
1:none | any:none)
|
|
|
|
ifdef([AM_PATH_GTK],[
|
|
|
|
AM_PATH_GTK([1.2.0], [gtk=1], [])
|
2013-06-15 23:58:10 +04:00
|
|
|
],[
|
|
|
|
# manual check for gtk1
|
|
|
|
AC_PATH_PROG(GTK1_CONFIG, gtk-config, absent)
|
|
|
|
if test "$GTK1_CONFIG" != "absent"; then
|
|
|
|
GTK_CFLAGS=`"$GTK1_CONFIG" --cflags`
|
|
|
|
GTK_LIBS=`"$GTK1_CONFIG" --libs`
|
|
|
|
gtk=1
|
|
|
|
fi
|
|
|
|
])
|
2011-08-20 12:18:56 +04:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
Switch to using automake for the Unix autoconfigured build.
mkfiles.pl no longer generates a Makefile.in, but instead generates a
Makefile.am on which mkauto.sh runs automake. This means that the
autoconfigured makefile now does build-time dependency tracking (a
standard feature of automake-generated makefiles), and is generally
more like what Unix people will expect.
Some of the old-style make command-line settings (VER=-DRELEASE=foo,
XFLAGS=-DDEBUG) will still work; the COMPAT settings are better done
by autoconfiguration, and my habitual 'XFLAGS="-g -O0"' for an easily
debuggable build will actually not work any more because CFLAGS is
specified _after_ XFLAGS, so I should instead write 'make CFLAGS=-O0'
(-g is the default in automake, removed at 'make install' time).
The new makefile will automatically degrade into one that builds the
command-line tools only, in the case where GTK could not be found. In
principle, therefore, it should be an adequate replacement for _both_
the static Unix makefiles, Makefile.gtk and Makefile.ux. I haven't
actually retired those in this commit, but I'm pretty tempted.
[originally from svn r9239]
2011-07-23 15:33:29 +04:00
|
|
|
AM_CONDITIONAL(HAVE_GTK, [test "$gtk" != "none"])
|
2011-07-18 02:17:40 +04:00
|
|
|
|
2008-04-02 21:32:17 +04:00
|
|
|
if test "$gtk" = "2"; then
|
|
|
|
ac_save_CFLAGS="$CFLAGS"
|
|
|
|
ac_save_LIBS="$LIBS"
|
|
|
|
CFLAGS="$CFLAGS $GTK_CFLAGS"
|
|
|
|
LIBS="$GTK_LIBS $LIBS"
|
|
|
|
AC_CHECK_FUNCS([pango_font_family_is_monospace pango_font_map_list_families])
|
|
|
|
CFLAGS="$ac_save_CFLAGS"
|
|
|
|
LIBS="$ac_save_LIBS"
|
|
|
|
fi
|
2005-04-25 19:55:06 +04:00
|
|
|
|
|
|
|
AC_SEARCH_LIBS([socket], [xnet])
|
2010-05-19 22:22:17 +04:00
|
|
|
|
|
|
|
AS_IF([test "x$with_gssapi" != xno],
|
|
|
|
[AC_SEARCH_LIBS(
|
|
|
|
[dlopen],[dl],
|
|
|
|
[],
|
|
|
|
[AC_DEFINE([NO_LIBDL], [1], [Define if we could not find libdl.])
|
|
|
|
AC_CHECK_HEADERS([gssapi/gssapi.h])
|
|
|
|
AC_SEARCH_LIBS(
|
|
|
|
[gss_init_sec_context],[gssapi gssapi_krb5 gss],
|
|
|
|
[],
|
|
|
|
[AC_DEFINE([NO_GSSAPI_LIB], [1], [Define if we could not find a gssapi library])])])])
|
2005-04-25 19:55:06 +04:00
|
|
|
|
2011-07-20 21:50:02 +04:00
|
|
|
AC_CHECK_LIB(X11, XOpenDisplay,
|
|
|
|
[GTK_LIBS="-lX11 $GTK_LIBS"
|
|
|
|
AC_DEFINE([HAVE_LIBX11],[],[Define if libX11.a is available])])
|
2010-02-20 22:06:30 +03:00
|
|
|
|
2012-12-18 13:02:38 +04:00
|
|
|
AC_CHECK_FUNCS([getaddrinfo posix_openpt ptsname setresuid strsignal updwtmpx])
|
2012-05-13 19:59:27 +04:00
|
|
|
AC_CHECK_DECLS([CLOCK_MONOTONIC], [], [], [[#include <time.h>]])
|
|
|
|
AC_SEARCH_LIBS([clock_gettime], [rt], [AC_DEFINE([HAVE_CLOCK_GETTIME],[],[Define if clock_gettime() is available])])
|
2005-04-25 19:55:06 +04:00
|
|
|
|
2012-07-19 08:42:34 +04:00
|
|
|
if test "x$GCC" = "xyes"; then
|
|
|
|
:
|
|
|
|
AC_SUBST(WARNINGOPTS, ['-Wall -Werror'])
|
|
|
|
else
|
|
|
|
:
|
|
|
|
AC_SUBST(WARNINGOPTS, [])
|
|
|
|
fi
|
|
|
|
|
2005-04-25 19:55:06 +04:00
|
|
|
AC_OUTPUT
|
|
|
|
|
2011-07-23 15:36:25 +04:00
|
|
|
if test "$gtk_version_desired" = "no"; then cat <<EOF
|
|
|
|
|
|
|
|
'configure' was instructed not to build using GTK. Therefore, PuTTY
|
|
|
|
itself and the other GUI utilities will not be built by the generated
|
|
|
|
Makefile: only the command-line tools such as puttygen, plink and
|
|
|
|
psftp will be built.
|
|
|
|
|
|
|
|
EOF
|
|
|
|
elif test "$gtk" = "none"; then cat <<EOF
|
Switch to using automake for the Unix autoconfigured build.
mkfiles.pl no longer generates a Makefile.in, but instead generates a
Makefile.am on which mkauto.sh runs automake. This means that the
autoconfigured makefile now does build-time dependency tracking (a
standard feature of automake-generated makefiles), and is generally
more like what Unix people will expect.
Some of the old-style make command-line settings (VER=-DRELEASE=foo,
XFLAGS=-DDEBUG) will still work; the COMPAT settings are better done
by autoconfiguration, and my habitual 'XFLAGS="-g -O0"' for an easily
debuggable build will actually not work any more because CFLAGS is
specified _after_ XFLAGS, so I should instead write 'make CFLAGS=-O0'
(-g is the default in automake, removed at 'make install' time).
The new makefile will automatically degrade into one that builds the
command-line tools only, in the case where GTK could not be found. In
principle, therefore, it should be an adequate replacement for _both_
the static Unix makefiles, Makefile.gtk and Makefile.ux. I haven't
actually retired those in this commit, but I'm pretty tempted.
[originally from svn r9239]
2011-07-23 15:33:29 +04:00
|
|
|
|
|
|
|
'configure' was unable to find either the GTK 1 or GTK 2 libraries on
|
|
|
|
your system. Therefore, PuTTY itself and the other GUI utilities will
|
|
|
|
not be built by the generated Makefile: only the command-line tools
|
|
|
|
such as puttygen, plink and psftp will be built.
|
|
|
|
|
|
|
|
EOF
|
|
|
|
fi
|
|
|
|
|
2005-04-25 19:55:06 +04:00
|
|
|
AH_BOTTOM([
|
|
|
|
/* Convert autoconf definitions to ones that PuTTY wants. */
|
|
|
|
|
|
|
|
#ifndef HAVE_GETADDRINFO
|
|
|
|
# define NO_IPV6
|
|
|
|
#endif
|
|
|
|
#ifndef HAVE_SETRESUID
|
|
|
|
# define HAVE_NO_SETRESUID
|
|
|
|
#endif
|
|
|
|
#ifndef HAVE_STRSIGNAL
|
|
|
|
# define HAVE_NO_STRSIGNAL
|
|
|
|
#endif
|
2005-09-14 15:00:34 +04:00
|
|
|
#if !defined(HAVE_UTMPX_H) || !defined(HAVE_UPDWTMPX)
|
2005-04-25 19:55:06 +04:00
|
|
|
# define OMIT_UTMP
|
|
|
|
#endif
|
|
|
|
#ifndef HAVE_PTSNAME
|
|
|
|
# define BSD_PTYS
|
|
|
|
#endif
|
2005-09-14 14:53:39 +04:00
|
|
|
#ifndef HAVE_SYS_SELECT_H
|
|
|
|
# define HAVE_NO_SYS_SELECT_H
|
|
|
|
#endif
|
2008-04-02 21:32:17 +04:00
|
|
|
#ifndef HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE
|
|
|
|
# define PANGO_PRE_1POINT4
|
|
|
|
#endif
|
|
|
|
#ifndef HAVE_PANGO_FONT_MAP_LIST_FAMILIES
|
|
|
|
# define PANGO_PRE_1POINT6
|
|
|
|
#endif
|
2010-05-19 22:22:17 +04:00
|
|
|
#if !defined(WITH_GSSAPI)
|
2008-11-23 01:49:27 +03:00
|
|
|
# define NO_GSSAPI
|
|
|
|
#endif
|
2010-05-19 22:22:17 +04:00
|
|
|
#if !defined(NO_GSSAPI) && defined(NO_LIBDL)
|
|
|
|
# if !defined(HAVE_GSSAPI_GSSAPI_H) || defined(NO_GSSAPI_LIB)
|
|
|
|
# define NO_GSSAPI
|
|
|
|
# endif
|
|
|
|
#endif
|
2005-04-25 19:55:06 +04:00
|
|
|
])
|