mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 00:14:32 -08:00
This is the first of two rather big changes to clean up includes throughout the project. In this commit, the implicit semi-dependency on libc that bonnibel adds to every module is removed. Previously, I was sloppy with includes of libc headers and include directory order. Now, the freestanding headers from libc are split out into libc_free, and an implicit real dependency is added onto this module, unless `no_libc` is set to `True`. The full libc needs to be explicitly specified as a dependency to be used. Several things needed to change in order to do this: - Many places use `memset` or `memcpy` that cannot depend on libc. The kernel has basic implementations of them itself for this reason. Now those functions are moved into the lower-level `j6/memutils.h`, and libc merely references them. Other modules are now free to reference those functions from libj6 instead. - The kernel's `assert.h` was renamed kassert.h (matching its `kassert` function) so that the new `util/assert.h` can use `__has_include` to detect it and make sure the `assert` macro is usable in libutil code. - Several implementation header files under `__libj6/` also moved under the new libc_free. - A new `include_phase` property has been added to modules for Bonnibel, which can be "normal" (default) or "late" which uses `-idirafter` instead of `-I` for includes. - Since `<utility>` and `<new>` are not freestanding, implementations of `remove_reference`, `forward`, `move`, and `swap` were added to the `util` namespace to replace those from `std`, and `util/new.h` was added to declare `operator new` and `operator delete`.
58 lines
959 B
YAML
58 lines
959 B
YAML
---
|
|
extends: base
|
|
|
|
variables:
|
|
asflags: [ "-I${source_root}/src/kernel/" ]
|
|
|
|
ccflags: [
|
|
"--target=x86_64-jsix-elf",
|
|
"-fno-stack-protector",
|
|
|
|
"-I${source_root}/external",
|
|
|
|
"-nostdinc",
|
|
"-nostdlib",
|
|
"-ffreestanding",
|
|
"-nodefaultlibs",
|
|
"-fno-builtin",
|
|
"-fno-plt",
|
|
|
|
"-mno-sse",
|
|
"-fno-omit-frame-pointer",
|
|
"-mno-red-zone",
|
|
"-mcmodel=kernel",
|
|
"-fvisibility=hidden",
|
|
"-fvisibility-inlines-hidden",
|
|
|
|
"-g3",
|
|
"-ggdb",
|
|
|
|
"-D__ELF__",
|
|
"-D__jsix__",
|
|
"-D__j6kernel",
|
|
"-U__linux",
|
|
"-U__linux__",
|
|
"-DPRINTF_ALIAS_STANDARD_FUNCTION_NAMES=1",
|
|
"-DPRINTF_INCLUDE_CONFIG_H=1",
|
|
|
|
"--sysroot='${source_root}/sysroot'" ]
|
|
|
|
|
|
cflags: [ '-nostdinc' ]
|
|
|
|
cxxflags: [
|
|
"-fno-exceptions",
|
|
"-fno-rtti",
|
|
"-nostdinc",
|
|
]
|
|
|
|
ldflags: [
|
|
"-g",
|
|
"-m", "elf_x86_64",
|
|
"-nostdlib",
|
|
"-Bstatic",
|
|
"--no-eh-frame-hdr",
|
|
"-z", "norelro",
|
|
"-z", "separate-code" ]
|
|
|