zig/deps/aro
Andrew Kelley 105db13536 std.Build: implement --host-target, --host-cpu, --host-dynamic-linker
This also makes a long-overdue change of extracting common state from
Build into a shared Graph object.

Getting the semantics right for these flags turned out to be quite
tricky. In the end it works like this:
* The override only happens when the target is fully native, with no
  additional query parameters, such as versions or CPU features added.
* The override affects the resolved Target but leaves the original Query
  unmodified.
* The "is native?" detection logic operates on the original, unmodified
  query. This makes it possible to provide invalid host target
  information, causing confusing errors to occur. Don't do that.

There are some minor breaking changes to std.Build API such as the fact
that `b.zig_exe` is now moved to `b.graph.zig_exe`, as well as a handful
of other similar flags.
2024-02-02 20:43:01 -07:00
..
aro std.heap: add runtime safety for calling stackFallback(N).get multiple times 2024-01-09 17:18:20 -08:00
backend Remove all usages of std.mem.copy and remove std.mem.set (#18143) 2023-11-29 16:03:02 -05:00
build std.Build: implement --host-target, --host-cpu, --host-dynamic-linker 2024-02-02 20:43:01 -07:00
aro.zig sync Aro dependency 2023-11-15 11:26:49 +02:00
backend.zig sync Aro dependency 2023-11-15 11:26:49 +02:00
README.md sync Aro dependency 2023-11-15 11:26:49 +02:00

Aro

Aro

A C compiler with the goal of providing fast compilation and low memory usage with good diagnostics.

Aro is included as an alternative C frontend in the Zig compiler for translate-c and eventually compiling C files by translating them to Zig first. Aro is developed in https://github.com/Vexu/arocc and the Zig dependency is updated from there when needed.

Currently most of standard C is supported up to C23 and as are many of the common extensions from GNU, MSVC, and Clang

Basic code generation is supported for x86-64 linux and can produce a valid hello world:

$ cat hello.c
extern int printf(const char *restrict fmt, ...);
int main(void) {
    printf("Hello, world!\n");
    return 0;
}
$ zig build run -- hello.c -o hello
$ ./hello
Hello, world!
$