-
Notifications
You must be signed in to change notification settings - Fork 514
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
LLVM crosscompile x64 for ARM64 #1826
Conversation
0334d50
to
2849c77
Compare
2849c77
to
f754b38
Compare
build/llvm/LLVM.lua
Outdated
if os.host() == "linux" then | ||
local host_arch = unix_host_architecture() | ||
if host_arch ~= "aarch64" then | ||
options = "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
options = "" | |
options = options .. "" |
build/llvm/LLVM.lua
Outdated
if os.host() == "macosx" then | ||
local host_arch = unix_host_architecture() | ||
if host_arch ~= "arm64" then | ||
options = "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same here
@@ -438,10 +438,44 @@ function build_llvm(llvm_build) | |||
local options = os.ishost("macosx") and | |||
"-DLLVM_ENABLE_LIBCXX=true" or "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AFAICT this configuration is being ignored by the lines below. Could be an issue unless this is not needed anymore.
OK good news looks like the Mac cross compile path works as well. I've updated with the changes requested. The flag you mentioned didn't seem to be needed, but if it's there it's also not hurting anything so I'm inclined to leave it in case it's needed for a particular host configuration that I haven't tested. |
Linux Arm64 LLVM CI fails, guess we need to install the cross compiler before building? https://github.com/mono/CppSharp/actions/runs/7802912309/job/21281462391 Any chance you can take a look? |
Just did. Yep, looks like you'll need to |
commit 8bd3f45 Author: João Matos <joao@tritao.eu> Date: Tue Feb 6 18:30:12 2024 +0000 Update llvm.yml to install AArch64 cross compilers commit a81abd5 Author: Conrad Kreyling <conrad@kreyling.biz> Date: Tue Feb 6 11:29:07 2024 -0500 LLVM crosscompile x64 for ARM64 (mono#1826) * LLVM crosscompile x64 for ARM64 * Fix MacOS host platform test * Ensure options is persistent in cross compile paths commit 1d1b21f Author: Conrad Kreyling <conrad@kreyling.biz> Date: Fri Feb 2 15:12:42 2024 -0500 Instruct generator to build ARM64 bindings commit 491248b Author: Conrad Kreyling <conrad@kreyling.biz> Date: Fri Feb 2 15:09:44 2024 -0500 Fix missing AArch64 entry in CLI CppAbi commit bbb0693 Author: Conrad Kreyling <conrad@kreyling.biz> Date: Fri Feb 2 13:35:11 2024 -0500 Enable ARM64 support on LLVM builds commit b5ab95e Author: Joao Matos <joao@tritao.eu> Date: Thu Feb 1 11:39:24 2024 +0000 Update iOS64 ABI name to the more accurate AppleARM64. commit d1307a5 Author: Joao Matos <joao@tritao.eu> Date: Thu Feb 1 11:21:52 2024 +0000 Add support for AArch64 C++ ABI. commit 9071cd2 Author: deadlocklogic <57906342+deadlocklogic@users.noreply.github.com> Date: Sun Dec 17 17:03:24 2023 +0200 Implement ClassTemplatePartialSpecialization::Parameters (mono#1809) * Implement ClassTemplatePartialSpecialization::Parameters * Template.cs: Implement ClassTemplatePartialSpecialization.Parameters * GeneratorKind: fix bug introduced while migrating from enum to class * Implement native ClassTemplatePartialSpecialization.Parameters + ASTConverter * regenerated bindings (mono#1813) * regenerated bindings * regenerated bindings after rebase * Directory.Build.props: support C# 10.0 * Implement native ClassTemplatePartialSpecialization.Parameters + ASTConverter * Regenerated bindings * TestAST.cs: add TestASTClassTemplatePartialSpecialization commit 2ecd952 Author: deadlocklogic <57906342+deadlocklogic@users.noreply.github.com> Date: Sun Dec 17 13:08:34 2023 +0200 regenerated bindings (mono#1813) * regenerated bindings * regenerated bindings after rebase * Directory.Build.props: support C# 10.0 commit 24d1a84 Author: deadlocklogic <57906342+deadlocklogic@users.noreply.github.com> Date: Sun Dec 17 11:44:00 2023 +0200 Stdlib.CSharp.cs: remove buggy typemap (mono#1812) commit 1327971 Author: deadlocklogic <57906342+deadlocklogic@users.noreply.github.com> Date: Sat Dec 16 21:36:04 2023 +0200 GeneratorKind: patch bug caused by missing ToString (mono#1811) commit 519e97f Author: Joao Matos <joao@tritao.eu> Date: Tue Dec 12 15:30:14 2023 +0000 Remove 32-bit builds and non-debug symbols release builds from LLVM Windows CI. commit 1211272 Author: deadlocklogic <57906342+deadlocklogic@users.noreply.github.com> Date: Tue Dec 12 17:25:12 2023 +0200 Build llvm `Debug`/`Release` for `Windows`. (mono#1800) * Update llvm-win.yml * Update llvm-win.yml * Update llvm-win.yml commit 12c267d Author: zylalx1 <zylalx1@163.com> Date: Fri Dec 8 03:58:10 2023 +0800 Fixed a bug causing the header file to be included twice when Options.GenerateName is not null (mono#1803) commit e068f2a Author: deadlocklogic <57906342+deadlocklogic@users.noreply.github.com> Date: Thu Dec 7 16:35:02 2023 +0200 Typemap cleanup (mono#1802) * TypeMap: prepare refactoring into a modular design * TypeMap: refactor C++ backend into common methods * TypeMap: refactor CLI backend into common methods * CLI.Gen.cs: fix omitted typemap from previous commit * Common.Gen.cs: fixed silly modification while testing * GeneratorKind: add FindGeneratorKindByID method * TypeMapDatabase: heavy refactor: group typemaps by GeneratorKind * TypeMap: refactor CSharp backend into common methods + migration * TypeMap: cleanup patches from previous commits * TypeMapDatabase: fix passing GeneratorKind to FindTypeMap calls * Stdlib.CSharp.cs: move std::map typemap from Stdlib.CLI.cs * TypeMapDatabase: improve parameter name commit 8c2da6d Author: deadlocklogic <57906342+deadlocklogic@users.noreply.github.com> Date: Mon Nov 13 22:00:41 2023 +0200 Major refactor: TypePrinter: improve modular design + cleanup (mono#1796) commit 0edd48c Author: deadlocklogic <57906342+deadlocklogic@users.noreply.github.com> Date: Mon Nov 13 20:15:24 2023 +0200 Major refactoring: refactor GeneratorKind enum into a class (mono#1794) * Major refactoring: refactor GeneratorKind enum into a class * Minor fix: add readonly * Add Type property for GenerationKind + cleanup * GeneratorKind: add Name property + refactor hardcoded names * GeneratorKind: add CLIOptions property + refactor hardcoded options * CppSharp.CLI: minor fix: use generator.ToLower() * GeneratorKind: fix warning commit 40f3a09 Author: deadlocklogic <57906342+deadlocklogic@users.noreply.github.com> Date: Sat Nov 11 16:51:18 2023 +0200 Minor improvements (mono#1793) * CppSharp.Generators.Options: added pre/post TranslationUnitPass callback * CppSharp.Generators.Passes.Pass: added TranslationUnitPassGeneratorDependent commit b14038a Author: Stefan <29021710+Saalvage@users.noreply.github.com> Date: Mon Oct 23 14:23:51 2023 +0200 Value types may generate `Dispose` (mono#1787) commit 3b2a15d Author: João Matos <joao@tritao.eu> Date: Sat Oct 21 19:33:13 2023 +0100 Update README.md commit a5afda8 Author: Stefan <29021710+Saalvage@users.noreply.github.com> Date: Fri Oct 20 21:00:04 2023 +0200 Fix parameterless constructors not being generated for structs (mono#1783) * Fix parameterless constructors not being generated for structs * Fix implicit non-trivial default ctor * Adjust `Ignore` linked issue commit b16e809 Author: Stefan <29021710+Saalvage@users.noreply.github.com> Date: Fri Oct 20 18:54:58 2023 +0200 Introduce `GenerateFreeStandingFunctionsClassName` option (mono#1782) * Introduce `GenerateFreeStandingFunctionsClassName` option * Support CLI and fixes commit 03874e7 Author: Stefan <29021710+Saalvage@users.noreply.github.com> Date: Thu Oct 19 17:24:55 2023 +0200 Fix Value Type String Member Invalid Codegen (mono#1778) * Fix code generation * Generate exception on broken struct set op * Remove redundant usings commit adffc99 Author: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Thu Oct 19 14:51:06 2023 +0200 Fix erroneous newline commit b4f261e Author: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Thu Oct 19 14:26:00 2023 +0200 Simplify `IsTemplateParameterType` commit 28000a1 Author: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Thu Oct 19 01:19:07 2023 +0200 Fix mono#1251 three parameter equality operator - Operators in generic classes do not attempt to generate as extension methods anymore - Empty `...Extensions` classes are no longer generated - `string` as a template argument is correctly cast - `MarshalCharAsManagedChar` option also generates correct casts - Suppress warning regarding returning struct field by ref - Eliminate some tabs that snuck into the test C++ header commit d7faf5f Author: Joao Matos <joao@tritao.eu> Date: Wed Oct 18 17:39:49 2023 +0100 Fix SDL_PollEvent generation in the SDL example. Fixes mono#978. Thanks to @Saalvage. commit 7f567b6 Author: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Wed Oct 18 18:26:03 2023 +0200 Fix non-void returning functions with value-type out parameters Also fixes indentation commit 0c60384 Author: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Wed Oct 18 16:49:41 2023 +0200 Additional bump commit 0534e33 Author: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Wed Oct 18 16:35:10 2023 +0200 Bump GH actions versions to solve warnings commit a6ef9d9 Author: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Wed Oct 18 16:19:42 2023 +0200 Fix source dir commit 7e6c492 Author: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Wed Oct 18 16:08:51 2023 +0200 Test fix broken packages commit 2a351b7 Author: Joao Matos <joao@tritao.eu> Date: Wed Oct 18 16:03:36 2023 +0100 Update our version to 1.1. commit 20950c5 Author: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Wed Oct 18 04:58:38 2023 +0200 More stringent test; Fix indentation (of the code itself, not in the generator) commit ebe6b8a Author: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Wed Oct 18 04:47:13 2023 +0200 Fix value type out parameters
Linux x64 now properly builds ARM64 versions of LLVM. Unfortunately, I can't seem to power on my last Intel Mac, so until I find a system to test on I can't verify it. If the CI could run it in the meantime I'd much appreciate it. EDIT: I was able to get it to build in a Rosetta context. If it works I'll upgrade this PR to ready.