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.
The SDK puts it inside the tree the devkit inlines from, so a bare-metal
target ended up with half of picolibc pasted into the header and the
other half missing. It is the consumer's libc to provide.
A static linker searches -L dirs in command-line order, and
pkg-config emits the SDK's libdir before the wrap's, so feeding
its --libs output to a linker would pick the SDK's stale
libfoo.a. The actual frida-core link works because Meson
resolves the wrap as a target dependency, bypassing pkg-config —
but devkit assembly derives its archive list from pkg-config and
so picks up the SDK copy.
Walk up from the devkit output to find the Meson build root,
then partition library_dirs so build-tree dirs come first.
Introduce --dep-symbol-scope={prefixed,original} so consumers can
*enable* the “_frida_” prefix (default) to avoid clashes with their
own copies of third-party libraries, or switch to “original” when
they need unmodified symbol names (e.g. for debugging or when no
conflicts are expected).
Co-authored-by: Ole André Vadla Ravnås <[email protected]>
- 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.