Commit bc0d6242 authored by Philip Withnall's avatar Philip Withnall

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

Closes #1363

See merge request !232
parents 0498b434 f0468012
Pipeline #23825 passed with stages
in 8 minutes and 46 seconds
...@@ -2,7 +2,7 @@ ...@@ -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,181 +28,118 @@ How to cross-compile GLib ...@@ -28,181 +28,118 @@ 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>
Format used by <function>printf()</function> and
<function>scanf()</function> for 64 bit integers. "ll" is
the C99 standard, and what is used by the 'trio' library
that GLib builds if your <function>printf()</function> is
insufficiently capable.
Doesn't need to be set if you are compiling using trio.
</para>
</formalpara>
<formalpara>
<title>glib_cv_stack_grows=[yes/no]</title>
<para> <para>
Whether the stack grows up or down. Most places will want "no", When meson checks if a function is supported, the test can be
A few architectures, such as PA-RISC need "yes". overridden by setting the
<literal>have_<replaceable>function</replaceable></literal> property
to <constant>true</constant> or <constant>false</constant>.
For example <programlisting>Checking for function "alloca" : YES</programlisting>
can be overridden by setting <programlisting>have_alloca = false</programlisting>
</para> </para>
</formalpara> </formalpara>
<formalpara> <formalpara>
<title>glib_cv_working_bcopy=[yes/no]</title> <title>growing_stack=[true/false]</title>
<para> <para>
Whether your <function>bcopy()</function> can handle overlapping Whether the stack grows up or down. Most places will want
copies. Only needs to be set if you don't have <constant>false</constant>.
<function>memmove()</function>. (Very unlikely) A few architectures, such as PA-RISC need <constant>true</constant>.
</para> </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>
<formalpara> <formalpara>
<title>glib_cv_have_strlcpy=[yes/no]</title> <title>have_strlcpy=[true/false]</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.)
</para> Defaults to <constant>true</constant> which is slightly more common
</formalpara> than <constant>false</constant>.
<formalpara> </para>
<title>glib_cv_rtldglobal_broken=[yes/no]</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>
<formalpara> <formalpara>
<title>ac_cv_func_printf_unix98=[yes/no]</title> <title>have_c99_vsnprintf=[true/false]</title>
<para> <para>
Whether your <function>printf()</function> family supports Unix98 Whether you have a <function>vsnprintf()</function> with C99
style <literal>%N$</literal> positional parameters. Defaults to semantics. (C99 semantics means returning the number of bytes
"no". that would have been written had the output buffer had enough
space.) Defaults to <constant>false</constant>.
</para> </para>
</formalpara> </formalpara>
<formalpara> <formalpara>
<title>ac_cv_func_vsnprintf_c99=[yes/no]</title> <title>have_c99_snprintf=[true/false]</title>
<para> <para>
Whether you have a <function>vsnprintf()</function> with C99 Whether you have a <function>snprintf()</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> </para>
</formalpara> </formalpara>
</refsect1> </refsect1>
</refentry> </refentry>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment