transmission / transmission

Official Transmission BitTorrent client repository
https://transmissionbt.com
Other
12.18k stars 1.21k forks source link

Windows ARM64 Support #4735

Open wbsdty331 opened 1 year ago

wbsdty331 commented 1 year ago

What is the issue?

There is no native ARM64 version for windows so it has to be run with x64 emulation.

I am very interested in this feature.

Which application of Transmission?

Qt app on Windows

Which version of Transmission?

4.0.0

mikedld commented 1 year ago

We could probably provide the build but I'm not sure we'll be able to properly test it. I don't own any Windows-based ARM devices nor was I planning to (but maybe one of the other regular contributors does?); same goes for the CI where we won't be able to run tests unless there's hardware to run them on.

Overall I'd say this is not currently a priority. But if you want to build for ARM yourself and if you encounter issues with it, PRs are always welcome.

ckerr commented 1 year ago

@wbsdty331 clearly the answer is for you to buy the devs a set of surface pro X's :tada: :smile_cat:

wbsdty331 commented 1 year ago

@ckerr @mikedld I have a Raspberry Pi 4 which has installed windows 11 arm64 edition, i'll try to build for arm64 and test it. I decided to do my part to make it better by porting transmission to Windows ARM64 platform.

wbsdty331 commented 1 year ago

Oops, It looks like Qt5 have NOT officially support Windows ARM64 platform (https://doc.qt.io/qt-5/supported-platforms.html).

try building only cli binary......

wbsdty331 commented 1 year ago
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) 
    Reason given by package: The command
      "D:/vcpkg/installed/arm64-windows/tools/pkgconf/pkgconf.exe" --version
    failed with output:

    stderr: 

    result: 

It looks like pkgconf need run to get version, but my target platform is ARM64 for cross compile, so it throw an error.

@ckerr shoule we have another method to get pkgconf version without run by it self?

ckerr commented 1 year ago

@ckerr shoule we have another method to get pkgconf version without run by it self?

I have no idea. :smile_cat:

mikedld commented 1 year ago

@wbsdty331, version of pkgconf/pkg-config is not something that we're requesting ourselves, it's probably what CMake does internally. Moreover, we don't require it to be present (none of our calls to find_package(PkgConfig) pass REQUIRED as a parameter), so maybe your problem is with something else?

Maybe look into how vcpkg supports cross-compilation (which is what you're doing)? My favorite search engine gives out https://devblogs.microsoft.com/cppblog/vcpkg-host-dependencies/ as the first result, which may or may not be helpful to you.

wbsdty331 commented 1 year ago

The pkgconf issue is caused by CMake, I created an issue for upstream.

ghost commented 1 year ago

Building from source works for me using the CLANGARM64 toolchain of MSYS2. I noticed cmake was using ninja-build by default, which worked ok for me. I pretty much followed the build instructions given in the readme with the exception that i used cmake --build . instead of make. GUI works.

I have no clue which dependencies Transmisson really needed to compile. In case something is missing native dependencies for arm64 can be installed inside MSYS2 CLANGARM64 like this. pacman -S $MINGW_PACKAGE_PREFIX-{toolchain,qt5,ninja} base-devel

minnyres commented 11 months ago

I built transmission for Windows ARM64 by cross compiling with MSVC. Windows ARM64 users can make a test with it: https://github.com/minnyres/transmission-windows-arm64/releases

gilgaTheDev commented 7 months ago

I built transmission for Windows ARM64 by cross compiling with MSVC. Windows ARM64 users can make a test with it: https://github.com/minnyres/transmission-windows-arm64/releases

I confirm it's working!

mikedld commented 1 month ago

In recent news, once GitHub makes new arm64 runners available to us^1, which they say is expected "by the end of the year", we'll be able to not only build but also run tests.

3f6a commented 1 week ago

I have arm Windows and because of this I had to use a different torrent client. Looking forward to having Transmission on Windows arm !