OSDN Git Service

Add support for linux-ftpd (untested).
[ffftp/ffftp.git] / putty / BUILDSCR
1 # -*- sh -*-\r
2 # Build script to construct a full distribution directory of PuTTY.\r
3 \r
4 module putty\r
5 \r
6 # Set up the arguments for the main make command.\r
7 set Makever -DSVN_REV=$(revision)\r
8 ifneq "$(!numeric $(revision))" "yes" set Makever $(Makever) -DMODIFIED\r
9 ifneq "$(RELEASE)" "" set Makever $(Makever) -DRELEASE=$(RELEASE)\r
10 ifneq "$(date)" "" set Makever $(Makever) -DSNAPSHOT=$(date)\r
11 set Makeargs VER="$(Makever)"\r
12 ifneq "$(XFLAGS)" "" set Makeargs $(Makeargs) XFLAGS="$(XFLAGS)"\r
13 ifneq "$(MAKEARGS)" "" set Makeargs $(Makeargs) $(MAKEARGS)\r
14 \r
15 # Set up the version string for the docs build.\r
16 set Docmakeargs VERSION="PuTTY revision $(revision)"\r
17 ifneq "$(RELEASE)" "" set Docmakeargs VERSION="PuTTY release $(RELEASE)"\r
18 ifneq "$(date)" "" set Docmakeargs VERSION="PuTTY development snapshot $(date)"\r
19 \r
20 # Set up the version string for the Unix source archive.\r
21 set Unxver r$(revision)\r
22 ifneq "$(RELEASE)" "" set Unxver $(RELEASE)\r
23 ifneq "$(date)" "" set Unxver $(date)\r
24 \r
25 # Set up the various version strings for the installer.\r
26 set Iversion r$(revision)\r
27 set Iname PuTTY revision $(revision)\r
28 set Ivertext Revision $(revision)\r
29 set Irev $(revision)\r
30 set Ifilename putty-$(Iversion)-installer.exe\r
31 ifneq "$(RELEASE)" "" set Iversion $(RELEASE)\r
32 ifneq "$(RELEASE)" "" set Iname PuTTY version $(RELEASE)\r
33 ifneq "$(RELEASE)" "" set Ivertext Release $(RELEASE)\r
34 ifneq "$(RELEASE)" "" set Irev 0\r
35 ifneq "$(RELEASE)" "" set Ifilename putty-$(RELEASE)-installer.exe\r
36 ifneq "$(date)" "" set Iversion $(date):r$(revision)\r
37 ifneq "$(date)" "" set Iname PuTTY development snapshot $(date):r$(revision)\r
38 ifneq "$(date)" "" set Ivertext Development snapshot $(date):r$(revision)\r
39 ifneq "$(date)" "" set Ifilename putty-$(date)-installer.exe\r
40 \r
41 # Set up the version string for the installer.\r
42 set Iversion r$(revision)\r
43 ifneq "$(RELEASE)" "" set Iversion $(RELEASE)\r
44 ifneq "$(date)" "" set Iversion $(date):r$(revision)\r
45 \r
46 in putty do ./mksrcarc.sh\r
47 in putty do ./mkunxarc.sh $(Unxver)\r
48 in putty do perl mkfiles.pl\r
49 in putty/doc do make $(Docmakeargs) putty.hlp\r
50 in putty/doc do make $(Docmakeargs) chm\r
51 \r
52 # Munge the installer script locally so that it reports the version\r
53 # we're really building.\r
54 in putty/windows do perl -i~ -pe 'BEGIN{$$a=shift@ARGV;}s/^(AppVerName=).*$$/$$1$$a/' '$(Iname)' putty.iss\r
55 in putty/windows do perl -i~ -pe 'BEGIN{$$a=shift@ARGV;}s/^(VersionInfoTextVersion=).*$$/$$1$$a/' '$(Ivertext)' putty.iss\r
56 in putty/windows do perl -i~ -pe 'BEGIN{$$a=shift@ARGV;}s/^(AppVersion=).*$$/$$1$$a/' '$(Iversion)' putty.iss\r
57 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\r
58 \r
59 # Windowsify LICENCE, since it's going in the Windows installer.\r
60 in putty do perl -i~ -pe 'y/\015//d;s/$$/\015/' LICENCE\r
61 \r
62 delegate windows\r
63   # FIXME: Cygwin alternative?\r
64   in putty/windows do cmd /c vcvars32 \& nmake -f Makefile.vc $(Makeargs)\r
65   # Ignore exit code from hhc, in favour of seeing whether the .chm\r
66   # file was created. (Yuck; but hhc appears to return non-zero\r
67   # exit codes on whim.)\r
68   in putty/doc do hhc putty.hhp; test -f putty.chm\r
69   in putty/windows do iscc putty.iss\r
70   return putty/windows/*.exe\r
71   return putty/windows/*.map\r
72   return putty/doc/putty.chm\r
73   return putty/windows/Output/setup.exe\r
74 enddelegate\r
75 in putty/doc do make mostlyclean\r
76 in putty/doc do make $(Docmakeargs)\r
77 in putty/windows do zip -k -j putty.zip `ls *.exe | grep -v puttytel` ../doc/putty.chm ../doc/putty.hlp ../doc/putty.cnt\r
78 in putty/doc do zip puttydoc.zip *.html\r
79 \r
80 # Deliver the actual PuTTY release directory into a subdir `putty'.\r
81 deliver putty/windows/*.exe putty/x86/$@\r
82 deliver putty/windows/putty.zip putty/x86/$@\r
83 deliver putty/windows/Output/setup.exe putty/x86/$(Ifilename)\r
84 deliver putty/doc/puttydoc.zip putty/$@\r
85 deliver putty/doc/putty.chm putty/$@\r
86 deliver putty/doc/putty.hlp putty/$@\r
87 deliver putty/doc/putty.cnt putty/$@\r
88 deliver putty/doc/puttydoc.txt putty/$@\r
89 deliver putty/doc/*.html putty/htmldoc/$@\r
90 deliver putty/putty-src.zip putty/$@\r
91 deliver putty/*.tar.gz putty/$@\r
92 \r
93 # Deliver the map files alongside the `proper' release deliverables.\r
94 deliver putty/windows/*.map maps-x86/$@\r
95 \r
96 # Deliver sign.sh, so that whoever has just built PuTTY (the\r
97 # snapshot scripts or me, depending) can conveniently sign it with\r
98 # whatever key they want.\r
99 deliver putty/sign.sh $@\r
100 \r
101 # Create files of cryptographic checksums, which will be signed along\r
102 # with the files they verify. We've provided MD5 checksums for a\r
103 # while, but now MD5 is looking iffy, we're expanding our selection.\r
104 #\r
105 # Creating these files is most easily done in the destination\r
106 # directory, where all the files we're delivering are already in their\r
107 # final relative layout.\r
108 in-dest putty do a=`\find * -type f -print`; md5sum $$a > md5sums && sha1sum $$a > sha1sums && sha256sum $$a > sha256sums && sha512sum $$a > sha512sums\r
109 \r
110 # And construct .htaccess files. One in the top-level directory,\r
111 # setting the MIME types for Windows help files and providing an\r
112 # appropriate link to the source archive:\r
113 in-dest putty do echo "AddType application/octet-stream .chm" >> .htaccess\r
114 in-dest putty do echo "AddType application/octet-stream .hlp" >> .htaccess\r
115 in-dest putty do echo "AddType application/octet-stream .cnt" >> .htaccess\r
116 in-dest putty do set -- putty*.tar.gz; for k in '' .DSA .RSA; do echo RedirectMatch temp '(.*/)'putty.tar.gz$$k\$$ '$$1'"$$1$$k" >> .htaccess; done\r
117 # And one in the x86 directory, providing a link for the installer.\r
118 in-dest putty/x86 do set -- putty*installer.exe; for k in '' .DSA .RSA; do echo RedirectMatch temp '(.*/)'putty-installer.exe$$k\$$ '$$1'"$$1$$k" >> .htaccess; done\r