-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathmcpp.toml
More file actions
46 lines (42 loc) · 2.19 KB
/
Copy pathmcpp.toml
File metadata and controls
46 lines (42 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[package]
name = "portable-report"
version = "0.1.0"
description = "One source, four hosted targets, over openkal"
# There is no `[build] target` here, and its absence is what the directory is
# for. The target is given on the command line so that the same file can be
# built four ways without being edited.
[dependencies]
# One line selects three of the five target-side layers. `openkal-llvm-runtime`
# supplies the compiler runtime and the C++ runtime, and depends in turn on
# `openkal-musl` for the C library, which depends on whichever implementation of
# openkal matches the target being built.
openkal-llvm-runtime = "0.1.3"
# AND IT SELECTS THE FOURTH — THE COMPILER — WITHOUT THIS FILE SAYING SO.
#
# There used to be a `[toolchain] default = "llvm@22.1.8"` here, with a comment
# explaining that it named "a compiler, and nothing else". It is gone, and the
# example is more accurate for it: `openkal-llvm-runtime` declares
# `requires = ["mcpp:compiler=llvm"]`, because a C++ runtime is configured for
# one compiler family and records that configuration in the headers it ships.
#
# Since 2026.8.26.2 mcpp reads that and takes it. Measured on a machine whose
# global default is gcc, all four targets:
#
# Resolved llvm@22.1.8 → aarch64-linux-musl → …/xim-x-llvm/22.1.8/bin/clang++
# required by openkal-llvm-runtime@0.1.3
# (`requires = ["mcpp:compiler=llvm"]`), not your gcc@16.1.0
# — this project only
#
# "this project only" is load-bearing. Nothing is written: not
# `~/.mcpp/config.toml`, not this file. A requirement is a property of the
# package that states it, so it decides this build and no other.
#
# A project that wants a different compiler still writes one here, and that
# statement outranks the graph — see docs/03.
# NO BARE-METAL TARGET SECTION, AND ITS ABSENCE IS DELIBERATE.
#
# This program asks about a filesystem and about tasks. An implementation that
# provides neither is absent as a link-time definition — clause 6.1 of the
# openkal specification — so the question itself does not link, which is the
# mechanism rather than a defect. A bare-metal project is a different project,
# and the README says what it writes instead.