From f0468012179fc59792c459871f056235b1ba6353 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Tue, 7 Aug 2018 10:25:55 -0400 Subject: [PATCH] Meson: Update cross compilation doc (Modified by Philip Withnall to improve formatting on original.) Closes #1363 --- docs/reference/glib/cross.xml | 353 +++++++++++++++++------------------------- 1 file changed, 145 insertions(+), 208 deletions(-) rewrite docs/reference/glib/cross.xml (67%) diff --git a/docs/reference/glib/cross.xml b/docs/reference/glib/cross.xml dissimilarity index 67% index 35d169b7a..c45200437 100644 --- a/docs/reference/glib/cross.xml +++ b/docs/reference/glib/cross.xml @@ -1,208 +1,145 @@ - - - - -Cross-compiling the GLib package -3 -GLib Library - - - -Cross-compiling the GLib Package - -How to cross-compile GLib - - - - - 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 - autoconf info pages. - - - 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 the configure script via a "cache file" - or by setting the cache variables in your environment. - - - As an example of using a cache file, to cross compile for - the "MingW32" Win32 runtime environment on a Linux system, - create a file 'win32.cache' with the following contents: - - -glib_cv_long_long_format=I64 -glib_cv_stack_grows=no - - - Then execute the following commands: - - -PATH=/path/to/mingw32-compiler/bin:$PATH -chmod a-w win32.cache # prevent configure from changing it -./configure --cache-file=win32.cache --host=mingw32 - - - The complete list of cache file variables follows. Most - of these won't need to be set in most cases. - - - - Cache file variables - - glib_cv_long_long_format=[ll/q/I64] - - - Format used by printf() and - scanf() for 64 bit integers. "ll" is - the C99 standard, and what is used by the 'trio' library - that GLib builds if your printf() is - insufficiently capable. - Doesn't need to be set if you are compiling using trio. - - - - glib_cv_stack_grows=[yes/no] - - - Whether the stack grows up or down. Most places will want "no", - A few architectures, such as PA-RISC need "yes". - - - - glib_cv_working_bcopy=[yes/no] - - - Whether your bcopy() can handle overlapping - copies. Only needs to be set if you don't have - memmove(). (Very unlikely) - - - - glib_cv_sane_realloc=[yes/no] - - - Whether your realloc() conforms to ANSI C - and can handle NULL as the first argument. - Defaults to "yes" and probably doesn't need to be set. - - - - glib_cv_have_strlcpy=[yes/no] - - - Whether you have strlcpy() that matches - OpenBSD. Defaults to "no", which is safe, since GLib uses a - built-in version in that case. - - - - glib_cv_have_qsort_r=[yes/no] - - - Whether you have qsort_r() that matches - BSD. Defaults to "no", which is safe, since GLib uses a - built-in version in that case. - - - - glib_cv_va_val_copy=[yes/no] - - - Whether va_list can be copied as a pointer. If set - to "no", then memcopy() will be used. Only - matters if you don't have va_copy() or - __va_copy(). (So, doesn't matter for GCC.) - Defaults to "yes" which is slightly more common than "no". - - - - glib_cv_rtldglobal_broken=[yes/no] - - - Whether you have a bug found in OSF/1 v5.0. Defaults to "no". - - - - glib_cv_uscore=[yes/no] - - - Whether an underscore needs to be prepended to symbols when - looking them up via dlsym(). Only needs to - be set if your system uses - dlopen()/dlsym(). - - - - ac_cv_func_posix_getpwuid_r=[yes/no] - - - Whether you have a getpwuid_r function (in your C library, - not your thread library) that conforms to the POSIX spec. - (Takes a 'struct passwd **' as the final argument) - - - - ac_cv_func_nonposix_getpwuid_r=[yes/no] - - - Whether you have some variant of getpwuid_r() - that doesn't conform to to the POSIX spec, but GLib might be able - to use (or might segfault.) Only needs to be set if - ac_cv_func_posix_getpwuid_r is not set. It's - safest to set this to "no". - - - - ac_cv_func_posix_getgrgid_r=[yes/no] - - - Whether you have a getgrgid_r function that conforms to - the POSIX spec. - - - - glib_cv_use_pid_surrogate=[yes/no] - - - Whether to use a setpriority() on the PID of - the thread as a method for setting the priority of threads. This - only needs to be set when using POSIX threads. - - - - ac_cv_func_printf_unix98=[yes/no] - - - Whether your printf() family supports Unix98 - style %N$ positional parameters. Defaults to - "no". - - - - ac_cv_func_vsnprintf_c99=[yes/no] - - - 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 to "no". - - - - - - + + + + +Cross-compiling the GLib package +3 +GLib Library + + + +Cross-compiling the GLib Package + +How to cross-compile GLib + + + + + 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 + info pages. + + + 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' +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 --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_function property + to true or false. + For example Checking for function "alloca" : YES + can be overridden by setting have_alloca = false + + + + growing_stack=[true/false] + + + Whether the stack grows up or down. Most places will want + false. + A few architectures, such as PA-RISC need true. + + + + have_strlcpy=[true/false] + + + Whether you have strlcpy() that matches + OpenBSD. Defaults to false, which is safe, + since GLib uses a built-in version in that case. + + + + va_val_copy=[true/false] + + + Whether va_list can be copied as a pointer. If set + to false, then memcopy() + will be used. Only matters if you don't have + va_copy() or __va_copy(). + (So, doesn't matter for GCC.) + Defaults to true which is slightly more common + than false. + + + + 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 to false. + + + + 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 to false. + + + + + + -- 2.11.4.GIT