Merge branch 'test-ip_mreq_source-android-only' into 'master'
[glib.git] / docs / reference / glib / cross.xml
blob35d169b7a43a02bd0b3dec0cb1ad5911ccce47d0
1 <?xml version="1.0"?>
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3                "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 ]>
5 <refentry id="glib-cross-compiling" revision="8 Apr 2003">
6 <refmeta>
7 <refentrytitle>Cross-compiling the GLib package</refentrytitle>
8 <manvolnum>3</manvolnum>
9 <refmiscinfo>GLib Library</refmiscinfo>
10 </refmeta>
12 <refnamediv>
13 <refname>Cross-compiling the GLib Package</refname>
14 <refpurpose>
15 How to cross-compile GLib
16 </refpurpose>
17 </refnamediv>
19     <refsect1 id="cross">
20       <title>Building the Library for a different architecture</title>
21       <para>
22         Cross-compilation is the process of compiling a program or
23         library on a different architecture or operating system then
24         it will be run upon. GLib is slightly more difficult to 
25         cross-compile than many packages because much of GLib is
26         about hiding differences between different systems. 
27       </para>
28       <para>
29         These notes cover things specific to cross-compiling GLib;
30         for general information about cross-compilation, see the
31         <application>autoconf</application> info pages.
32       </para>
33       <para>
34         GLib tries to detect as much information as possible about
35         the target system by compiling and linking programs without
36         actually running anything; however, some information GLib
37         needs is not available this way. This information needs
38         to be provided to the configure script via a "cache file"
39         or by setting the cache variables in your environment.
40       </para>
41       <para>
42         As an example of using a cache file, to cross compile for
43         the "MingW32" Win32 runtime environment on a Linux system,
44         create a file 'win32.cache' with the following contents:
45       </para>
46       <programlisting> 
47 glib_cv_long_long_format=I64
48 glib_cv_stack_grows=no
49       </programlisting>
50       <para>
51         Then execute the following commands:
52       </para>
53       <programlisting>
54 PATH=/path/to/mingw32-compiler/bin:$PATH
55 chmod a-w win32.cache   # prevent configure from changing it
56 ./configure --cache-file=win32.cache --host=mingw32
57       </programlisting>
58       <para>
59         The complete list of cache file variables follows. Most
60          of these won't need to be set in most cases.
61       </para>
62     </refsect1>
63     <refsect1 id="cache-file-variables">
64       <title>Cache file variables</title>
65       <formalpara>
66         <title>glib_cv_long_long_format=[ll/q/I64]</title>
67         
68         <para>
69            Format used by <function>printf()</function> and 
70            <function>scanf()</function> for 64 bit integers. "ll" is 
71            the C99 standard, and what is used by the 'trio' library
72            that GLib builds if your <function>printf()</function> is 
73            insufficiently capable.
74            Doesn't need to be set if you are compiling using trio.
75         </para>
76       </formalpara>
77       <formalpara>
78         <title>glib_cv_stack_grows=[yes/no]</title>
80         <para>
81            Whether the stack grows up or down. Most places will want "no",
82            A few architectures, such as PA-RISC need "yes".
83         </para>
84       </formalpara>
85       <formalpara>
86         <title>glib_cv_working_bcopy=[yes/no]</title>
88         <para>
89            Whether your <function>bcopy()</function> can handle overlapping 
90            copies. Only needs to be set if you don't have 
91            <function>memmove()</function>. (Very unlikely)
92         </para>
93       </formalpara>
94       <formalpara>
95          <title>glib_cv_sane_realloc=[yes/no]</title>
97          <para>  
98             Whether your <function>realloc()</function> conforms to ANSI C 
99             and can handle <literal>NULL</literal> as the first argument. 
100             Defaults to "yes" and probably doesn't need to be set.
101         </para>
102       </formalpara>
103       <formalpara>
104          <title>glib_cv_have_strlcpy=[yes/no]</title>
106          <para>
107             Whether you have <function>strlcpy()</function> that matches 
108             OpenBSD. Defaults to "no", which is safe, since GLib uses a 
109             built-in version in that case.
110         </para>
111       </formalpara>
112       <formalpara>
113          <title>glib_cv_have_qsort_r=[yes/no]</title>
115          <para>
116            Whether you have <function>qsort_r()</function> that matches
117            BSD. Defaults to "no", which is safe, since GLib uses a
118            built-in version in that case.
119          </para>
120       </formalpara>
121       <formalpara>
122          <title>glib_cv_va_val_copy=[yes/no]</title>
123    
124          <para>
125             Whether <type>va_list</type> can be copied as a pointer. If set 
126             to "no", then <function>memcopy()</function> will be used. Only 
127             matters if you don't have <function>va_copy()</function> or 
128             <function>__va_copy()</function>. (So, doesn't matter for GCC.) 
129             Defaults to "yes" which is slightly more common than "no".
130         </para>
131       </formalpara>
132       <formalpara>
133          <title>glib_cv_rtldglobal_broken=[yes/no]</title>
135          <para>
136             Whether you have a bug found in OSF/1 v5.0. Defaults to "no".
137          </para>
138       </formalpara>
139       <formalpara>
140          <title>glib_cv_uscore=[yes/no]</title>
142          <para>
143             Whether an underscore needs to be prepended to symbols when
144             looking them up via <function>dlsym()</function>. Only needs to 
145             be set if your system uses
146             <function>dlopen()</function>/<function>dlsym()</function>.
147          </para>
148       </formalpara>
149       <formalpara>
150          <title>ac_cv_func_posix_getpwuid_r=[yes/no]</title>
152          <para>
153             Whether you have a getpwuid_r function (in your C library,
154             not your thread library) that conforms to the POSIX spec.
155             (Takes a 'struct passwd **' as the final argument)
156          </para>
157       </formalpara>
158       <formalpara>
159          <title>ac_cv_func_nonposix_getpwuid_r=[yes/no]</title>
161          <para>
162             Whether you have some variant of <function>getpwuid_r()</function>
163             that doesn't conform to to the POSIX spec, but GLib might be able
164             to use (or might segfault.) Only needs to be set if 
165             <literal>ac_cv_func_posix_getpwuid_r</literal> is not set. It's 
166             safest to set this to "no".
167          </para>
168       </formalpara>
169       <formalpara>
170          <title>ac_cv_func_posix_getgrgid_r=[yes/no]</title>
172          <para>
173             Whether you have a getgrgid_r function that conforms to
174             the POSIX spec.
175          </para>
176       </formalpara>
177       <formalpara>
178          <title>glib_cv_use_pid_surrogate=[yes/no]</title>
180          <para>
181             Whether to use a <function>setpriority()</function> on the PID of 
182             the thread as a method for setting the priority of threads. This 
183             only needs to be set when using POSIX threads.
184          </para>
185       </formalpara>
186       <formalpara>
187          <title>ac_cv_func_printf_unix98=[yes/no]</title>
189          <para>
190            Whether your <function>printf()</function> family supports Unix98 
191            style <literal>%N$</literal> positional parameters. Defaults to
192         "no".
193          </para>
194       </formalpara>
195       <formalpara>
196          <title>ac_cv_func_vsnprintf_c99=[yes/no]</title>
198          <para>
199             Whether you have a <function>vsnprintf()</function> with C99 
200             semantics. (C99 semantics means returning the number of bytes 
201             that would have been written had the output buffer had enough 
202             space.) Defaults to "no".
203          </para>
204       </formalpara>
206     </refsect1>    
208 </refentry>