|
| 1 | +-- libc++ and libc++abi as a SOURCE package, for a hosted target whose toolchain |
| 2 | +-- payload cannot supply a static libc++ built for that target. |
| 3 | +-- |
| 4 | +-- THE CASE THAT CREATED IT. mcpp's LLVM payload ships libc++ headers, a std |
| 5 | +-- module source and static archives built for the machine the payload runs on. |
| 6 | +-- On the iOS rows the archives are macOS objects and ld64 refuses them, so the |
| 7 | +-- engine linked the SDK's libc++ under the payload's newer headers, and an |
| 8 | +-- inline function in libc++ 22's headers referenced a symbol the SDK's libc++ |
| 9 | +-- 19 does not export (`__hash_memory`; mcpp-community/mcpp#630). A standard |
| 10 | +-- library is configured for one C library and compiled against its headers; |
| 11 | +-- this package carries the whole library, so the headers a unit is compiled |
| 12 | +-- against, the module it imports and the objects it links are one release. |
| 13 | +-- |
| 14 | +-- THE MECHANISM IS THE ONE `openkal-llvm-runtime` USES: `provides` declares the |
| 15 | +-- C++ layer, the engine broadcasts the headers, adopts the std module, and |
| 16 | +-- links with `-nostdlib++`. The C library beneath stays the target's own, and |
| 17 | +-- nothing here is Apple-specific. |
| 18 | +-- |
| 19 | +-- THE NAMESPACE AND THE VERSION ARE UPSTREAM'S, as `llvm.compiler-rt-builtins` |
| 20 | +-- established: every file under llvm/ is byte-identical to `llvmorg-22.1.8`, |
| 21 | +-- and the fourth segment is the packaging revision. A consumer writes the |
| 22 | +-- version out in full, because a bare requirement in mcpp is an exact pin. |
| 23 | +package = { |
| 24 | + spec = "1", |
| 25 | + namespace = "llvm", |
| 26 | + name = "libcxx", |
| 27 | + description = "libc++ and libc++abi as a source package: the C++ standard library compiled with the consuming program's own flags, for a hosted target whose toolchain payload cannot supply a static libc++ built for it", |
| 28 | + licenses = {"Apache-2.0 WITH LLVM-exception"}, |
| 29 | + repo = "https://github.com/mcpplibs/libcxx", |
| 30 | + type = "package", |
| 31 | + |
| 32 | + xpm = { |
| 33 | + linux = { |
| 34 | + ["22.1.8.1"] = { |
| 35 | + url = { |
| 36 | + GLOBAL = "https://github.com/mcpplibs/libcxx/archive/refs/tags/22.1.8.1.tar.gz", |
| 37 | + CN = "https://gitcode.com/mcpp-res/libcxx/releases/download/22.1.8.1/libcxx-22.1.8.1.tar.gz", |
| 38 | + }, |
| 39 | + sha256 = "829f9cc00d21262b24244ddbb195aed632941f68eaf51c9c7bae835e8e149f0e", |
| 40 | + }, |
| 41 | + }, |
| 42 | + macosx = { |
| 43 | + ["22.1.8.1"] = { |
| 44 | + url = { |
| 45 | + GLOBAL = "https://github.com/mcpplibs/libcxx/archive/refs/tags/22.1.8.1.tar.gz", |
| 46 | + CN = "https://gitcode.com/mcpp-res/libcxx/releases/download/22.1.8.1/libcxx-22.1.8.1.tar.gz", |
| 47 | + }, |
| 48 | + sha256 = "829f9cc00d21262b24244ddbb195aed632941f68eaf51c9c7bae835e8e149f0e", |
| 49 | + }, |
| 50 | + }, |
| 51 | + windows = { |
| 52 | + ["22.1.8.1"] = { |
| 53 | + url = { |
| 54 | + GLOBAL = "https://github.com/mcpplibs/libcxx/archive/refs/tags/22.1.8.1.tar.gz", |
| 55 | + CN = "https://gitcode.com/mcpp-res/libcxx/releases/download/22.1.8.1/libcxx-22.1.8.1.tar.gz", |
| 56 | + }, |
| 57 | + sha256 = "829f9cc00d21262b24244ddbb195aed632941f68eaf51c9c7bae835e8e149f0e", |
| 58 | + }, |
| 59 | + }, |
| 60 | + }, |
| 61 | + |
| 62 | + -- The package's own manifest, inside the tarball's wrap directory. |
| 63 | + mcpp = "*/mcpp.toml", |
| 64 | +} |
0 commit comments