@@ -175,76 +175,39 @@ compiler::Result HostTarget::initWithBuiltins(
175175 auto host_device_info =
176176 static_cast <host::device_info_s &>(*compiler_info->device_info );
177177
178- switch (host_device_info.arch ) {
179- case host::arch::ARM :
180- assert ( host::os::LINUX == host_device_info. os &&
181- " ARM cross-compile only supports Linux " );
182- // For cross compiled ARM builds , we can't rely on sys::getProcessTriple
183- // to determine our target. Instead, we set it to a known working triple.
184- triple = llvm::Triple ( " armv7-unknown-linux-gnueabihf-elf " );
185- break ;
186- case host::arch::AARCH64:
187- switch (host_device_info. os ) {
188- case host::os::LINUX :
178+ switch (host_device_info.os ) {
179+ case host::os::ANDROID :
180+ case host::os::LINUX:
181+ // For Linux, we support cross compilation, which means we cannot rely on
182+ // sys::getProcessTriple to determine our target. Instead , we set it to a
183+ // known working triple.
184+ switch (host_device_info. arch ) {
185+ case host::arch::ARM:
186+ triple = llvm::Triple ( " armv7-unknown-linux-gnueabihf-elf " );
187+ break ;
188+ case host::arch::AARCH64 :
189189 triple = llvm::Triple (" aarch64-linux-gnu-elf" );
190190 break ;
191- case host::os::MACOS:
192- assert (host_device_info.native &&
193- " macOS cross-compile not supported" );
194- // Our generated code does not meet Mach-O restrictions: "mach-o
195- // section specifier requires a segment and section separated by a
196- // comma" when we use "notes" as a section name. Force ELF generation
197- // instead, which makes things easier for us anyway as we can reuse
198- // the existing ELF loading logic.
199- triple = llvm::Triple (llvm::sys::getProcessTriple () + " -elf" );
191+ case host::arch::RISCV32:
192+ triple = llvm::Triple (" riscv32-unknown-elf" );
200193 break ;
201- default :
202- llvm_unreachable (" AArch64 cross-compile only supports Linux" );
203- }
204- break ;
205- case host::arch::RISCV32:
206- assert (host::os::LINUX == host_device_info.os &&
207- " RISCV cross-compile only supports Linux" );
208- // For cross compiled RISCV builds, we can't rely on sys::getProcessTriple
209- // to determine our target. Instead, we set it to a known working triple.
210- triple = llvm::Triple (" riscv32-unknown-elf" );
211- break ;
212- case host::arch::RISCV64:
213- assert (host::os::LINUX == host_device_info.os &&
214- " RISCV cross-compile only supports Linux" );
215- triple = llvm::Triple (" riscv64-unknown-elf" );
216- break ;
217- case host::arch::X86:
218- case host::arch::X86_64:
219- switch (host_device_info.os ) {
220- case host::os::ANDROID:
221- case host::os::LINUX:
222- triple = llvm::Triple (host::arch::X86 == host_device_info.arch
223- ? " i386-unknown-unknown-elf"
224- : " x86_64-unknown-unknown-elf" );
194+ case host::arch::RISCV64:
195+ triple = llvm::Triple (" riscv64-unknown-elf" );
225196 break ;
226- case host::os::WINDOWS:
227- // Using windows here ensures that _chkstk() is called which is
228- // important for paging in the stack.
229- #if defined(__MINGW32__) || defined(__MINGW64__)
230- triple = llvm::Triple (host::arch::X86 == host_device_info.arch
231- ? " i386-pc-windows-gnu-elf"
232- : " x86_64-w64-windows-gnu-elf" );
233- #else
234- triple = llvm::Triple (host::arch::X86 == host_device_info.arch
235- ? " i386-pc-windows-msvc-elf"
236- : " x86_64-pc-windows-msvc-elf" );
237- #endif
197+ case host::arch::X86:
198+ triple = llvm::Triple (" i386-unknown-unknown-elf" );
238199 break ;
239- case host::os::MACOS:
240- assert (host_device_info.native &&
241- " macOS cross-compile not supported" );
242- // On Apple, the MachO loader has a bug and can't JIT correctly. We
243- // have to force elf generation for MachO builds. See Redmine #7621.
244- triple = llvm::Triple (llvm::sys::getProcessTriple () + " -elf" );
200+ case host::arch::X86_64:
201+ triple = llvm::Triple (" x86_64-unknown-unknown-elf" );
245202 break ;
246203 }
247204 break ;
205+ case host::os::WINDOWS:
206+ case host::os::MACOS:
207+ assert (host_device_info.native &&
208+ " Cross compilation only supported for Linux" );
209+ triple = llvm::Triple (llvm::sys::getProcessTriple () + " -elf" );
210+ break ;
248211 }
249212
250213 std::string CPU;
0 commit comments