Notepad++ build for ARM
I just wanted to let you know of my effort in the last couple of months to build Notepad++ for ARM. My use case is to use it on the Raspberry Pi through Wine, but I bet it executes on Windows RT / Windows 10 as well. Anyhow, the branches
arm_build(without Boost.Regex) and
boost_appveyor(with Boost.Regex) of my fork contain the differences from the main Notepad++ repository. There’s an appveyor project where you can even grab some binaries. As a bonus, the branch
boost_appveyorbuilds with Boost.Regex automatically and even caches it for future builds. One thing to be aware is that I had to disable the signature checking of
SciLexer.dlldue to this issue. In case you care about all the technical details you can checkout the article I wrote on how to run Windows programs on ARM.
So maybe https://blogs.windows.com/buildingapps/2018/11/15/official-support-for-windows-10-on-arm-development/ is also of interest and might push things a little bit for N++.
Definitely, the problem is I’m quite reluctant to install Win10 on my Raspberry Pi to test ARM64 without Wine. Otherwise the build configuration is fairly easy. I’ve also organized the branches in the fork such that a merge into main Notepad++ would be quite easy.
So I’m guessing there isn’t anything easy to grab that would allow a demo of this to be run on Raspberry Pi … is that correct? It is interesting to read about the work, but if it isn’t an easy demo, interest level plummets. :-)
Technically you’d have to do a whole bunch of stuff, but I could send you a precompiled kernel and a Wine build to speed up the process =) But, yeah, in general it’s actually hard, I spent one and half months trying to get it to run :/
(I’m here as a long-time fan of Notepad++, but I also have a small professional interest in this question: I’m a Microsoft engineer that works on Windows 10 on ARM, especially on encouraging more projects to publish for it. I do not speak for Microsoft.)
Your Windows software on the RPi post was enlightening. Thank you!
I think @chcg is on the right track. A few thoughts:
ARM32 WoW shouldn’t be needed since not much has been published…that I’m aware of. Microsoft only officially supports ARM32 UWPs. Still, it probably makes porting easier (and probably made nataz’ StarCraft binary translation easier).
Windows 10 on the Raspberry Pi is necessarily Windows 10 IoT Edition and ARM32 (AFAIK, since I haven’t heard about a 64-bit RPi board support package coming out). Since IoT Edition is a trimmed down Windows intended to run UWPs, it might be lacking functionality that Notepad++ needs (a la Windows RT).
Windows 10 on ARM, on the other hand, is ARM64 full-desktop Windows (though the only BSPs I know of are for Qualcomm’s 835 and 850 SoCs). It has an officially published ABI (that a project like WINE could use), a full Win32 API surface, and now a full SDK as @chcg pointed out (out of beta, so no
WindowsSDKDesktopARMSupportneeded). So, if Notepad++ added ARM64 to its list of platforms it generates binaries for, then the Notepad++ end of things would be done and you’d only have to worry about WINE support.
A corollary to the SDK release is that the ARM64 Windows ABI is published, so it’s stable. Any further work WINE does to support it will keep working.
P.s. While you’re clear about your distaste for Windows, I still thought you’d be amused to hear that the Windows Subsystem for Linux will happily run your full suite of ARM64 Linux toys on ARM64 Windows. :)
Hello @jkunkee! Please excuse my absense, I’m not very often on the PC during the holidays.Thank you for taking the time to respond and provide this very nice technical summary. In fact, I’d like to link to your post from within the article if you don’t mind. It’s really a great overview =) BTW, in the article I strongly identify myself as a Windows user and have been for many years. What I can’t stand is the Windows 10 GUI because I can’t really tell buttons from text labels.
If I’m interpreting your post correctly, you advocate for Notepad++ taking the ARM64 route directly. I agree with you fully! In fact, I only did an ARM32 build, because I was eager to use it on the RPi =) I understand that the relevance of ARM32 builds is otherwise quite limited and Windows 10 is ARM64 only. Yes, Notepad++ should provide ARM64 builds exclusively.
You are doing a great job encouraging projects to transition to ARM! I really enjoy the architecture and it should become widespread. While Microsoft is doing an awesome work with porting the OS and the tools, the net is still full of desinformatin such as “Windows is x86/x64 only” so a transition is likely going to take a lot of time =/. Also, providing ARM builds is sadly a question of resources. For instance, I was able to do about 1h of work in the evenings and also needed a RPi. To test the builds on Windows 10 instead of Wine I’m also going to need a license etc.
Thank you and have great holidays!