Repository navigation
Expand file tree
/
Copy pathmcpp.toml
More file actions
63 lines (58 loc) · 2.45 KB
/
Copy pathmcpp.toml
File metadata and controls
63 lines (58 loc) · 2.45 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
[package]
namespace = "mcpplibs"
name = "openkal-posix"
version = "0.1.1"
description = "An implementation of openkal written above a POSIX C library: the system's own C library beneath, openkal's interfaces above, for the systems that have no implementation of their own."
license = "Apache-2.0"
authors = ["mcpplibs"]
repo = "https://github.com/mcpplibs/openkal-posix"
# The layer this package supplies.
provides = ["mcpp:kernel-abi=openkal"]
# AND THE LAYER IT IS WRITTEN ABOVE. This implementation calls the C library
# --- open, fork, pthread_create --- so it can only be placed above one, and
# never beneath a C library that is itself written above openkal (openkal-musl):
# that C library's functions would call this implementation, and this
# implementation would call them back (`kal_time_wall' → `clock_gettime' →
# `kal_time_wall'). A build tool that checks that the requirements of the
# layers form no circle (mcpp 2026.11.10.1, `layer-cycle') refuses that graph
# before anything is compiled; an older engine reads the requirement and does
# not check it.
requires = ["mcpp:c-abi"]
# WHICH INTERFACES THIS IMPLEMENTATION PROVIDES, AND NO OTHER. An interface it
# does not provide is absent: it is not in this list, not in kal_interfaces(),
# and none of its names is defined (SPEC.md clause 6.1). A program that calls
# one fails at link naming it, and a loader that binds by this list leaves it
# unbound. The conformance suite's three-way check compares this list with
# kal_interfaces() and with the names the artefact exports.
#
# Absent: openkal.net and openkal.datagram (not yet written over sockets),
# openkal.prof and openkal.debug (no portable source of samples or symbols).
[kernel-abi]
provides-interfaces = [
"openkal.abort",
"openkal.stream",
"openkal.memory",
"openkal.env",
"openkal.time",
"openkal.random",
"openkal.fs",
"openkal.process",
"openkal.task",
"openkal.exec",
"openkal.terminal",
"openkal.timeout",
"openkal.map",
"openkal.region",
"openkal.space",
]
[dependencies]
# Every patch release of the specification's minor version (openkal clause 8).
openkal = "^0.25.0"
[build]
sources = ["src/*.cpp"]
# No exception propagates out of a C entry point, and nothing here is
# identified at run time. The flags are attached to this package's sources;
# the conformance tests are consumers.
flags = [
{ glob = "src/**", cxxflags = ["-fno-exceptions", "-fno-rtti"] },
]