Imported Upstream version 1.49.1
[platform/upstream/gobject-introspection.git] / docs / reference / html / gi-building.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>Compiling the GObject Introspection package: GObject Introspection Reference Manual</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="index.html" title="GObject Introspection Reference Manual">
8 <link rel="up" href="overview.html" title="Part I. GObject-Introspection Overview">
9 <link rel="prev" href="overview.html" title="Part I. GObject-Introspection Overview">
10 <link rel="next" href="gi-programming.html" title="Writing introspected libraries">
11 <meta name="generator" content="GTK-Doc V1.25.1 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 </head>
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
16 <td width="100%" align="left" class="shortcuts"></td>
17 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
18 <td><a accesskey="u" href="overview.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
19 <td><a accesskey="p" href="overview.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
20 <td><a accesskey="n" href="gi-programming.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
21 </tr></table>
22 <div class="refentry">
23 <a name="gi-building"></a><div class="titlepage"></div>
24 <div class="refnamediv"><table width="100%"><tr>
25 <td valign="top">
26 <h2><span class="refentrytitle">Compiling the GObject Introspection package</span></h2>
27 <p>Compiling the GObject Introspection Package — How to compile GObject Introspection itself</p>
28 </td>
29 <td class="gallery_image" valign="top" align="right"></td>
30 </tr></table></div>
31 <div class="refsect1">
32 <a name="gi-buildtools"></a><h2>Building on UNIX</h2>
33 <p>
34       On UNIX, GObject Introspection uses the standard GNU build system,
35       using <span class="application">autoconf</span> for package
36       configuration and resolving portability issues,
37       <span class="application">automake</span> for building makefiles
38       that comply with the GNU Coding Standards, and
39       <span class="application">libtool</span> for building shared
40       libraries on multiple platforms. The normal sequence for
41       compiling and installing the GObject Introspection package is thus:
42
43       </p>
44 <div class="literallayout"><p><br>
45         <strong class="userinput"><code>./configure</code></strong><br>
46         <strong class="userinput"><code>make</code></strong><br>
47         <strong class="userinput"><code>make install</code></strong><br>
48       </p></div>
49 <p>
50     </p>
51 <p>
52       The standard options provided by <span class="application">GNU
53       autoconf</span> may be passed to the
54       <span class="command"><strong>configure</strong></span> script.  Please see the
55       <span class="application">autoconf</span> documentation or run
56       <span class="command"><strong>./configure --help</strong></span> for information about
57       the standard options.
58     </p>
59 </div>
60 <div class="refsect1">
61 <a name="dependencies"></a><h2>Dependencies</h2>
62 <p>
63       Before you can compile GObject Introspection, you need to have
64       various other tools and libraries installed on your
65       system. The tools needed during the build process (as
66       differentiated from the basic build tools mentioned
67       <a class="link" href="gi-building.html#gi-buildtools" title="Building on UNIX">before</a> are:
68     </p>
69 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
70 <li class="listitem"><p>
71           <a class="ulink" href="http://www.freedesktop.org/software/pkgconfig/" target="_top">pkg-config</a>
72           is a tool for tracking the compilation flags needed for
73           libraries that are used by the GObjecct Introspection. (For each
74           library, a small <code class="literal">.pc</code> text file is
75           installed in a standard location that contains the compilation
76           flags needed for that library along with version number
77           information.)
78         </p></li>
79 <li class="listitem"><p>
80           The GObject-Introspection makefiles will mostly work with different
81           versions of <span class="command"><strong>make</strong></span>, however, there tends to be a
82           few incompatibilities, so the GObject-Introspection team recommends
83           installing <a class="ulink" href="http://www.gnu.org/software/make" target="_top">GNU
84           make</a> if you don't already have it on your system
85           and using it. (It may be called <span class="command"><strong>gmake</strong></span>
86           rather than <span class="command"><strong>make</strong></span>.)
87         </p></li>
88 </ul></div>
89 <p>
90       GObject-Introspection depends on a number of libraries and tools
91       maintained under the umbrella of the GNOME project:
92     </p>
93 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
94 <li class="listitem"><p>
95           The GLib library provides core non-graphical functionality
96           such as high level data types, Unicode manipulation, and
97           an object and type system to C programs. It is available
98           from the <a class="ulink" href="ftp.gnome.org/pub/gnome/sources/glib" target="_top">GNOME
99           FTP site</a> or
100           <a class="ulink" href="http://download.gnome.org/sources/glib/" target="_top">here</a>.
101         </p></li>
102 <li class="listitem"><p>
103           TODO: GTK-Doc
104         </p></li>
105 </ul></div>
106 <div class="itemizedlist">
107 <p class="title"><b>External dependencies</b></p>
108 <ul class="itemizedlist" style="list-style-type: disc; ">
109 <li class="listitem"><p>
110           Python
111         </p></li>
112 <li class="listitem"><p>
113           GObject Introspection has an option dependency on the
114           <a class="ulink" href="TODO" target="_top">libffi</a> library. When available,
115           ...
116         </p></li>
117 <li class="listitem">
118 <p>
119         </p>
120 <p>
121           <a class="ulink" href="http://www.cairographics.org" target="_top">Cairo</a>
122           is a graphics library that supports vector graphics and image
123           compositing. When available, GObject Introspection uses
124           Cairo in its unit tests.
125         </p>
126 <p>
127         </p>
128 </li>
129 </ul>
130 </div>
131 </div>
132 <div class="refsect1">
133 <a name="extra-configuration-options"></a><h2>Extra Configuration Options</h2>
134 <p>
135       In addition to the normal options, the
136       <span class="command"><strong>configure</strong></span> script in the GObject Introspection
137       package supports these additional arguments:
138     </p>
139 <p><b><code class="systemitem">--disable-Bsymbolic</code> and
140         <code class="systemitem">--enable-Bsymbolic</code>. </b>
141         By default, the GObject Introspection package uses the
142         -Bsymbolic-functions linker flag to avoid intra-library
143         PLT jumps. A side-effect of this is that it is no longer
144         possible to override internal uses of GObject Introspection
145         functions with <code class="envar">LD_PRELOAD</code>. Therefore, it may
146         make sense to turn this feature off in some situations.
147         The <code class="option">--disable-Bsymbolic</code> option allows
148         to do that.
149       </p>
150 <p><b><code class="systemitem">--disable-gtk-doc</code> and
151         <code class="systemitem">--enable-gtk-doc</code>. </b>
152         By default the <span class="command"><strong>configure</strong></span> script will try
153         to auto-detect whether the
154         <span class="application">gtk-doc</span> package is installed.
155         If it is, then it will use it to extract and build the
156         documentation for the GObject Introspection package. These options
157         can be used to explicitly control whether
158         <span class="application">gtk-doc</span> should be
159         used or not. If it is not used, the distributed,
160         pre-generated HTML files will be installed instead of
161         building them on your machine.
162       </p>
163 <p><b><code class="systemitem">--disable-doctool</code> and
164         <code class="systemitem">--enable-doctool</code>. </b>
165         TODO
166       </p>
167 <p><b><code class="systemitem">--with-python</code>. </b>
168         Allows specifying the Python interpreter to use, either as an
169         absolute path, or as a program name. GObject Introspection can
170         be built with Python 2 (at least version 2.6) but does not yet
171         support Python 3.
172       </p>
173 </div>
174 </div>
175 <div class="footer">
176 <hr>Generated by GTK-Doc V1.25.1</div>
177 </body>
178 </html>