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