-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.limine.toml
61 lines (52 loc) · 2.32 KB
/
config.limine.toml
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
theseus-root = "../theseus"
# arch = "aarch64"
[add-bootloader]
bootloader = "limine"
[run-qemu]
# extra-args = [
# "-machine", "raspi3b",
# "-no-reboot",
# "-no-shutdown",
# "-s",
# "-serial", "mon:stdio",
# "-serial", "mon:pty",
# "-net", "none",
# "-drive", "file={output-iso},if=sd",
# ]
[build-cells]
toolchain = "nightly-2022-07-25"
# manifest-path = "{theseus-root}/kernel/nano_core/Cargo.toml"
cargo-flags = [
"--workspace",
"--features", "extract_boot_modules",
"-Z", "unstable-options",
"-Z", "build-std=core,alloc",
"-Z", "build-std-features=compiler-builtins-mem",
]
rust-flags = [
# Tell rustc to output the native object file for each crate,
# which avoids always having to unpack the crate's .rlib archive to extract the object files within.
# Note that we still do have to extract and partially link object files from .rlib archives for crates that
# use a build script to generate additional object files during build time.
"--emit=obj",
# enable debug info even for release builds
"-C debuginfo=2",
# using a large code model
"-C code-model=large",
# use static relocation model to avoid GOT-based relocation types and .got/.got.plt sections
"-C relocation-model=static",
# promote unused must-use types (like Result) to an error
"-D unused-must-use",
# As of Dec 31, 2018, this is needed to make loadable mode work, because otherwise,
# some core generic function implementations won't exist in the object files.
# Details here: https://github.com/rust-lang/rust/pull/57268
# Relevant rusct commit: https://github.com/jethrogb/rust/commit/71990226564e9fe327bc9ea969f9d25e8c6b58ed#diff-8ad3595966bf31a87e30e1c585628363R8
# Either "trampolines" or "disabled" works here, not sure how they're different
"-Z merge-functions=disabled",
# This prevents monomorphized instances of generic functions from being shared across crates.
# It vastly simplifies the procedure of finding missing symbols in the crate loader,
# because we know that instances of generic functions will not be found in another crate
# besides the current crate or the crate that defines the function.
# As far as I can tell, this does not have a significant impact on object code size or performance.
"-Z share-generics=no",
]