<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
]>
<refentry id="glib-cross-compiling" revision="8 Apr 2003">
<refmeta>
<refentrytitle>Cross-compiling the GLib package</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GLib Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>Cross-compiling the GLib Package</refname>
<refpurpose>
How to cross-compile GLib
</refpurpose>
</refnamediv>

    <refsect1 id="cross">
      <title>Building the Library for a different architecture</title>
      <para>
        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. 
      </para>
      <para>
        These notes cover things specific to cross-compiling GLib;
        for general information about cross-compilation, see the
        <application>autoconf</application> info pages.
      </para>
      <para>
        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.
      </para>
      <para>
        As an example of using a cache file, to cross compile for
        the "MingW32" Win32 runtine environment on a Linux system,
        create a file 'win32.cache' with the following contents:
      </para>
      <programlisting> 
glib_cv_long_long_format=I64
glib_cv_stack_grows=no
      </programlisting>
      <para>
        Then execute the following commands:
      </para>
      <programlisting>
PATH=/path/to/mingw32-compiler/bin:$PATH
chmod a-w win32.cache   # prevent configure from changing it
./configure --cache-file=win32.cache --host=mingw32
      </programlisting>
      <para>
        The complete list of cache file variables follows. Most
         of these won't need to be set in most cases.
      </para>
    </refsect1>
    <refsect1 id="cache-file-variables">
      <title>Cache file variables</title>
      <formalpara>
        <title>glib_cv_long_long_format=[ll/q/I64]</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>
           Whether the stack grows up or down. Most places will want "no",
           A few architectures, such as PA-RISC need "yes".
        </para>
      </formalpara>
      <formalpara>
        <title>glib_cv_working_bcopy=[yes/no]</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/np]</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>
            Whether you have <function>strlcpy()</function> that matches 
            OpenBSD. 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>
            Whether <type>va_list</type> can be copied as a pointer. If set 
            to "no", then <function>memcopy()</function> will be used. Only 
            matters if you don't have <function>va_copy()</function> or 
            <function>__va_copy()</function>. (So, doesn't matter for GCC.) 
            Defaults to "yes" which is slightly more common than "no".
	</para>
      </formalpara>
      <formalpara>
         <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>
         <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>
            Whether you have a <function>vsnprintf()</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 "no".
         </para>
      </formalpara>

    </refsect1>    

</refentry>
