mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 01:48:00 +00:00
a5d45db0c9
parts of the versioning code which might not like them. As a result of this checkin, bob builds from modified SVN working copies will still announce themselves as revision nnnnM in the textual version strings, but their binary version in the Windows VERSIONINFO will now be 0.0.0.0. [originally from svn r7231]
106 lines
4.7 KiB
Bash
106 lines
4.7 KiB
Bash
# -*- sh -*-
|
|
# Build script to construct a full distribution directory of PuTTY.
|
|
|
|
module putty
|
|
|
|
# Set up the arguments for the main make command.
|
|
set Makever -DSVN_REV=$(revision)
|
|
ifneq "$(!numeric $(revision))" "yes" set Makever $(Makever) -DMODIFIED
|
|
ifneq "$(RELEASE)" "" set Makever $(Makever) -DRELEASE=$(RELEASE)
|
|
ifneq "$(date)" "" set Makever $(Makever) -DSNAPSHOT=$(date)
|
|
set Makeargs VER="$(Makever)"
|
|
ifneq "$(XFLAGS)" "" set Makeargs $(makeargs) XFLAGS="$(XFLAGS)"
|
|
ifneq "$(MAKEARGS)" "" set Makeargs $(makeargs) $(MAKEARGS)
|
|
|
|
# Set up the version string for the docs build.
|
|
set Docmakeargs VERSION="PuTTY revision $(revision)"
|
|
ifneq "$(RELEASE)" "" set Docmakeargs VERSION="PuTTY release $(RELEASE)"
|
|
ifneq "$(date)" "" set Docmakeaargs VERSION="PuTTY development snapshot $(date)"
|
|
|
|
# Set up the version string for the Unix source archive.
|
|
set Unxver r$(revision)
|
|
ifneq "$(RELEASE)" "" set Unxver $(RELEASE)
|
|
ifneq "$(date)" "" set Unxver $(date)
|
|
|
|
# Set up the various version strings for the installer.
|
|
set Iversion r$(revision)
|
|
set Iname PuTTY revision $(revision)
|
|
set Ivertext Revision $(revision)
|
|
set Irev $(revision)
|
|
set Ifilename putty-$(Iversion)-installer.exe
|
|
ifneq "$(RELEASE)" "" set Iversion $(RELEASE)
|
|
ifneq "$(RELEASE)" "" set Iname PuTTY version $(RELEASE)
|
|
ifneq "$(RELEASE)" "" set Ivertext Release $(RELEASE)
|
|
ifneq "$(RELEASE)" "" set Irev 0
|
|
ifneq "$(RELEASE)" "" set Ifilename putty-$(RELEASE)-installer.exe
|
|
ifneq "$(date)" "" set Iversion $(date):r$(revision)
|
|
ifneq "$(date)" "" set Iname PuTTY development snapshot $(date):r$(revision)
|
|
ifneq "$(date)" "" set Ivertext Development snapshot $(date):r$(revision)
|
|
ifneq "$(date)" "" set Ifilename putty-$(date)-installer.exe
|
|
|
|
# Set up the version string for the installer.
|
|
set Iversion r$(revision)
|
|
ifneq "$(RELEASE)" "" set Iversion $(RELEASE)
|
|
ifneq "$(date)" "" set Iversion $(date):r$(revision)
|
|
|
|
in putty do ./mksrcarc.sh
|
|
in putty do ./mkunxarc.sh $(Unxver)
|
|
in putty do perl mkfiles.pl
|
|
in putty/doc do make $(Docmakeargs) putty.hlp
|
|
in putty/doc do make $(Docmakeargs) chm
|
|
|
|
# Munge the installer script locally so that it reports the version
|
|
# we're really building.
|
|
in putty/windows do perl -i~ -pe 'BEGIN{$$a=shift@ARGV;}s/^(AppVerName=).*$$/$$1$$a/' '$(Iname)' putty.iss
|
|
in putty/windows do perl -i~ -pe 'BEGIN{$$a=shift@ARGV;}s/^(VersionInfoTextVersion=).*$$/$$1$$a/' '$(Ivertext)' putty.iss
|
|
in putty/windows do perl -i~ -pe 'BEGIN{$$a=shift@ARGV;}s/^(AppVersion=).*$$/$$1$$a/' '$(Iversion)' putty.iss
|
|
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
|
|
|
|
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/windows/*.map
|
|
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/$(Ifilename)
|
|
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
|
|
|
|
# Now deliver the map files _after_ we do that, so we don't md5sum
|
|
# them gratuitously.
|
|
deliver putty/windows/*.map maps-x86/$@
|
|
|
|
# And construct .htaccess files. One in the top-level directory,
|
|
# setting the MIME types for Windows help files and providing an
|
|
# appropriate link to the source archive:
|
|
in-dest . do echo "AddType application/octet-stream .chm" >> .htaccess
|
|
in-dest . do echo "AddType application/octet-stream .hlp" >> .htaccess
|
|
in-dest . do echo "AddType application/octet-stream .cnt" >> .htaccess
|
|
in-dest . do set -- putty*.tar.gz; for k in '' .DSA .RSA; do echo RedirectMatch temp '(.*/)'putty.tar.gz$$k\$$ '$$1'"$$1$$k" >> .htaccess; done
|
|
# And one in the x86 directory, providing a link for the installer.
|
|
in-dest x86 do set -- putty*installer.exe; for k in '' .DSA .RSA; do echo RedirectMatch temp '(.*/)'putty-installer.exe$$k\$$ '$$1'"$$1$$k" >> .htaccess; done
|