--- /dev/null
+# -*- sh -*-
+# Build script to construct a full distribution directory of PuTTY.
+
+# Set up the arguments for the main make command.
+set Makeargs
+ifneq "$(RELEASE)" "" set Makeargs VER="-DRELEASE=$(RELEASE)"
+ifneq "$(SNAPSHOT)" "" set Makeargs VER="-DSNAPSHOT=$(SNAPSHOT)"
+ifneq "$(XFLAGS)" "" set Makeargs $(makeargs) XFLAGS="$(XFLAGS)"
+ifneq "$(MAKEARGS)" "" set Makeargs $(makeargs) $(MAKEARGS)
+
+# Set up the version string for the docs build.
+set Docmakeargs
+ifneq "$(RELEASE)" "" set Docmakeargs VERSION="PuTTY release $(RELEASE)"
+ifneq "$(SNAPSHOT)" "" set Docmakeaargs VERSION="PuTTY development snapshot $(SNAPSHOT)"
+
+# Set up the version string for the installer.
+set Iversion
+ifneq "$(RELEASE)" "" set Iversion $(RELEASE)
+ifneq "$(SNAPSHOT)" "" set Iversion $(SNAPSHOT)
+# FIXME: what about the static version numbers in putty.iss?
+
+in putty do ./mksrcarc.sh
+in putty do ./mkunxarc.sh $(RELEASE)
+in putty do perl mkfiles.pl
+in putty/doc do make $(Docmakeargs) putty.hlp
+in putty/doc do make $(Docmakeargs) chm
+delegate windows
+ # FIXME: Cygwin alternative?
+ in putty/windows do cmd /c 'vcvars32 & nmake -f Makefile.vc $(Makeargs)'
+ # Ignore exit code from hhc, in favour of seeing whether the .chm
+ # file was created. (Yuck; but hhc appears to return non-zero
+ # exit codes on whim.)
+ in putty/doc do hhc putty.hhp; test -f putty.chm
+ in putty/windows do iscc putty.iss
+ return putty/windows/*.exe
+ return putty/doc/putty.chm
+ return putty/windows/Output/setup.exe
+enddelegate
+in putty/doc do make mostlyclean
+in putty/doc do make $(Docmakeargs)
+in putty/windows do zip -k -j putty.zip `ls *.exe | grep -v puttytel` ../doc/putty.chm ../doc/putty.hlp ../doc/putty.cnt
+in putty/doc do zip puttydoc.zip *.html
+
+deliver putty/windows/*.exe x86/$@
+deliver putty/windows/putty.zip x86/$@
+deliver putty/windows/Output/setup.exe x86/putty-$(Iversion)-installer.exe
+deliver putty/doc/puttydoc.zip $@
+deliver putty/doc/putty.chm $@
+deliver putty/doc/putty.hlp $@
+deliver putty/doc/putty.cnt $@
+deliver putty/doc/puttydoc.txt $@
+deliver putty/doc/*.html htmldoc/$@
+deliver putty/putty-src.zip $@
+deliver putty/*.tar.gz $@
+
+# Building the md5sums file is most easily done in the destination
+# directory.
+in-dest . do md5sum `\find * -type f -print` > md5sums