Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows on Arm #4366

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft

Windows on Arm #4366

wants to merge 3 commits into from

Conversation

AquaBx
Copy link

@AquaBx AquaBx commented Mar 10, 2024

Hello,
I was able to build Aseprite on Windows arm64 with this change.

image

It seems to work fine so far.

I used my pre-built Skia https://github.com/AquaBx/skia/releases/tag/build.

The only problem is that it can only builds on my arm machine and not my x64 one (with the target set to arm64).

Steps to build :

git clone --recursive https://github.com/AquaBx/aseprite.git
call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" -arch=arm64
cd aseprite
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLAF_BACKEND=skia -DSKIA_DIR=C:\deps\skia -DSKIA_LIBRARY_DIR=C:\deps\skia\out\Release-arm64 -DSKIA_LIBRARY=C:\deps\skia\out\Release-arm64\skia.lib -G Ninja ..
ninja aseprite

@AquaBx AquaBx requested a review from dacap as a code owner March 10, 2024 18:34
@AquaBx
Copy link
Author

AquaBx commented Mar 10, 2024

on my x64 it keep saying
image

“Le fichier image C:\deps\aseprite\build\bin\gen.exe est valide, mais correspond à un autre type d’ordinateur que celui-ci.”
which means
"The image file C:\deps\aseprite\build\bin\gen.exe is valid, but corresponds to a different type of computer than this one."

c:\deps\aseprite\build>ninja aseprite
[1/610] Generating about.xml.h
FAILED: src/app/about.xml.h C:/deps/aseprite/build/src/app/about.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/about.xml --widgetid about > C:/deps/aseprite/build/src/app/about.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/about.xml.h.tmp C:/deps/aseprite/build/src/app/about.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[2/610] Generating advanced_mode.xml.h
FAILED: src/app/advanced_mode.xml.h C:/deps/aseprite/build/src/app/advanced_mode.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/advanced_mode.xml --widgetid advanced_mode > C:/deps/aseprite/build/src/app/advanced_mode.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/advanced_mode.xml.h.tmp C:/deps/aseprite/build/src/app/advanced_mode.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[3/610] Generating aseprite_update.xml.h
FAILED: src/app/aseprite_update.xml.h C:/deps/aseprite/build/src/app/aseprite_update.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/aseprite_update.xml --widgetid aseprite_update > C:/deps/aseprite/build/src/app/aseprite_update.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/aseprite_update.xml.h.tmp C:/deps/aseprite/build/src/app/aseprite_update.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[4/610] Generating ask_for_color_profile.xml.h
FAILED: src/app/ask_for_color_profile.xml.h C:/deps/aseprite/build/src/app/ask_for_color_profile.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/ask_for_color_profile.xml --widgetid ask_for_color_profile > C:/deps/aseprite/build/src/app/ask_for_color_profile.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/ask_for_color_profile.xml.h.tmp C:/deps/aseprite/build/src/app/ask_for_color_profile.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[5/610] Generating brush_slot_params.xml.h
FAILED: src/app/brush_slot_params.xml.h C:/deps/aseprite/build/src/app/brush_slot_params.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/brush_slot_params.xml --widgetid brush_slot_params > C:/deps/aseprite/build/src/app/brush_slot_params.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/brush_slot_params.xml.h.tmp C:/deps/aseprite/build/src/app/brush_slot_params.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[6/610] Generating canvas_size.xml.h
FAILED: src/app/canvas_size.xml.h C:/deps/aseprite/build/src/app/canvas_size.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/canvas_size.xml --widgetid canvas_size > C:/deps/aseprite/build/src/app/canvas_size.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/canvas_size.xml.h.tmp C:/deps/aseprite/build/src/app/canvas_size.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[7/610] Generating cel_properties.xml.h
FAILED: src/app/cel_properties.xml.h C:/deps/aseprite/build/src/app/cel_properties.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/cel_properties.xml --widgetid cel_properties > C:/deps/aseprite/build/src/app/cel_properties.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/cel_properties.xml.h.tmp C:/deps/aseprite/build/src/app/cel_properties.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[8/610] Generating color_curve_point.xml.h
FAILED: src/app/color_curve_point.xml.h C:/deps/aseprite/build/src/app/color_curve_point.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/color_curve_point.xml --widgetid color_curve_point > C:/deps/aseprite/build/src/app/color_curve_point.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/color_curve_point.xml.h.tmp C:/deps/aseprite/build/src/app/color_curve_point.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[9/610] Generating color_mode.xml.h
FAILED: src/app/color_mode.xml.h C:/deps/aseprite/build/src/app/color_mode.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/color_mode.xml --widgetid color_mode > C:/deps/aseprite/build/src/app/color_mode.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/color_mode.xml.h.tmp C:/deps/aseprite/build/src/app/color_mode.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[10/610] Generating convolution_matrix.xml.h
FAILED: src/app/convolution_matrix.xml.h C:/deps/aseprite/build/src/app/convolution_matrix.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/convolution_matrix.xml --widgetid convolution_matrix > C:/deps/aseprite/build/src/app/convolution_matrix.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/convolution_matrix.xml.h.tmp C:/deps/aseprite/build/src/app/convolution_matrix.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[11/610] Generating css_options.xml.h
FAILED: src/app/css_options.xml.h C:/deps/aseprite/build/src/app/css_options.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/css_options.xml --widgetid css_options > C:/deps/aseprite/build/src/app/css_options.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/css_options.xml.h.tmp C:/deps/aseprite/build/src/app/css_options.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[12/610] Generating debugger.xml.h
FAILED: src/app/debugger.xml.h C:/deps/aseprite/build/src/app/debugger.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/debugger.xml --widgetid debugger > C:/deps/aseprite/build/src/app/debugger.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/debugger.xml.h.tmp C:/deps/aseprite/build/src/app/debugger.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[13/610] Generating despeckle.xml.h
FAILED: src/app/despeckle.xml.h C:/deps/aseprite/build/src/app/despeckle.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/despeckle.xml --widgetid despeckle > C:/deps/aseprite/build/src/app/despeckle.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/despeckle.xml.h.tmp C:/deps/aseprite/build/src/app/despeckle.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[14/610] Generating duplicate_sprite.xml.h
FAILED: src/app/duplicate_sprite.xml.h C:/deps/aseprite/build/src/app/duplicate_sprite.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/duplicate_sprite.xml --widgetid duplicate_sprite > C:/deps/aseprite/build/src/app/duplicate_sprite.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/duplicate_sprite.xml.h.tmp C:/deps/aseprite/build/src/app/duplicate_sprite.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[15/610] Generating dynamics.xml.h
FAILED: src/app/dynamics.xml.h C:/deps/aseprite/build/src/app/dynamics.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/dynamics.xml --widgetid dynamics > C:/deps/aseprite/build/src/app/dynamics.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/dynamics.xml.h.tmp C:/deps/aseprite/build/src/app/dynamics.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[16/610] Generating enter_license.xml.h
FAILED: src/app/enter_license.xml.h C:/deps/aseprite/build/src/app/enter_license.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/enter_license.xml --widgetid enter_license > C:/deps/aseprite/build/src/app/enter_license.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/enter_license.xml.h.tmp C:/deps/aseprite/build/src/app/enter_license.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[17/610] Generating export_file.xml.h
FAILED: src/app/export_file.xml.h C:/deps/aseprite/build/src/app/export_file.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/export_file.xml --widgetid export_file > C:/deps/aseprite/build/src/app/export_file.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/export_file.xml.h.tmp C:/deps/aseprite/build/src/app/export_file.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
[18/610] Generating export_sprite_sheet.xml.h
FAILED: src/app/export_sprite_sheet.xml.h C:/deps/aseprite/build/src/app/export_sprite_sheet.xml.h
C:\WINDOWS\system32\cmd.exe /C "cd /D C:\deps\aseprite\build\src\app && C:\deps\aseprite\build\bin\gen --input C:/deps/aseprite/data/widgets/export_sprite_sheet.xml --widgetid export_sprite_sheet > C:/deps/aseprite/build/src/app/export_sprite_sheet.xml.h.tmp && C:\Users\tomch\scoop\apps\cmake\3.28.1\bin\cmake.exe -E copy_if_different C:/deps/aseprite/build/src/app/export_sprite_sheet.xml.h.tmp C:/deps/aseprite/build/src/app/export_sprite_sheet.xml.h"
Cette version de C:\deps\aseprite\build\bin\gen.exe n'est pas compatible avec la version de Windows actuellement exécutée. Vérifiez dans les informations système de votre ordinateur, puis contactez l'éditeur de logiciel.
ninja: build stopped: subcommand failed.

@dacap
Copy link
Member

dacap commented Mar 11, 2024

Hi @AquaBx, thanks for your PR. At the moment we didn't have plans to release a arm64 version for Windows, but probably something to think about in a near future (we have a Windows arm64 devkit to test this), but we don't know what is the level of adoption of arm64 devices on Windows.

About the gen.exe error, is because this needs a cross-platform compilation (if the host is x64, we have to point to a x64 version even when we are cross-compiling to arm64). This can be done with 1) generating one x64 build just to compile the gen.exe binary, then 2) generate other build for arm64 and configure the GEN_EXE variable pointing to the x64 version (which can be executed in the host).

Probably there is a better way to do this in cmake, but at the moment this is the way for cross-compiling between different CPU architectures.

@dacap dacap self-assigned this Mar 11, 2024
@AquaBx
Copy link
Author

AquaBx commented Mar 11, 2024

but we don't know what is the level of adoption of arm64 devices on Windows.
according to Valve (the only chart that i found) (XTA means x86 to Arm)
image
0.04% is not a lot, unfortunately, but with the next Qualcomm X elite, maybe it will increase.

About the gen.exe error, is because this needs a cross-platform compilation (if the host is x64, we have to point to a x64 version even when we are cross-compiling to arm64).
That's what I thought, but I wasn't sure.

This can be done with 1) generating one x64 build just to compile the gen.exe binary, then 2) generate other build for arm64 and configure the GEN_EXE variable pointing to the x64 version (which can be executed in the host).
I will try to find out a way.

Thanks you for your reply 🙂.

@AquaBx AquaBx marked this pull request as draft March 11, 2024 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants