Merge branch 'xclaesse/glib-meson-cross-doc'

Closes #1363

See merge request GNOME/glib!232
This commit is contained in:
Philip Withnall 2018-08-07 16:53:08 +01:00
commit bc0d624245

View File

@ -2,7 +2,7 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]> ]>
<refentry id="glib-cross-compiling" revision="8 Apr 2003"> <refentry id="glib-cross-compiling" revision="7 Aug 2018">
<refmeta> <refmeta>
<refentrytitle>Cross-compiling the GLib package</refentrytitle> <refentrytitle>Cross-compiling the GLib package</refentrytitle>
<manvolnum>3</manvolnum> <manvolnum>3</manvolnum>
@ -28,178 +28,115 @@ How to cross-compile GLib
<para> <para>
These notes cover things specific to cross-compiling GLib; These notes cover things specific to cross-compiling GLib;
for general information about cross-compilation, see the for general information about cross-compilation, see the
<application>autoconf</application> info pages. <ulink url="http://mesonbuild.com/Cross-compilation.html">meson</ulink>
info pages.
</para> </para>
<para> <para>
GLib tries to detect as much information as possible about GLib tries to detect as much information as possible about
the target system by compiling and linking programs without the target system by compiling and linking programs without
actually running anything; however, some information GLib actually running anything; however, some information GLib
needs is not available this way. This information needs needs is not available this way. This information needs
to be provided to the configure script via a "cache file" to be provided to meson via a cross file.
or by setting the cache variables in your environment.
</para> </para>
<para> <para>
As an example of using a cache file, to cross compile for As an example of using a cross file, to cross compile for
the "MingW32" Win32 runtime environment on a Linux system, the MingW32 Win64 runtime environment on a Linux system,
create a file 'win32.cache' with the following contents: create a file <filename>cross_file.txt</filename> with the following
contents:
</para> </para>
<programlisting> <programlisting>
glib_cv_long_long_format=I64 [host_machine]
glib_cv_stack_grows=no 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'
</programlisting> </programlisting>
<para> <para>
Then execute the following commands: Then execute the following commands:
</para> </para>
<programlisting> <programlisting>
PATH=/path/to/mingw32-compiler/bin:$PATH meson --cross_file cross_file.txt builddir
chmod a-w win32.cache # prevent configure from changing it
./configure --cache-file=win32.cache --host=mingw32
</programlisting> </programlisting>
<para> <para>
The complete list of cache file variables follows. Most The complete list of cross properties follows. Most
of these won't need to be set in most cases. of these won't need to be set in most cases.
</para> </para>
</refsect1> </refsect1>
<refsect1 id="cache-file-variables"> <refsect1 id="cross-properties">
<title>Cache file variables</title> <title>Cross properties</title>
<formalpara> <formalpara>
<title>glib_cv_long_long_format=[ll/q/I64]</title> <title>have_[function]</title>
<para> <para>
Format used by <function>printf()</function> and When meson checks if a function is supported, the test can be
<function>scanf()</function> for 64 bit integers. "ll" is overridden by setting the
the C99 standard, and what is used by the 'trio' library <literal>have_<replaceable>function</replaceable></literal> property
that GLib builds if your <function>printf()</function> is to <constant>true</constant> or <constant>false</constant>.
insufficiently capable. For example <programlisting>Checking for function "alloca" : YES</programlisting>
Doesn't need to be set if you are compiling using trio. can be overridden by setting <programlisting>have_alloca = false</programlisting>
</para> </para>
</formalpara> </formalpara>
<formalpara> <formalpara>
<title>glib_cv_stack_grows=[yes/no]</title> <title>growing_stack=[true/false]</title>
<para> <para>
Whether the stack grows up or down. Most places will want "no", Whether the stack grows up or down. Most places will want
A few architectures, such as PA-RISC need "yes". <constant>false</constant>.
A few architectures, such as PA-RISC need <constant>true</constant>.
</para> </para>
</formalpara> </formalpara>
<formalpara> <formalpara>
<title>glib_cv_working_bcopy=[yes/no]</title> <title>have_strlcpy=[true/false]</title>
<para>
Whether your <function>bcopy()</function> can handle overlapping
copies. Only needs to be set if you don't have
<function>memmove()</function>. (Very unlikely)
</para>
</formalpara>
<formalpara>
<title>glib_cv_sane_realloc=[yes/no]</title>
<para>
Whether your <function>realloc()</function> conforms to ANSI C
and can handle <literal>NULL</literal> as the first argument.
Defaults to "yes" and probably doesn't need to be set.
</para>
</formalpara>
<formalpara>
<title>glib_cv_have_strlcpy=[yes/no]</title>
<para> <para>
Whether you have <function>strlcpy()</function> that matches Whether you have <function>strlcpy()</function> that matches
OpenBSD. Defaults to "no", which is safe, since GLib uses a OpenBSD. Defaults to <constant>false</constant>, which is safe,
built-in version in that case. since GLib uses a built-in version in that case.
</para> </para>
</formalpara> </formalpara>
<formalpara> <formalpara>
<title>glib_cv_have_qsort_r=[yes/no]</title> <title>va_val_copy=[true/false]</title>
<para>
Whether you have <function>qsort_r()</function> that matches
BSD. Defaults to "no", which is safe, since GLib uses a
built-in version in that case.
</para>
</formalpara>
<formalpara>
<title>glib_cv_va_val_copy=[yes/no]</title>
<para> <para>
Whether <type>va_list</type> can be copied as a pointer. If set Whether <type>va_list</type> can be copied as a pointer. If set
to "no", then <function>memcopy()</function> will be used. Only to <constant>false</constant>, then <function>memcopy()</function>
matters if you don't have <function>va_copy()</function> or will be used. Only matters if you don't have
<function>__va_copy()</function>. (So, doesn't matter for GCC.) <function>va_copy()</function> or <function>__va_copy()</function>.
Defaults to "yes" which is slightly more common than "no". (So, doesn't matter for GCC.)
Defaults to <constant>true</constant> which is slightly more common
than <constant>false</constant>.
</para> </para>
</formalpara> </formalpara>
<formalpara> <formalpara>
<title>glib_cv_rtldglobal_broken=[yes/no]</title> <title>have_c99_vsnprintf=[true/false]</title>
<para>
Whether you have a bug found in OSF/1 v5.0. Defaults to "no".
</para>
</formalpara>
<formalpara>
<title>glib_cv_uscore=[yes/no]</title>
<para>
Whether an underscore needs to be prepended to symbols when
looking them up via <function>dlsym()</function>. Only needs to
be set if your system uses
<function>dlopen()</function>/<function>dlsym()</function>.
</para>
</formalpara>
<formalpara>
<title>ac_cv_func_posix_getpwuid_r=[yes/no]</title>
<para>
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)
</para>
</formalpara>
<formalpara>
<title>ac_cv_func_nonposix_getpwuid_r=[yes/no]</title>
<para>
Whether you have some variant of <function>getpwuid_r()</function>
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
<literal>ac_cv_func_posix_getpwuid_r</literal> is not set. It's
safest to set this to "no".
</para>
</formalpara>
<formalpara>
<title>ac_cv_func_posix_getgrgid_r=[yes/no]</title>
<para>
Whether you have a getgrgid_r function that conforms to
the POSIX spec.
</para>
</formalpara>
<formalpara>
<title>glib_cv_use_pid_surrogate=[yes/no]</title>
<para>
Whether to use a <function>setpriority()</function> 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.
</para>
</formalpara>
<formalpara>
<title>ac_cv_func_printf_unix98=[yes/no]</title>
<para>
Whether your <function>printf()</function> family supports Unix98
style <literal>%N$</literal> positional parameters. Defaults to
"no".
</para>
</formalpara>
<formalpara>
<title>ac_cv_func_vsnprintf_c99=[yes/no]</title>
<para> <para>
Whether you have a <function>vsnprintf()</function> with C99 Whether you have a <function>vsnprintf()</function> with C99
semantics. (C99 semantics means returning the number of bytes semantics. (C99 semantics means returning the number of bytes
that would have been written had the output buffer had enough that would have been written had the output buffer had enough
space.) Defaults to "no". space.) Defaults to <constant>false</constant>.
</para>
</formalpara>
<formalpara>
<title>have_c99_snprintf=[true/false]</title>
<para>
Whether you have a <function>snprintf()</function> 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 <constant>false</constant>.
</para> </para>
</formalpara> </formalpara>