If you want to rebuild PuTTY from source, we provide a variety of
Makefiles and equivalents. (If you have fetched the source from
-Subversion, you'll have to generate the Makefiles yourself -- see
+Git, you'll have to generate the Makefiles yourself -- see
below.)
There are various compile-time directives that you can use to
-f Makefile.vc' to build all the PuTTY binaries.
Last time we checked, PuTTY built with vanilla VC7, or VC6 with
- an up-to-date Platform SDK. (It is possible to build with
- vanilla VC6, but you'll have to remove some functionality with
- directives such as NO_IPV6.)
+ an up-to-date Platform SDK. (It might still be possible to build
+ with vanilla VC6, but you'll certainly have to remove some
+ functionality with directives such as NO_IPV6.)
(We've also had reports of success building with the
OpenWatcom compiler -- www.openwatcom.org -- using Makefile.vc
Makefile.bor' while in the `windows' subdirectory to build all
the PuTTY binaries.
- - windows/Makefile.cyg is for Cygwin / mingw32 installations. Type
+ - windows/Makefile.cyg is for Cygwin / MinGW installations. Type
`make -f Makefile.cyg' while in the `windows' subdirectory to
build all the PuTTY binaries.
- Inside the windows/DEVCPP subdirectory are Dev-C++ project
files for doing GUI-based builds of the various PuTTY utilities.
-The PuTTY team actively use Makefile.vc and Makefile.cyg, so we'll
-probably notice problems with those toolchains fairly quickly. Please
-report any problems with the other toolchains mentioned above.
+The PuTTY team actively use Makefile.vc (with VC7) and Makefile.cyg
+(with mingw32), so we'll probably notice problems with those
+toolchains fairly quickly. Please report any problems with the other
+toolchains mentioned above.
For building on Unix:
- unix/configure is for Unix and GTK. If you don't have GTK, you
should still be able to build the command-line utilities (PSCP,
- PSFTP, Plink, PuTTYgen) using this script. To use it, change
- into the `unix' subdirectory, run `./configure' and then `make'.
+ PSFTP, Plink, PuTTYgen) using this script. To use it, change into
+ the `unix' subdirectory, run `./configure' and then `make'. Or you
+ can do the same in the top-level directory (we provide a little
+ wrapper that invokes configure one level down), which is more like
+ a normal Unix source archive but doesn't do so well at keeping the
+ per-platform stuff in each platform's subdirectory; it's up to you.
Note that Unix PuTTY has mostly only been tested on Linux so far;
portability problems such as BSD-style ptys or different header file
requirements are expected.
-
- - unix/Makefile.gtk is for non-autoconfigured builds. This makefile
- expects you to change into the `unix' subdirectory, then run `make
- -f Makefile.gtk'.
- - For the graphical utilities, Gtk+-1.2 is required. Gtk+-2.0 is not
- yet supported.
-
- - Both Unix Makefiles have an `install' target. Note that by default
- it tries to install `man' pages, which you may need to have built
- using Halibut first -- see below.
+ - unix/Makefile.gtk and unix/Makefile.ux are for non-autoconfigured
+ builds. These makefiles expect you to change into the `unix'
+ subdirectory, then run `make -f Makefile.gtk' or `make -f
+ Makefile.ux' respectively. Makefile.gtk builds all the programs but
+ relies on Gtk, whereas Makefile.ux builds only the command-line
+ utilities and has no Gtk dependence.
+
+ - For the graphical utilities, Gtk+-1.2 and Gtk+-2.0 should both be
+ supported. If you have both installed, you can manually specify
+ which one you want by giving the option '--with-gtk=1' or
+ '--with-gtk=2' to the configure script. (2 is the default, of
+ course.) In the absence of either, the configure script will
+ automatically construct a Makefile which builds only the
+ command-line utilities; you can manually create this condition by
+ giving configure the option '--without-gtk'.
+
+ - pterm would like to be setuid or setgid, as appropriate, to permit
+ it to write records of user logins to /var/run/utmp and
+ /var/log/wtmp. (Of course it will not use this privilege for
+ anything else, and in particular it will drop all privileges before
+ starting up complex subsystems like GTK.) By default the makefile
+ will not attempt to add privileges to the pterm executable at 'make
+ install' time, but you can ask it to do so by running configure
+ with the option '--enable-setuid=USER' or '--enable-setgid=GROUP'.
+
+ - The Unix Makefiles have an `install' target. Note that by default
+ it tries to install `man' pages; if you have fetched the source via
+ Git then you will need to have built these using Halibut
+ first - see below.
+
+ - It's also possible to build the Windows version of PuTTY to run
+ on Unix by using Winelib. To do this, change to the `windows'
+ directory and run `make -f Makefile.cyg CC=winegcc RC=wrc'.
All of the Makefiles are generated automatically from the file
-`Recipe' by the Perl script `mkfiles.pl'. Additions and corrections
-to Recipe and the mkfiles.pl are much more useful than additions and
-corrections to the alternative Makefiles themselves.
+`Recipe' by the Perl script `mkfiles.pl' (except for the Unix one,
+which is generated by the `configure' script; mkfiles.pl only
+generates the input to automake). Additions and corrections to Recipe,
+mkfiles.pl and/or configure.ac are much more useful than additions and
+corrections to the actual Makefiles, Makefile.am or Makefile.in.
The Unix `configure' script and its various requirements are generated
by the shell script `mkauto.sh', which requires GNU Autoconf, GNU
-Automake, and Gtk; if you've got the source from Subversion rather
+Automake, and Gtk; if you've got the source from Git rather
than using one of our source snapshots, you'll need to run this
-yourself.
+yourself. The input file to Automake is generated by mkfiles.pl along
+with all the rest of the makefiles, so you will need to run mkfiles.pl
+and then mkauto.sh.
Documentation (in various formats including Windows Help and Unix
`man' pages) is built from the Halibut (`.but') files in the `doc'