| 1 | # -*- sh -*- |
| 2 | # Build script to construct a full distribution directory of PuTTY. |
| 3 | |
| 4 | # Set up the arguments for the main make command. |
| 5 | set Makeargs VER="-DSVN_REV=$(revision)" |
| 6 | ifneq "$(RELEASE)" "" set Makeargs $(Makeargs) VER="-DRELEASE=$(RELEASE)" |
| 7 | ifneq "$(date)" "" set Makeargs $(Makeargs) VER="-DSNAPSHOT=$(date)" |
| 8 | ifneq "$(XFLAGS)" "" set Makeargs $(makeargs) XFLAGS="$(XFLAGS)" |
| 9 | ifneq "$(MAKEARGS)" "" set Makeargs $(makeargs) $(MAKEARGS) |
| 10 | |
| 11 | # Set up the version string for the docs build. |
| 12 | set Docmakeargs VERSION="PuTTY revision $(revision)" |
| 13 | ifneq "$(RELEASE)" "" set Docmakeargs VERSION="PuTTY release $(RELEASE)" |
| 14 | ifneq "$(date)" "" set Docmakeaargs VERSION="PuTTY development snapshot $(date)" |
| 15 | |
| 16 | # Set up the various version strings for the installer. |
| 17 | set Iversion r$(revision) |
| 18 | set Iname PuTTY revision $(revision) |
| 19 | set Ivertext Revision $(revision) |
| 20 | set Irev $(revision) |
| 21 | ifneq "$(RELEASE)" "" set Iversion $(RELEASE) |
| 22 | ifneq "$(RELEASE)" "" set Iname PuTTY version $(RELEASE) |
| 23 | ifneq "$(RELEASE)" "" set Ivertext Release $(RELEASE) |
| 24 | ifneq "$(RELEASE)" "" set Irev |
| 25 | ifneq "$(date)" "" set Iversion $(date):r$(revision) |
| 26 | ifneq "$(date)" "" set Iname PuTTY development snapshot $(date):r$(revision) |
| 27 | ifneq "$(date)" "" set Ivertext Development snapshot $(date):r$(revision) |
| 28 | |
| 29 | # Set up the version string for the installer. |
| 30 | set Iversion r$(revision) |
| 31 | ifneq "$(RELEASE)" "" set Iversion $(RELEASE) |
| 32 | ifneq "$(date)" "" set Iversion $(date):r$(revision) |
| 33 | |
| 34 | in putty do ./mksrcarc.sh |
| 35 | in putty do ./mkunxarc.sh $(RELEASE) |
| 36 | in putty do perl mkfiles.pl |
| 37 | in putty/doc do make $(Docmakeargs) putty.hlp |
| 38 | in putty/doc do make $(Docmakeargs) chm |
| 39 | |
| 40 | # Munge the installer script locally so that it reports the version |
| 41 | # we're really building. |
| 42 | in putty/windows do perl -i~ -pe 'BEGIN{$$a=shift@ARGV;}s/^(AppVerName=).*$$/$$1$$a/' '$(Iname)' putty.iss |
| 43 | in putty/windows do perl -i~ -pe 'BEGIN{$$a=shift@ARGV;}s/^(VersionInfoTextVersion=).*$$/$$1$$a/' '$(Ivertext)' putty.iss |
| 44 | in putty/windows do perl -i~ -pe 'BEGIN{$$a=shift@ARGV;}s/^(AppVersion=).*$$/$$1$$a/' '$(Iversion)' putty.iss |
| 45 | in putty/windows do perl -i~ -pe 'BEGIN{$$a=shift@ARGV;$$a=~s/M//;}s/^(VersionInfoVersion=\d+\.\d+\.)\d+(\.\d+)\r?$$/$$1$$a$$2/' '$(Irev)' putty.iss |
| 46 | |
| 47 | delegate windows |
| 48 | # FIXME: Cygwin alternative? |
| 49 | in putty/windows do cmd /c 'vcvars32 & nmake -f Makefile.vc $(Makeargs)' |
| 50 | # Ignore exit code from hhc, in favour of seeing whether the .chm |
| 51 | # file was created. (Yuck; but hhc appears to return non-zero |
| 52 | # exit codes on whim.) |
| 53 | in putty/doc do hhc putty.hhp; test -f putty.chm |
| 54 | in putty/windows do iscc putty.iss |
| 55 | return putty/windows/*.exe |
| 56 | return putty/doc/putty.chm |
| 57 | return putty/windows/Output/setup.exe |
| 58 | enddelegate |
| 59 | in putty/doc do make mostlyclean |
| 60 | in putty/doc do make $(Docmakeargs) |
| 61 | in putty/windows do zip -k -j putty.zip `ls *.exe | grep -v puttytel` ../doc/putty.chm ../doc/putty.hlp ../doc/putty.cnt |
| 62 | in putty/doc do zip puttydoc.zip *.html |
| 63 | |
| 64 | deliver putty/windows/*.exe x86/$@ |
| 65 | deliver putty/windows/putty.zip x86/$@ |
| 66 | deliver putty/windows/Output/setup.exe x86/putty-$(Iversion)-installer.exe |
| 67 | deliver putty/doc/puttydoc.zip $@ |
| 68 | deliver putty/doc/putty.chm $@ |
| 69 | deliver putty/doc/putty.hlp $@ |
| 70 | deliver putty/doc/putty.cnt $@ |
| 71 | deliver putty/doc/puttydoc.txt $@ |
| 72 | deliver putty/doc/*.html htmldoc/$@ |
| 73 | deliver putty/putty-src.zip $@ |
| 74 | deliver putty/*.tar.gz $@ |
| 75 | |
| 76 | # Building the md5sums file is most easily done in the destination |
| 77 | # directory. |
| 78 | in-dest . do md5sum `\find * -type f -print` > md5sums |