Red Bear OS is a full fork. All sources must be available from git clone with zero network access. Removed gitignore rules that excluded fetched source trees under recipes/*/source/, local/recipes/kde/*/source/, local/recipes/qt/*/source/, and vendor source trees. Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded. 127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt frameworks, mesa, wayland, DRM drivers, and every other recipe source.
3.0 KiB
Title: Cross-compiling the GLib package
Cross-compiling the GLib Package
Building the Library for a different architecture
Cross-compilation is the process of compiling a program or library on a different architecture or operating system then it will be run upon. GLib is slightly more difficult to cross-compile than many packages because much of GLib is about hiding differences between different systems.
These notes cover things specific to cross-compiling GLib; for general information about cross-compilation, see the Meson documentation.
GLib tries to detect as much information as possible about the target system by compiling and linking programs without actually running anything; however, some information GLib needs is not available this way. This information needs to be provided to meson via a ‘cross file’.
As an example of using a cross file, to cross compile for the ‘MingW32’
Win64 runtime environment on a Linux system, create a file cross_file.txt
with the following contents:
[host_machine]
system = 'windows'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'
[properties]
c_args = []
c_link_args = []
[binaries]
c = 'x86_64-w64-mingw32-gcc'
cpp = 'x86_64-w64-mingw32-g++'
ar = 'x86_64-w64-mingw32-ar'
ld = 'x86_64-w64-mingw32-ld'
objcopy = 'x86_64-w64-mingw32-objcopy'
strip = 'x86_64-w64-mingw32-strip'
pkgconfig = 'x86_64-w64-mingw32-pkg-config'
windres = 'x86_64-w64-mingw32-windres'
Then execute the following commands:
meson setup --cross-file cross_file.txt builddir
The complete list of cross properties follows. Most of these won't need to be set in most cases.
Cross properties
have_[function]- When meson checks if a function is supported, the test can be overridden by
setting the
have_functionproperty totrueorfalse. For example:Checking for function "fsync" : YES
can be overridden by setting
have_fsync = false
growing_stack=[true/false]- Whether the stack grows up or down. Most places will want
false. A few architectures, such as PA-RISC needtrue. have_strlcpy=[true/false]- Whether you have
strlcpy()that matches OpenBSD. Defaults tofalse, which is safe, since GLib uses a built-in version in that case. va_val_copy=[true/false]- Whether
va_listcan be copied as a pointer. If set tofalse, thenmemcopy()will be used. Only matters if you don't haveva_copy()or__va_copy(). (So, doesn't matter for GCC.) Defaults totruewhich is slightly more common thanfalse. have_c99_vsnprintf=[true/false]- Whether you have a
vsnprintf()with C99 semantics. (C99 semantics means returning the number of bytes that would have been written had the output buffer had enough space.) Defaults tofalse. have_c99_snprintf=[true/false]- Whether you have a
snprintf()with C99 semantics. (C99 semantics means returning the number of bytes that would have been written had the output buffer had enough space.) Defaults tofalse.