Compile a machine whose config is kernel with the kernel's ABI,
against no system headers, and against the prefix being filled:
picolibc and the compiler-rt builtins are packages here, as they
are for a machine with no operating system at all.
Say the system is none, which is what a Darwin kernel is to
anything built here, and leave out the packages that belong to an
operating system.
Make a link work, since a build system asks its questions by
linking one: no dynamic linker, and the entry point named.
Read the config as a set of tags, thus a bare flavor says in its name
whether its code is position-independent: softfloat becomes
softfloat_nopic, and softfloat_msabi becomes softfloat_pic_msabi. This
also gives x86 a position-independent flavor, which it had no way to
name before.
A bare target is soft-float in each case now, thus remove the newlib
path that the other targets took.
The one we had suits a Linux module: System V, and not position
independent — the module loader resolves no GOT relocation, and the
kernel code model expects the top 2GB. A Windows kernel follows
another convention, and the agent's text is mapped a second time
into each instrumented process, shared, so that flavor is position
independent instead.
Soft float is what kernel mode means rather than what either
convention says, so both carry it. The convention is a property of
the machine rather than the toolchain, so it rides in the machine
file for whoever generates or inspects the code.
An arm64 build machine only runs x86/x86_64 under emulation, so
adapting it to the host collapsed the compat build into an emulated
native build using the x64 toolchain. Keep it a real cross build so
build-time tools stay native arm64.
- Add modules to assist with autoconf-style CLI wrappers.
- Implement deps.sync() for non-Windows.
- Improve devkit.py to support using pkg-config on Windows.