mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2026-09-12 00:04:17 -04:00
Supersedes #8872. Thanks to @likecrazy1, whose `AburiCompiler` class is taken from that PR unchanged and who is credited as co-author — the reason this is a new PR rather than an edit is that the properties needed rewriting from scratch once upstream changed direction. @serjective has [confirmed](https://github.com/compiler-explorer/compiler-explorer/pull/8872#issuecomment-) that `godbolt` is the live branch and the pinned `atta-mills` classic version is abandoned, so this configures the nightly built from `godbolt`. ## What changed from #8872, and why **It is not an aarch64 Darwin cross compiler any more.** The new build reports `Target: x86_64-unknown-linux-gnu`, so the group is plain `aburi` with `instructionSet=amd64` rather than "Aburi (aarch64 Apple Darwin)". **No `--sysroot`.** This is the important one. On Linux, aburi's `resolve_effective_stdlib` treats an explicit `--sysroot` as a different root filesystem and **switches off Adinkra**, its own C++ standard library. That is exactly why the previous configuration compiled CE's header-free `square` example byte-perfectly and then failed on the first `#include`. For a Linux target aburi takes its C headers from the host root and its C++ headers from Adinkra, so it wants no sysroot at all. **`-std=c++20` is required**, not optional — Adinkra `#error`s below C++20, so a bare C++ compile fails outright. **Nightly shape:** `isNightly=true` and `semver=(trunk)` instead of a pinned `0.1.1`, since it now tracks a moving branch. **Binary, binary object and execution are off.** Linking does work (I built and ran a C++ executable against the shipped artifact), but nothing has exercised those paths on the site, and they need `-L`/`-Wl,-rpath` pointing at the bundled libc++abi to link at all. Advertising a control that hard-fails is the exact trap this compiler fell into last time, so I would rather turn them on as a follow-up once someone can try them for real. ## Testing Everything below was run against the artifact that is actually on S3 (`aburi-godbolt-20260814.tar.xz`), installed through the infra installable: - `--version` and `--help` both exit 0 (a non-zero version command silently drops a compiler from the dropdown) - C++ `-S` emits x86-64 assembly - C compiles, links and runs - `--emit-llvm` alone emits valid LLVM IR, which is what `AburiCompiler` uses for the IR view. Note it rejects `--emit-llvm` combined with `-S`, and the class already strips `-S` on that path - `-g` is accepted, which the class always passes - a TU using `<vector>`, `<string>` and a thrown-and-caught exception compiles, links and runs — the case the old `--sysroot` broke `npm run test:props` (90 passed), `npm run ts-check` and `npm run lint-check` all clean. ## Merge order This should land after, and only after, the compiler is installed: - compiler-explorer/misc-builder#142, #143 (builder) — merged - compiler-explorer/infra#2294 (nightly installable) - compiler-explorer/compiler-workflows#76 (daily build) Co-Authored-By: likecrazy1 <157763655+likecrazy1@users.noreply.github.com> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com> Co-authored-by: likecrazy1 <157763655+likecrazy1@users.noreply.github.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
201 lines
8.6 KiB
TypeScript
201 lines
8.6 KiB
TypeScript
// Copyright (c) 2021, Compiler Explorer Authors
|
|
// All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions are met:
|
|
//
|
|
// * Redistributions of source code must retain the above copyright notice,
|
|
// this list of conditions and the following disclaimer.
|
|
// * Redistributions in binary form must reproduce the above copyright
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
// documentation and/or other materials provided with the distribution.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
// POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
export {AburiCompiler} from './aburi.js';
|
|
export {AdaCompiler} from './ada.js';
|
|
export {AMDRGACompiler} from './amd-rga.js';
|
|
export {AnalysisTool} from './analysis-tool.js';
|
|
export {AssemblyCompiler} from './assembly.js';
|
|
export {AvrGcc6502Compiler} from './avrgcc6502.js';
|
|
export {BeebAsmCompiler} from './beebasm.js';
|
|
export {C2RustCompiler} from './c2rust.js';
|
|
export {C3Compiler} from './c3c.js';
|
|
export {Ca65Compiler} from './ca65.js';
|
|
export {CarbonCompiler, CarbonExplorerCompiler} from './carbon.js';
|
|
export {Cc65Compiler} from './cc65.js';
|
|
export {CerberusCompiler} from './cerberus.js';
|
|
export {CircleCompiler} from './circle.js';
|
|
export {CIRCTCompiler} from './circt.js';
|
|
export {CL430Compiler} from './cl430.js';
|
|
export {
|
|
ClangCompiler,
|
|
ClangCudaCompiler,
|
|
ClangDxcCompiler,
|
|
ClangHexagonCompiler,
|
|
ClangHipCompiler,
|
|
ClangIntelCompiler,
|
|
TIClangCompiler,
|
|
Z80ClangCompiler,
|
|
} from './clang.js';
|
|
export {ClangCLCompiler} from './clangcl.js';
|
|
export {CleanCompiler} from './clean.js';
|
|
export {ClojureCompiler} from './clojure.js';
|
|
export {CLSPVCompiler} from './clspv.js';
|
|
export {CMakeScriptCompiler} from './cmakescript.js';
|
|
export {Co2ccCompiler, Co2RustcCompiler} from './co2.js';
|
|
export {CoccinelleCCompiler, CoccinelleCPlusPlusCompiler} from './coccinelle.js';
|
|
export {CodonCompiler} from './codon.js';
|
|
export {CompCertCompiler} from './compcert.js';
|
|
export {CppFrontCompiler} from './cppfront.js';
|
|
export {CprocCompiler} from './cproc.js';
|
|
export {CrystalCompiler} from './crystal.js';
|
|
export {CuteDslCompiler} from './cutedsl.js';
|
|
export {D8Compiler} from './d8.js';
|
|
export {DartCompiler} from './dart.js';
|
|
export {DefaultCompiler} from './default.js';
|
|
export {Dex2OatCompiler} from './dex2oat.js';
|
|
export {DMDCompiler} from './dmd.js';
|
|
export {
|
|
DotNetCoreClrCompiler,
|
|
DotNetCrossgen2Compiler,
|
|
DotNetIlDasmCompiler,
|
|
DotNetIlSpyCompiler,
|
|
DotNetLegacyCompiler,
|
|
DotNetMonoCompiler,
|
|
DotNetNativeAotCompiler,
|
|
} from './dotnet.js';
|
|
export {EDGCompiler} from './edg.js';
|
|
export {ElixirCompiler} from './elixir.js';
|
|
export {ElixirAsmCompiler} from './elixirasm.js';
|
|
export {EllccCompiler} from './ellcc.js';
|
|
export {ErlangCompiler} from './erlang.js';
|
|
export {ErlangAsmCompiler} from './erlangasm.js';
|
|
export {EWARMCompiler} from './ewarm.js';
|
|
export {EWAVRCompiler} from './ewavr.js';
|
|
export {FakeCompiler} from './fake-for-test.js';
|
|
export {FlangCompiler} from './flang.js';
|
|
export {FlangFC1Compiler} from './flang-fc1.js';
|
|
export {FortranCompiler} from './fortran.js';
|
|
export {FXCCompiler} from './fxc.js';
|
|
export {GA68Compiler} from './ga68.js';
|
|
export {GCCCompiler} from './gcc.js';
|
|
export {GCCCobolCompiler} from './gcccobol.js';
|
|
export {GCCRSCompiler} from './gccrs.js';
|
|
export {GCCGimpleCompiler} from './gimple.js';
|
|
export {GLSLCompiler} from './glsl.js';
|
|
export {GM2Compiler} from './gm2.js';
|
|
export {GnuCobolCompiler} from './gnucobol.js';
|
|
export {GolangCompiler} from './golang.js';
|
|
export {HaskellCompiler} from './haskell.js';
|
|
export {HelionCompiler} from './helion.js';
|
|
export {HLSLCompiler} from './hlsl.js';
|
|
export {HookCompiler} from './hook.js';
|
|
export {HyloCompiler} from './hylo.js';
|
|
export {ISPCCompiler} from './ispc.js';
|
|
export {JaktCompiler} from './jakt.js';
|
|
export {JavaCompiler} from './java.js';
|
|
export {JuliaCompiler} from './julia.js';
|
|
export {KotlinCompiler} from './kotlin.js';
|
|
export {LDCCompiler} from './ldc.js';
|
|
export {LeanCompiler} from './lean.js';
|
|
export {LFortranCompiler} from './lfortran.js';
|
|
export {LLCCompiler} from './llc.js';
|
|
export {LLVMmcaTool} from './llvm-mca.js';
|
|
export {LLVMMOSCompiler} from './llvm-mos.js';
|
|
export {LuaCompiler} from './lua.js';
|
|
export {M68kCompiler} from './m68k.js';
|
|
export {MadPascalCompiler} from './madpascal.js';
|
|
export {MicroPythonCompiler} from './micropython.js';
|
|
export {MLIRCompiler} from './mlir.js';
|
|
export {MojoCompiler} from './mojo.js';
|
|
export {MovfuscatorCompiler} from './movfuscator.js';
|
|
export {MrustcCompiler} from './mrustc.js';
|
|
export {Msp430Compiler} from './msp430.js';
|
|
export {NasmCompiler} from './nasm.js';
|
|
export {NimCompiler} from './nim.js';
|
|
export {NixCompiler} from './nix.js';
|
|
export {NorcroftCompiler} from './norcroft.js';
|
|
export {NumbaCompiler} from './numba.js';
|
|
export {NvccCompiler} from './nvcc.js';
|
|
export {NvcppCompiler} from './nvcpp.js';
|
|
export {NvrtcCompiler} from './nvrtc.js';
|
|
export {OCamlCompiler} from './ocaml.js';
|
|
export {OdinCompiler} from './odin.js';
|
|
export {OptCompiler} from './opt.js';
|
|
export {ORCACompiler} from './orca.js';
|
|
export {OSACATool} from './osaca.js';
|
|
export {FPCCompiler} from './pascal.js';
|
|
export {PascalWinCompiler} from './pascal-win.js';
|
|
export {PerlCompiler} from './perl.js';
|
|
export {PonyCompiler} from './pony.js';
|
|
export {PPCICompiler} from './ppci.js';
|
|
export {PtxAssembler} from './ptxas.js';
|
|
export {PythonCompiler} from './python.js';
|
|
export {PythranCompiler} from './pythran.js';
|
|
export {QNXCompiler} from './qnx.js';
|
|
export {R8Compiler} from './r8.js';
|
|
export {RacketCompiler} from './racket.js';
|
|
export {RakuCompiler} from './raku.js';
|
|
export {RazorForgeCompiler} from './razorforge.js';
|
|
export {ResolcCompiler} from './resolc.js';
|
|
export {RGACompiler} from './rga.js';
|
|
export {RubyCompiler} from './ruby.js';
|
|
export {RustCompiler} from './rust.js';
|
|
export {RustcCgCraneliftCompiler} from './rustc-cg-cranelift.js';
|
|
export {RustcCgGCCCompiler} from './rustc-cg-gcc.js';
|
|
export {SailCompiler} from './sail.js';
|
|
export {ScalaCompiler} from './scala.js';
|
|
export {ScaleNvccAMDCompiler} from './scale-nvcc-amd.js';
|
|
export {ScaleNvccNvidiaCompiler} from './scale-nvcc-nvidia.js';
|
|
export {SdccCompiler} from './sdcc.js';
|
|
export {SfpiCompiler} from './sfpi.js';
|
|
export {ShaderExplorerCompiler} from './shader-explorer.js';
|
|
export {SlangCompiler} from './slang.js';
|
|
export {SnowballCompiler} from './snowball.js';
|
|
export {SolidityCompiler} from './solidity.js';
|
|
export {SolidityZKsyncCompiler} from './solidity-zksync.js';
|
|
export {SolxCompiler} from './solx.js';
|
|
export {SpiceCompiler} from './spice.js';
|
|
export {SPIRVCompiler} from './spirv.js';
|
|
export {SPIRVToolsCompiler} from './spirv-tools.js';
|
|
export {SwayCompiler} from './sway.js';
|
|
export {SwiftCompiler} from './swift.js';
|
|
export {TableGenCompiler} from './tablegen.js';
|
|
export {TenDRACompiler} from './tendra.js';
|
|
export {TIC2000} from './tic2000.js';
|
|
export {TinyCCompiler} from './tinyc.js';
|
|
export {TinyGoCompiler} from './tinygo.js';
|
|
export {ToitCompiler} from './toit.js';
|
|
export {TritonCompiler} from './triton.js';
|
|
export {TurboCCompiler} from './turboc.js';
|
|
export {TypeScriptNativeCompiler} from './typescript-native.js';
|
|
export {VCompiler} from './v.js';
|
|
export {V8Compiler} from './v8.js';
|
|
export {ValaCompiler} from './vala.js';
|
|
export {VyperCompiler} from './vyper.js';
|
|
export {WasmtimeCompiler} from './wasmtime.js';
|
|
export {Win32Compiler} from './win32.js';
|
|
export {Win32MingWClang} from './win32-mingw-clang.js';
|
|
export {Win32MingWGcc} from './win32-mingw-gcc.js';
|
|
export {Win32VcCompiler} from './win32-vc.js';
|
|
export {Win32Vc6Compiler} from './win32-vc6.js';
|
|
export {WineVcCompiler} from './wine-vc.js';
|
|
export {WslVcCompiler} from './wsl-vc.js';
|
|
export {WyrmCompiler} from './wyrm.js';
|
|
export {YLCCompiler} from './ylc.js';
|
|
export {z88dkCompiler} from './z88dk.js';
|
|
export {ZigCompiler} from './zig.js';
|
|
export {ZigCC} from './zigcc.js';
|
|
export {ZigCXX} from './zigcxx.js';
|