| 1 | This is the README for the source archive of PuTTY, a free Win32 |
| 2 | and Unix Telnet and SSH client. |
| 3 | |
| 4 | If you want to rebuild PuTTY from source, we provide a variety of |
| 5 | Makefiles and equivalents. (If you have fetched the source from |
| 6 | Subversion, you'll have to generate the Makefiles yourself -- see |
| 7 | below.) |
| 8 | |
| 9 | There are various compile-time directives that you can use to |
| 10 | disable or modify certain features; it may be necessary to do this |
| 11 | in some environments. They are documented in `Recipe', and in |
| 12 | comments in many of the generated Makefiles. |
| 13 | |
| 14 | For building on Windows: |
| 15 | |
| 16 | - windows/Makefile.vc is for command-line builds on MS Visual C++ |
| 17 | systems. Change into the `windows' subdirectory and type `nmake |
| 18 | -f Makefile.vc' to build all the PuTTY binaries. |
| 19 | |
| 20 | Last time we checked, PuTTY built with vanilla VC7, or VC6 with |
| 21 | an up-to-date Platform SDK. (It might still be possible to build |
| 22 | with vanilla VC6, but you'll certainly have to remove some |
| 23 | functionality with directives such as NO_IPV6.) |
| 24 | |
| 25 | (We've also had reports of success building with the |
| 26 | OpenWatcom compiler -- www.openwatcom.org -- using Makefile.vc |
| 27 | with `wmake -ms -f makefile.vc' and NO_MULTIMON, although we |
| 28 | haven't tried this ourselves. Version 1.3 is reported to work.) |
| 29 | |
| 30 | - Inside the windows/MSVC subdirectory are MS Visual Studio project |
| 31 | files for doing GUI-based builds of the various PuTTY utilities. |
| 32 | These have been tested on Visual Studio 6. |
| 33 | |
| 34 | You should be able to build each PuTTY utility by loading the |
| 35 | corresponding .dsp file in Visual Studio. For example, |
| 36 | MSVC/putty/putty.dsp builds PuTTY itself, MSVC/plink/plink.dsp |
| 37 | builds Plink, and so on. |
| 38 | |
| 39 | - windows/Makefile.bor is for the Borland C compiler. Type `make -f |
| 40 | Makefile.bor' while in the `windows' subdirectory to build all |
| 41 | the PuTTY binaries. |
| 42 | |
| 43 | - windows/Makefile.cyg is for Cygwin / MinGW installations. Type |
| 44 | `make -f Makefile.cyg' while in the `windows' subdirectory to |
| 45 | build all the PuTTY binaries. |
| 46 | |
| 47 | You'll probably need quite a recent version of the w32api package. |
| 48 | Note that by default the multiple monitor and HTML Help support are |
| 49 | excluded from the Cygwin build, since at the time of writing Cygwin |
| 50 | doesn't include the necessary headers. |
| 51 | |
| 52 | - windows/Makefile.lcc is for lcc-win32. Type `make -f |
| 53 | Makefile.lcc' while in the `windows' subdirectory. (You will |
| 54 | probably need to specify COMPAT=-DNO_MULTIMON.) |
| 55 | |
| 56 | - Inside the windows/DEVCPP subdirectory are Dev-C++ project |
| 57 | files for doing GUI-based builds of the various PuTTY utilities. |
| 58 | |
| 59 | The PuTTY team actively use Makefile.vc (with VC7) and Makefile.cyg |
| 60 | (with mingw32), so we'll probably notice problems with those |
| 61 | toolchains fairly quickly. Please report any problems with the other |
| 62 | toolchains mentioned above. |
| 63 | |
| 64 | For building on Unix: |
| 65 | |
| 66 | - unix/configure is for Unix and GTK. If you don't have GTK, you |
| 67 | should still be able to build the command-line utilities (PSCP, |
| 68 | PSFTP, Plink, PuTTYgen) using this script. To use it, change into |
| 69 | the `unix' subdirectory, run `./configure' and then `make'. Or you |
| 70 | can do the same in the top-level directory (we provide a little |
| 71 | wrapper that invokes configure one level down), which is more like |
| 72 | a normal Unix source archive but doesn't do so well at keeping the |
| 73 | per-platform stuff in each platform's subdirectory; it's up to you. |
| 74 | |
| 75 | Note that Unix PuTTY has mostly only been tested on Linux so far; |
| 76 | portability problems such as BSD-style ptys or different header file |
| 77 | requirements are expected. |
| 78 | |
| 79 | - unix/Makefile.gtk and unix/Makefile.ux are for non-autoconfigured |
| 80 | builds. These makefiles expect you to change into the `unix' |
| 81 | subdirectory, then run `make -f Makefile.gtk' or `make -f |
| 82 | Makefile.ux' respectively. Makefile.gtk builds all the programs but |
| 83 | relies on Gtk, whereas Makefile.ux builds only the command-line |
| 84 | utilities and has no Gtk dependence. |
| 85 | |
| 86 | - For the graphical utilities, Gtk+-1.2 and Gtk+-2.0 should both be |
| 87 | supported. If you have both installed, you can manually specify |
| 88 | which one you want by giving the option '--with-gtk=1' or |
| 89 | '--with-gtk=2' to the configure script. (2 is the default, of |
| 90 | course.) In the absence of either, the configure script will |
| 91 | automatically construct a Makefile which builds only the |
| 92 | command-line utilities; you can manually create this condition by |
| 93 | giving configure the option '--without-gtk'. |
| 94 | |
| 95 | - pterm would like to be setuid or setgid, as appropriate, to permit |
| 96 | it to write records of user logins to /var/run/utmp and |
| 97 | /var/log/wtmp. (Of course it will not use this privilege for |
| 98 | anything else, and in particular it will drop all privileges before |
| 99 | starting up complex subsystems like GTK.) By default the makefile |
| 100 | will not attempt to add privileges to the pterm executable at 'make |
| 101 | install' time, but you can ask it to do so by running configure |
| 102 | with the option '--enable-setuid=USER' or '--enable-setgid=GROUP'. |
| 103 | |
| 104 | - The Unix Makefiles have an `install' target. Note that by default |
| 105 | it tries to install `man' pages; if you have fetched the source via |
| 106 | Subversion then you will need to have built these using Halibut |
| 107 | first - see below. |
| 108 | |
| 109 | - It's also possible to build the Windows version of PuTTY to run |
| 110 | on Unix by using Winelib. To do this, change to the `windows' |
| 111 | directory and run `make -f Makefile.cyg CC=winegcc RC=wrc'. |
| 112 | |
| 113 | All of the Makefiles are generated automatically from the file |
| 114 | `Recipe' by the Perl script `mkfiles.pl' (except for the Unix one, |
| 115 | which is generated by the `configure' script; mkfiles.pl only |
| 116 | generates the input to automake). Additions and corrections to Recipe, |
| 117 | mkfiles.pl and/or configure.ac are much more useful than additions and |
| 118 | corrections to the actual Makefiles, Makefile.am or Makefile.in. |
| 119 | |
| 120 | The Unix `configure' script and its various requirements are generated |
| 121 | by the shell script `mkauto.sh', which requires GNU Autoconf, GNU |
| 122 | Automake, and Gtk; if you've got the source from Subversion rather |
| 123 | than using one of our source snapshots, you'll need to run this |
| 124 | yourself. The input file to Automake is generated by mkfiles.pl along |
| 125 | with all the rest of the makefiles, so you will need to run mkfiles.pl |
| 126 | and then mkauto.sh. |
| 127 | |
| 128 | Documentation (in various formats including Windows Help and Unix |
| 129 | `man' pages) is built from the Halibut (`.but') files in the `doc' |
| 130 | subdirectory using `doc/Makefile'. If you aren't using one of our |
| 131 | source snapshots, you'll need to do this yourself. Halibut can be |
| 132 | found at <http://www.chiark.greenend.org.uk/~sgtatham/halibut/>. |
| 133 | |
| 134 | The PuTTY home web site is |
| 135 | |
| 136 | http://www.chiark.greenend.org.uk/~sgtatham/putty/ |
| 137 | |
| 138 | If you want to send bug reports or feature requests, please read the |
| 139 | Feedback section of the web site before doing so. Sending one-line |
| 140 | reports saying `it doesn't work' will waste your time as much as |
| 141 | ours. |
| 142 | |
| 143 | See the file LICENCE for the licence conditions. |