Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ C library.

```toml
[dependencies]
openkal-llvm-runtime = "0.20.0"
openkal-llvm-runtime = "0.20.1"
```

> **Engine floor (mcpp 2026.11.2.1):** 0.17.0 is built over openkal-musl 0.26.0,
Expand Down Expand Up @@ -330,6 +330,14 @@ grants against raw file truncation. The runtime implementation is unchanged.

## OpenKal 0.25 dependency group

Runtime 0.20.1 builds for FreeBSD above openkal-musl (`x86_64-freebsd-musl`,
`aarch64-freebsd-musl`): the selection of compiler-rt is Linux's and the ok
image's, and `clear_cache.c` is kept, since nothing beneath a program of those
rows supplies `__clear_cache`. The rows need openkal-musl 0.29.1, whose
FreeBSD port offers `elf_aux_info`, which compiler-rt's aarch64 `cpu_model`
calls there. The OpenKal conformance suite built so holds every observation in
a FreeBSD virtual machine.

Runtime 0.20.0 is built over openkal-musl `^0.29.0` and the OpenKal 0.25
implementations beneath it (Linux 0.26, macOS 0.23, Windows 0.21, OpenSBI 0.9).
The C++ runtime surface and the allocator selection are unchanged. Through the C
Expand Down
24 changes: 22 additions & 2 deletions mcpp.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
namespace = "mcpplibs"
name = "openkal-llvm-runtime"
version = "0.20.0"
version = "0.20.1"
description = "LLVM's C++ runtime libraries — libc++, libc++abi and libunwind — configured for openkal-musl rather than for a host C library."
license = "Apache-2.0"
authors = ["mcpplibs"]
Expand Down Expand Up @@ -511,6 +511,26 @@ sources = [
"!llvm/libcxx/src/filesystem/int128_builtins.cpp",
]

# FREEBSD ABOVE openkal-musl (`<arch>-freebsd-musl', 0.20.1) TAKES THE SAME
# SELECTION AND KEEPS `clear_cache.c': nothing beneath a program of these rows
# supplies `__clear_cache', which `__builtin___clear_cache' calls on aarch64 (a
# program that writes code and runs it --- the conformance suite's `exec'
# observations --- stopped at `undefined symbol: __clear_cache'), and the file is
# the processor's own instructions there, with no call into the system.
[target.'cfg(os = "freebsd")'.build]
sources = [
"llvm/compiler-rt/lib/builtins/*.c",
"!llvm/compiler-rt/lib/builtins/atomic*.c",
"!llvm/compiler-rt/lib/builtins/emutls.c",
"!llvm/compiler-rt/lib/builtins/enable_execute_stack.c",
"!llvm/compiler-rt/lib/builtins/eprintf.c",
"!llvm/compiler-rt/lib/builtins/gcc_personality_v0.c",
"!llvm/compiler-rt/lib/builtins/crtbegin.c",
"!llvm/compiler-rt/lib/builtins/crtend.c",
"!llvm/compiler-rt/lib/builtins/os_version_check.c",
"!llvm/libcxx/src/filesystem/int128_builtins.cpp",
]

# THE x87 ROUTINES ARE AN ARCHITECTURE PROPERTY, AND THE BLOCK ABOVE SORTS
# BY OPERATING SYSTEM.
#
Expand All @@ -530,7 +550,7 @@ sources = [
# today, so the exclusion looked like an OS property. It is not. Sorting on the
# axis the fact actually lives on is what makes a second architecture work
# without a third copy of the list.
[target.'cfg(all(any(os = "linux", os = "openkal"), not(arch = "x86_64")))'.build]
[target.'cfg(all(any(os = "linux", os = "openkal", os = "freebsd"), not(arch = "x86_64")))'.build]
sources = [
"!llvm/compiler-rt/lib/builtins/*xf*.c",
"!llvm/compiler-rt/lib/builtins/*xc3.c",
Expand Down
Loading