[TIMOB-25603] Windows: Support Windows 10 ARM Desktop
GitHub Issue | n/a |
---|---|
Type | New Feature |
Priority | Medium |
Status | Open |
Resolution | Unresolved |
Affected Version/s | Release 7.0.0 |
Fix Version/s | n/a |
Components | Windows |
Labels | n/a |
Reporter | Kota Iguchi |
Assignee | Kota Iguchi |
Created | 2017-12-13T03:41:23.000+0000 |
Updated | 2019-03-29T01:34:08.000+0000 |
Description
Currently Titanium is assuming Windows 10 Store app runs on x86/x64 device, but we will need
ARM
target for the destop app, because Microsoft is going to [launch Windows 10 desktop on ARM](https://techcrunch.com/2017/12/05/windows-10-on-arm-is-here-always-connected-devices/). So in that sense we should be able to specify which architecture to build in command line, such as --architecture ARM
on appc run
.
https://github.com/appcelerator/titanium_mobile_windows/pull/1169
[~kiguchi] I can't find where I read it, but I believe that Windows 10 on ARM will be ARM64 only. We might be required to build all libs for ARM64 before enabling this, Microsoft also recently made Xbox x64 only also so we might wish to move to building for x64 too to preempt any other changes. Is there anything I can do to help with that? I assume we'd need to first build JSCore, and then HAL before getting titanium_mobile_windows and titaniumkit building?
[~eharris] Hmm I see. I took a quick look at [CMake generators](https://www.mankier.com/7/cmake-generators#Cmake_Generators-Visual_Studio_15_2017) and I see only *ARM* target and it does not have 64 bit build option such as *ARM64* build. I may be wrong but I also don't see ARM 64 target in Visual Studio UWP project..Could you take a time to investigate how to build ARM 64 target in UWP project, and also investigate if there's any chance for CMake to support ARM 64 target?
[~kiguchi] I played around and believe I've managed to get a ARM64 UWP project building. I had to install the following Individual Components * Visual C++ compilers and libraries for ARM64 * Windows 10 SDK (10.0.16299.0) for Desktop C++ \[ARM and ARM64\] After installing this I then created a new Windows Universal C++ project
File-> New-> Visual C++ ->Windows Universal ->Blank App
. This gets you a project with ARM, x64, and x86 in the Solution Platforms dropdown. SelectingConfiguration Manager
and then new in the Platform dropdown allows you to add ARM64 as platform so my best guess is that this is being slightly hidden for now. As for CMake, it looks like they shipped ARM64 support in 3.10 [based off the release notes](https://cmake.org/cmake/help/v3.10/release/3.10.html#id4), I was able to create a project using>C:\Users\ewan\Downloads\cmake-3.10.1-win64-x64\bin\cmake.exe -G "Visual Studio 15 2017" -A ARM64 -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0"
It looks like the ARM64 stuff is limited to Visual Studio 15.4 and up, so I think to get this building we'd have to update some Jenkins instances to VS 2017 (which isn't a bad idea really)[~eharris] Awesome find! (y) I will try it too. Do you think it is possible to detect installed component (ARM64, x64) in windowslib (Is there any directories or registries created?) I would think ARM64 support may be considered optional for Titanium Windows because not everyone needs it. I also think that we might want to support x64 target too for future release.