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`.
41 lines
1.5 KiB
YAML
41 lines
1.5 KiB
YAML
---
|
|
variables:
|
|
cc: "${source_root}/sysroot/bin/clang"
|
|
cxx: "${source_root}/sysroot/bin/clang++"
|
|
ld: "${source_root}/sysroot/bin/ld.lld"
|
|
ar: ar
|
|
nasm: nasm
|
|
objcopy: objcopy
|
|
|
|
ccflags: [
|
|
"-I${source_root}/src/include",
|
|
"-fcolor-diagnostics",
|
|
"-U__STDCPP_THREADS__",
|
|
"-D_LIBCPP_HAS_NO_THREADS",
|
|
"-D__jsix_config=${build_config}",
|
|
"-D__jsix_config_${build_config}",
|
|
"-DVERSION_MAJOR=${version_major}",
|
|
"-DVERSION_MINOR=${version_minor}",
|
|
"-DVERSION_PATCH=${version_patch}",
|
|
"-DVERSION_GITSHA=0x${version_sha}",
|
|
'-DGIT_VERSION=\"${version_major}.${version_minor}.${version_patch}+${version_sha}\"',
|
|
'-DGIT_VERSION_WIDE=L\"${version_major}.${version_minor}.${version_patch}+${version_sha}\"',
|
|
|
|
"-Wformat=2", "-Winit-self", "-Winline", "-Wmissing-format-attribute",
|
|
"-Wmissing-include-dirs", "-Wswitch", "-Wundef", "-Wdisabled-optimization",
|
|
"-Wpointer-arith", "-Wno-attributes", "-Wno-sign-compare", "-Wno-multichar",
|
|
"-Wno-div-by-zero", "-Wno-endif-labels", "-Wno-pragmas", "-Wno-format-extra-args",
|
|
"-Wno-unused-result", "-Wno-deprecated-declarations", "-Wno-unused-function",
|
|
"-Wno-address-of-packed-member", "-Wno-invalid-offsetof", "-Wno-format-nonliteral",
|
|
"-Werror" ]
|
|
|
|
asflags: [
|
|
"-DVERSION_MAJOR=${version_major}",
|
|
"-DVERSION_MINOR=${version_minor}",
|
|
"-DVERSION_PATCH=${version_patch}",
|
|
"-DVERSION_GITSHA=0x${version_sha}",
|
|
"-I${source_root}/src/include" ]
|
|
|
|
cflags: [ "-std=c11" ]
|
|
cxxflags: [ "-std=c++17" ]
|