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

ARM32 for WindowsRT? #1

Open
gitnewcomer opened this issue Dec 14, 2023 · 25 comments
Open

ARM32 for WindowsRT? #1

gitnewcomer opened this issue Dec 14, 2023 · 25 comments

Comments

@gitnewcomer
Copy link

gitnewcomer commented Dec 14, 2023

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
Copy link
Owner

Alex313031 commented Jan 6, 2024

@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
Copy link
Author

@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
Copy link
Owner

Alex313031 commented Jan 6, 2024

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

@Alex313031
Copy link
Owner

@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
Copy link
Author

gitnewcomer commented Jan 12, 2024

@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
Copy link
Owner

Alex313031 commented Jan 27, 2024

@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
Copy link
Author

@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
Copy link
Owner

@gitnewcomer I can upload it.

@pahaze
Copy link

pahaze commented Feb 6, 2024

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
Copy link
Author

@gitnewcomer I can upload it.

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

@gz83
Copy link
Collaborator

gz83 commented Feb 6, 2024

@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
Copy link
Author

gitnewcomer commented Feb 6, 2024

@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
Copy link
Collaborator

gz83 commented Feb 6, 2024

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
Copy link
Author

@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
Copy link
Collaborator

gz83 commented Feb 6, 2024

@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
Copy link

pahaze commented Feb 6, 2024

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
Copy link
Collaborator

gz83 commented Feb 7, 2024

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
Copy link

pahaze commented Feb 7, 2024

@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
Copy link
Collaborator

gz83 commented Feb 7, 2024

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
Copy link

pahaze commented Feb 7, 2024

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
Copy link

@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
Copy link
Author

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
Copy link
Author

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

@pahaze
Copy link

pahaze commented Mar 29, 2024

@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
Copy link
Author

@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? :)

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

No branches or pull requests

5 participants