simon-git: putty (master): Simon Tatham
Commits to Tartarus hosted VCS
tartarus-commits at lists.tartarus.org
Thu May 31 18:27:53 BST 2018
TL;DR:
bf0cf98 Makefile.clangcl: use llvm-rc instead of windres.
a5c57ca Build experimental Arm Windows binaries.
2fa4e79 Makefile.clangcl: permit building for Windows on Arm.
524b02f Mention CPU architecture in Windows build info.
e874aeb Add Arm Windows builds to the main build script.
d6208d9 Buildscr: parallelise all the 'make' commands.
Repository: https://git.tartarus.org/simon/putty.git
On the web: https://git.tartarus.org/?p=simon/putty.git
Branch updated: master
Committer: Simon Tatham <anakin at pobox.com>
Date: 2018-05-31 18:27:53
commit bf0cf984cd17e3cf3f0a340f2c0468deec4fa412
web diff https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=bf0cf984cd17e3cf3f0a340f2c0468deec4fa412;hp=b851d748be5f035d38ced4bc9e1d1e6d6129d886
Author: Simon Tatham <anakin at pobox.com>
Date: Tue May 29 23:00:05 2018 +0100
Makefile.clangcl: use llvm-rc instead of windres.
Previously I was using clang-cl as my compiler, lld as my linker, and
GNU windres as my resource compiler, which made a confusing hybrid of
the LLVM and GNU toolchains. This was because llvm-rc had about four
missing features that stopped it being able to handle PuTTY's resource
files. (Some dialog control types; dialog class names; handling
preprocessor output without getting confused by line markers and
snippets of stray C; not complaining about the DISCARDABLE keyword.
Although admittedly I could have dealt with the last of those by just
removing it from my .rc files, because it's pointless anyway.)
In the past month, the llvm-rc developers have been hard at work, and
now it has _all_ those features! So now I can switch over to a purely
LLVM-based toolchain for my Windows builds, which is easier to set up
(and easier to tell other people how to set up, since they get it for
free with the rest of LLVM); doesn't have a nominal architecture
dependency (windres has to built against a particular flavour of
binutils); and produces bit-identical output to Visual Studio's
resource compiler as far as I can see (whereas windres is more in the
'close enough' area).
This needed a small makefile restructuring, because unlike windres,
llvm-rc doesn't have a built-in option to run the resource file
through the preprocessor. So now Makefile.clangcl has separate rules
to preprocess $tool.rc into $tool.rcpp and then compile the latter
into $tool.res.
mkfiles.pl | 44 +++++++++++++++++++++++++-------------------
1 file changed, 25 insertions(+), 19 deletions(-)
commit a5c57ca901d25001fb2b38374ec50ab2267af2dc
web diff https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=a5c57ca901d25001fb2b38374ec50ab2267af2dc;hp=bf0cf984cd17e3cf3f0a340f2c0468deec4fa412
Author: Simon Tatham <anakin at pobox.com>
Date: Wed May 30 19:10:07 2018 +0100
Build experimental Arm Windows binaries.
Both 32- and 64-bit. We sign them, but don't build MSIs from them
(because I don't yet know how to, given that my WiX configuration
includes DLL components that will surely need rebuilding).
Buildscr | 14 +++++++++++++-
mkfiles.pl | 10 +++++++++-
2 files changed, 22 insertions(+), 2 deletions(-)
commit 2fa4e7992a412af5bba780f845ddcb17cf305861
web diff https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=2fa4e7992a412af5bba780f845ddcb17cf305861;hp=a5c57ca901d25001fb2b38374ec50ab2267af2dc
Author: Simon Tatham <anakin at pobox.com>
Date: Thu May 31 18:15:33 2018 +0100
Makefile.clangcl: permit building for Windows on Arm.
Now we don't have to worry about which windres we're using (or whether
another target architecture's windres will do just as well), this is
very easy - just test for a couple of extra values of $(Platform).
To build on Arm with VS2017 includes and libraries, various blog posts
and websites explain that you have to #define a cumbersome macro
called _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE, without which the
headers will #error at you. But if you do that, then everything seems
to compile fine and I actually tested it on an Arm Windows machine
today.
Also, I had to disable stack protection (/GS-), because clang-cl
doesn't yet support the particular form of it for which the VS2017 Arm
C library provides the runtime support. Unfortunate in a security
application, of course, but there we go.
Buildscr | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
commit 524b02fd660192ad84d81080ef62ffb3081a40d0
web diff https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=524b02fd660192ad84d81080ef62ffb3081a40d0;hp=2fa4e7992a412af5bba780f845ddcb17cf305861
Author: Simon Tatham <anakin at pobox.com>
Date: Thu May 31 18:12:01 2018 +0100
Mention CPU architecture in Windows build info.
Apparently Windows on Arm has an emulator that lets it run x86
binaries without it being obvious, which could get confusing when
people start reporting what version of what they're running where.
(Indeed, it might get confusing for _me_ during early testing.) So now
the Windows builds explicitly state 'x86' or 'Arm' as well as 32- or
64-bit.
windows/winstuff.h | 6 ++++++
1 file changed, 6 insertions(+)
commit e874aeb7787cca0df310e46c79f15e39f15db574
web diff https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=e874aeb7787cca0df310e46c79f15e39f15db574;hp=524b02fd660192ad84d81080ef62ffb3081a40d0
Author: Simon Tatham <anakin at pobox.com>
Date: Thu May 31 18:19:23 2018 +0100
Add Arm Windows builds to the main build script.
I build both 32- and 64-bit versions of the .exe files, code-sign
them, and create the same .zip file as I do for x86 Windows. I don't
yet have a method of building Arm MSI installers, though.
Buildscr | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
commit d6208d9b0a4a583a63b42722796a80b194746ff9
web diff https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=d6208d9b0a4a583a63b42722796a80b194746ff9;hp=e874aeb7787cca0df310e46c79f15e39f15db574
Author: Simon Tatham <anakin at pobox.com>
Date: Thu May 31 18:11:16 2018 +0100
Buildscr: parallelise all the 'make' commands.
Now we're building four rather than two sets of Windows binaries, the
build time has gone up rather painfully. I've just added a feature to
bob where it will invent a sensible value to use in 'make -j' and the
like, so let's start using it.
Buildscr | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
More information about the tartarus-commits
mailing list