Alex313031 / Thorium-WOA

Repo to serve ARM64 Windows on Arm builds of Thorium. https://github.com/Alex313031/Thorium/
https://thorium.rocks/
BSD 3-Clause "New" or "Revised" License
20 stars 0 forks source link

ARM32 for WindowsRT? #1

Open gitnewcomer opened 6 months ago

gitnewcomer commented 6 months ago

Hi, great job you're doing here. Is it to complicated to build this for ARM32, giving a second chance to WindowsRT (based on Windows 8.1/10 beta leak) tablets? :)

Alex313031 commented 5 months ago

@gitnewcomer Unfortunately, Chromium has never supported ARM32 Windows or Windows RT. There was some discussion about it in 2013 > https://xdaforums.com/t/porting-chromium-to-windows-rt.2095686/ but nothing ever came of it. Even if we could compile it, it would require "jailbreaking" your device to run, since Windows RT by default only allows UWP apps, not regular .exe installers.

I know man, I wish I could too, sadly Windows RT was just never supported by many software authors. Even Microsoft has never released anything newer than IE 11 for it.

Maybe take a look at this > https://www.reddit.com/r/Surface/comments/n71nsd/browservice_brought_my_surface_rt_back_to_life/

gitnewcomer commented 5 months ago

@Alex313031 Surface RT was already jailbrocken some years ago and inclusive the majority that have one, use it with the leaked Windows 10 ARM32, that sadly was never released by Microsoft (https://xdaforums.com/t/tutorial-install-windows-10-for-arm32-on-your-surface-rt.4052035/). The only Windows 10 ARM32 that exists, is the one that still has the old Edge browser and this was the reason I asked if it was possible to build this for ARM32... :)

Alex313031 commented 5 months ago

@gitnewcomer If you are running Win10 arm32, it might be possible to compile for arm32. I can try it. No promises.

Alex313031 commented 5 months ago

@gitnewcomer Im sorry, but compiling for windows with arm32 led to so many compiler errors in so many files that I wouldn't even know where to begin to start fixing it.

Seems Windows RT is just one of those things that was abandoned by Microsoft.

gitnewcomer commented 5 months ago

@Alex313031 maybe you need to tweak the parameters for the compiler, just check this thread on XDA, they are porting some apps to WindowsRT (Windows 10 ARM32): https://xdaforums.com/t/desktop-apps-ported-to-windows-rt.2092348/post-89151965

Thanks again for trying it out! :)

Alex313031 commented 5 months ago

@gitnewcomer I tried that, with a little more compilation progress, but still alot of errors about midway through.

It might be possible to fix, but this would take ALOT of work and I am already bogged down rebasing all my projects and building all the releases.

gitnewcomer commented 5 months ago

@Alex313031 thank you for your time and effort trying to get it working. You would be a hero if you could give Windows RT hardware a second chance... :) Do you have the source code of the project current state publicly available? Maybe @pahaze / @armdevvel (dev trying to port Otter Browser for Windows ARM32) could help develop this project... :)

Alex313031 commented 5 months ago

@gitnewcomer I can upload it.

pahaze commented 4 months ago

Sorry for my late response, but I'd absolutely be willing to look at it! Can't and won't promise anything would come out of it though. I'm not that experienced sadly 🥲

I've started efforts towards different browsers/engines, but my lack of knowledge in the area is the biggest roadblock for me. Like @gitnewcomer mentioned, I've got Otter, and although it's better than having nothing besides IE, it's incredibly unstable despite not even using any Assembly code (which is my second biggest roadblock). So, I'd say I wouldn't be able to do too much on my own with the source, but hey, no harm 🤷‍♂️😅

gitnewcomer commented 4 months ago

@gitnewcomer I can upload it.

@Alex313031 just let us know when you've upload it... :)

gz83 commented 4 months ago

@gitnewcomer I can upload it.

@Alex313031 just let us know when you've upload it... :)

@gitnewcomer

If you need the source code used by Thorium, you can use the --recursive parameter to clone the Thorium repo (not this repo). In addition, you need to refer to Google's official guidelines to obtain the complete source code of chromium.

gitnewcomer commented 4 months ago

@gitnewcomer

If you need the source code used by Thorium, you can use the --recursive parameter to clone the Thorium repo (not this repo). In addition, you need to refer to Google's official guidelines to obtain the complete source code of chromium.

Hello @gz83, what I mean is the already changed source code for ARM32 where @Alex313031 got errors compiling it...

gz83 commented 4 months ago

I understand your needs, but please note that if we really want Thorium to run on arm32, we may encounter problems or errors, or even some components do not support arm32. Since I am mainly responsible for compiling and testing the Windows version, I will continue to follow up on the progress of this issue.

@gitnewcomer

gitnewcomer commented 4 months ago

@gz83 well, if Thorium for ARM64 has assembly code, it would need to be ported to ARM32... if @Alex313031 already started testing compiling the source code for ARM32, it would be better to continue on his source code base... this is why he proposed to upload it, I think... :)

gz83 commented 4 months ago

@gitnewcomer

Chromium and its derivative browsers are mainly written in C++ language, and some assembly code also appears in the code base, but the proportion of this part of assembly code is not high. In addition, although we may face some problems or errors currently, it would be great if we can make the Thorium browser work on ARM32

pahaze commented 4 months ago

I understand your needs, but please note that if we really want Thorium to run on arm32, we may encounter problems or errors, or even some components do not support arm32. Since I am mainly responsible for compiling and testing the Windows version, I will continue to follow up on the progress of this issue.

@gitnewcomer

If it's of any help in terms of components, we do have a list of working libraries via my project's MXE repository. That's the issue though, at least for me. I've heard Chromium wants MSVC as your compiler and Windows as host to build, but I use Clang (LLVM-MinGW) as my compiler and Linux as my host : )

gz83 commented 4 months ago

I understand your needs, but please note that if we really want Thorium to run on arm32, we may encounter problems or errors, or even some components do not support arm32. Since I am mainly responsible for compiling and testing the Windows version, I will continue to follow up on the progress of this issue. @gitnewcomer

If it's of any help in terms of components, we do have a list of working libraries via my project's MXE repository. That's the issue though, at least for me. I've heard Chromium wants MSVC as your compiler and Windows as host to build, but I use Clang (LLVM-MinGW) as my compiler and Linux as my host : )

@pahaze MSVC is indeed one of the compilers used by Chromium, but nowadays it's more common to use Google's preconfigured clang compiler (which doesn't include MinGW, and is driven by ninja and MSVC headers, libraries, etc.) to compile for the browser, and it's recommended to use Windows to do so.

pahaze commented 4 months ago

@pahaze MSVC is indeed one of the compilers used by Chromium, but nowadays it's more common to use Google's preconfigured clang compiler (which doesn't include MinGW, and is driven by ninja and MSVC headers, libraries, etc.) to compile for the browser, and it's recommended to use Windows to do so.

Thought so. Think I'd be able to inject in LLVM-MinGW (somewhat easily)? I can use Windows, that's no biggie as there's LLVM-MinGW executables for it and whatever libraries I need I can copy from precompilations in Linux (I dual boot, but rarely use Windows), if Chromium's build system allows for using "system" libraries anyway. If not I can just mess with whatever's provided by Chromium to work.

Also, how about going and using MSVC? Still acceptable or not usable by Chromium's build system? I've never particularly liked gn, but mainly cause I could never get it to work in my favor, but I also have never used it other than for ARM Windows port attempts that have failed (and were years ago now). I don't know MSVC very well, but I'm willing to learn it if it can get farther than Clang

gz83 commented 4 months ago

I'm not sure about the consequences of using LLVM-MinGW. Also I see you mentioned "system" libraries, can you tell me about them? Maybe I can help you to determine if they are suitable for Chromium.

As for compiling the Thorium browser with MSVC, we need to use visual studio and compile the browser within visual studio. However, this may also have some undesirable consequences, such as slower compilation, inability to use performance optimization parameters, and only being able to generate versions for debugging purposes only.

I don't think it's too complicated to do now, we just need to wait for Alex to upload the ARM32 compilation parameters and other files we need to use, and then try to solve the problems or errors we encounter.

@pahaze

pahaze commented 4 months ago

I'm not sure about the consequences of using LLVM-MinGW.

Makes sense. Everything I've compiled so far is hit or miss. It can be as stable as can be... Or not run at all / crash during runtime. AFAIK it's only related to the code and how LLVM-MinGW handles it. For my project, we stuck to LLVM 14 as executables produced by LLVM 14+ tend to not run on Windows RT 8.1. We had already got our base set on 14 and to keep compatibility with said libraries, we've simply stayed there despite LLVM-MinGW being on (I believe) LLVM 18.0.0 RC1 now.

Also I see you mentioned "system" libraries, can you tell me about them?

Absolutely! (FWIW,) I've started working on an Arctic-Fox port alongside Otter and plan to start others, and within their autoconf / configure files, they have options for using "system" libraries, basically using whatever's in the toolchain's include / lib directories instead of compiling it's own version of library. For example, --use-system-pixman is an option to use pixman compiled by my project's MXE instead of letting the mach tool compile it during the Arctic-Fox build. (If anybody looks at this fork, it is currently incredibly "bad" in my opinion due to using minimal fixes as I don't know ARM assembly 🙃. I'd like to learn, don't know where to start)

I was wondering if Chromium and its forks are the same way with their dependencies, allowing precompiled ones to be used instead of building them during the process.

As for compiling the Thorium browser with MSVC, we need to use visual studio and compile the browser within visual studio. However, this may also have some undesirable consequences, such as slower compilation, inability to use performance optimization parameters, and only being able to generate versions for debugging purposes only.

I see. The main reason I mentioned is, as said, LLVM-MinGW can be hit or miss, whilst MSVC tends to produce very stable executables. I'd like to use it as a whole, but Clang and Linux is simply where it's at for me. However, any steps towards making our little tablet usable is worth it to me, and I'd install what I needed to help to the best of my ability.

@gz83

realzendroid commented 3 months ago

@gitnewcomer Unfortunately, Chromium has never supported ARM32 Windows or Windows RT. There was some discussion about it in 2013 > https://xdaforums.com/t/porting-chromium-to-windows-rt.2095686/ but nothing ever came of it. Even if we could compile it, it would require "jailbreaking" your device to run, since Windows RT by default only allows UWP apps, not regular .exe installers.

I know man, I wish I could too, sadly Windows RT was just never supported by many software authors. Even Microsoft has never released anything newer than IE 11 for it.

Maybe take a look at this > https://www.reddit.com/r/Surface/comments/n71nsd/browservice_brought_my_surface_rt_back_to_life/

There is a port of pale moon for windows rt and you can run exe files through signing them suprisingly easily

gitnewcomer commented 3 months ago

There is a port of pale moon for windows rt and you can run exe files through signing them suprisingly easily

Hi @realzendroid do you have a link you can share?

@Alex313031 when could you share the source code of your attempt to port Thorium to ARM32?

Thanks! :)

gitnewcomer commented 3 months ago

Sorry, clicked wrongly on close issue... :)

pahaze commented 3 months ago

@gitnewcomer Unfortunately, Chromium has never supported ARM32 Windows or Windows RT. There was some discussion about it in 2013 > https://xdaforums.com/t/porting-chromium-to-windows-rt.2095686/ but nothing ever came of it. Even if we could compile it, it would require "jailbreaking" your device to run, since Windows RT by default only allows UWP apps, not regular .exe installers.

I know man, I wish I could too, sadly Windows RT was just never supported by many software authors. Even Microsoft has never released anything newer than IE 11 for it.

Maybe take a look at this > https://www.reddit.com/r/Surface/comments/n71nsd/browservice_brought_my_surface_rt_back_to_life/

There is a port of pale moon for windows rt and you can run exe files through signing them suprisingly easily

There is NOT a Pale Moon port. There's source that attempts to port, but... It's in the same state as my Arctic-Fox port: unbuildable. The person who was working on the Pale Moon port was worrying more about changing logos and branding more than actually working on the code at one point. They might've started on the actual code, I dunno, but AFAIK it's still entirely unbuildable and doesn't get far in the process at all besides configuring for the target.

gitnewcomer commented 2 months ago

@Alex313031 when could you share the source code of your attempt to port Thorium to ARM32?

@Alex313031 any news about sharing the source code you used for the ARM32 attempt, so maybe @pahaze could look at it? :)

kristibektashi commented 1 week ago

@gitnewcomer I can upload it.

@Alex313031 Have you uploaded it yet?

gz83 commented 1 week ago

Google will soon abandon the use of MSVC for compilation and development. If we need to use MSVC to compile and develop ARM32 versions, it will become quite difficult.

kristibektashi commented 1 week ago

Google will soon abandon the use of MSVC for compilation and development. If we need to use MSVC to compile and develop ARM32 versions, it will become quite difficult.

I don't think you have to use MSVC, LLVM-MinGW also supports ARM32 Windows.

pahaze commented 1 week ago

Google will soon abandon the use of MSVC for compilation and development. If we need to use MSVC to compile and develop ARM32 versions, it will become quite difficult.

I don't think you have to use MSVC, LLVM-MinGW for ARM32 Windows also exists after all.

This is my preferred method of porting!! I use Linux, and Clang is just easier in general IMO. I have my own version of MXE that I use. It's a bit dated, I've been busy with work, but I'll get back into the ARM stuff when I'm able to.

gz83 commented 1 week ago

I know this stuff exists, but it seems nobody has ever done it (compiling and developing Chromium for ARM32) and I'm not sure how much progress will be made.

@kristibektashi @pahaze

kristibektashi commented 1 week ago

I know this stuff exists, but it seems nobody has ever done it (compiling and developing Chromium for ARM32) and I'm not sure how much progress will be made.

@kristibektashi @pahaze

I think it's worth it because even if the port isn't maintained, an outdated Chromium is still better than IE11 and Legacy Edge (on leaked Windows 10 build 15035). I wish I could help but I'm not that good with coding. However if @Alex313031 were to upload the progress they have made on Chromium/Thorium for ARM32 Windows, someone else might just make it happen