]> Pileus Git - ~andy/gtk/commitdiff
Mention the need to subscribe to the GTK+ mailing lists.
authorOwen Taylor <otaylor@redhat.com>
Wed, 6 Mar 2002 23:36:37 +0000 (23:36 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Wed, 6 Mar 2002 23:36:37 +0000 (23:36 +0000)
Wed Mar  6 18:11:05 2002  Owen Taylor  <otaylor@redhat.com>

        * gtk/resources.sgml: Mention the need to subscribe
        to the GTK+ mailing lists.

        * gtk/building.sgml: Go into much more details about
        building the entire set of GTK+ libraries and about the
        dependencies that are required.

        * gtk/building.sgml: Add docs for --enable-explicit-deps,
        --with-xinput.

docs/reference/ChangeLog
docs/reference/gtk/building.sgml
docs/reference/gtk/resources.sgml

index c491983f07f604088cfc6c62cb64e29450295100..4b2c0c9faa94904759d31cb62470943c7ed2686e 100644 (file)
@@ -1,3 +1,15 @@
+Wed Mar  6 18:11:05 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/resources.sgml: Mention the need to subscribe
+       to the GTK+ mailing lists.
+
+        * gtk/building.sgml: Go into much more details about
+       building the entire set of GTK+ libraries and about the
+       dependencies that are required.
+
+       * gtk/building.sgml: Add docs for --enable-explicit-deps,
+       --with-xinput.
+
 Wed Mar  6 14:12:34 2002  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/tmpl/gtktreeselection.sgml: docs
index 8cb24d6d4912c436e984f0776108f05beae11b35..de6aac282741a9de18936c8fec9b04aa2ae1e889 100644 (file)
 <refentry id="gtk-building" revision="6 Sept 2001">
 <refmeta>
-<refentrytitle>Compiling the GTK+ package</refentrytitle>
+<refentrytitle>Compiling the GTK+ libraries</refentrytitle>
 <manvolnum>3</manvolnum>
 <refmiscinfo>GTK Library</refmiscinfo>
 </refmeta>
 
 <refnamediv>
-<refname>Compiling the GTK+ Package</refname>
+<refname>Compiling the GTK+ Libraries</refname>
 <refpurpose>
 How to compile GTK+ itself
 </refpurpose>
 </refnamediv>
-
-    <refsect1 id="building">
-      <title>Building the Library on UNIX</title>
-      <para>
-       On UNIX, GTK+ uses the standard GNU build system,
-       using <application>autoconf</application> for package
-       configuration and resolving portability issues,
-       <application>automake</application> for building makefiles
-       that comply with the GNU Coding Standards, and
-       <application>libtool</application> for building shared
-       libraries on multiple platforms.  The normal sequence for
-       compiling and installing the GTK+ library is thus:
-
-       <literallayout>
-         <userinput>./configure</userinput>
-         <userinput>make</userinput>
-         <userinput>make install</userinput>
-       </literallayout>
-      </para>
-
-      <para>
-       The standard options provided by <application>GNU
-       autoconf</application> may be passed to the
-       <command>configure</command> script.  Please see the
-       <application>autoconf</application> documentation or run
-       <command>./configure --help</command> for information about
-       the standard options.
-      </para>
-    </refsect1>
-
-    <refsect1 id="extra-configuration-options">
+  <refsect1 id="overview">
+    <title>Building GTK+ on UNIX-like systems</title>
+    <para>
+      This chapter covers building and installing GTK+ on UNIX and
+      UNIX-like systems such as Linux. Compiling GTK+ on Microsoft
+      Windows is different in detail and somewhat more difficult to
+      get going since the necessary tools aren't included with
+      the operating system.
+    </para>
+    <para>
+      Before we get into the details of how to compile GTK+, we should
+      mention that in many cases, binary packages of GTK+ prebuilt for
+      your operating system will be available, either from your
+      operating system vendor or from independent sources. If such a
+      set of packages is available, installing it will get you
+      programming wih GTK+ much faster than building it yourself. In
+      fact, you may well already have GTK+ installed on your system
+      already.
+    </para>
+    <para>
+      On UNIX-like systems GTK+ uses the standard GNU build system,
+      using <application>autoconf</application> for package
+      configuration and resolving portability issues,
+      <application>automake</application> for building makefiles that
+      comply with the GNU Coding Standards, and
+      <application>libtool</application> for building shared libraries
+      on multiple platforms.
+    </para>
+    <para>
+      If you are building GTK+ from the distributed source packages,
+      then won't need these tools installed; the necessary pieces
+      of the tools are already included in the source packages. But
+      it's useful to know a bit about how packages that use these
+      tools work. A source package is distributed as a
+      <literal>tar.gz</literal> file which you unpack into a 
+      directory full of the source files as follows:
+    </para>
+    <programlisting>
+      tar xvfz gtk+-2.0.0.tar.gz
+    </programlisting>
+    <para>
+      In the toplevel of the directory that is created, there will be
+      a shell script called <filename>configure</filename> which
+      you then run to take the template makefiles called
+      <filename>Makefile.in</filename> in the package and create
+      makefiles customized for your operating system. The <filename>configure</filename>
+      script can be passed various command line arguments to determine how
+      the package is built and installed. The most commonly useful
+      argument is the <systemitem>--prefix</systemitem> argument which
+      determines where the package is installed. To install a package
+      in <filename>/opt/gtk</filename> you would run configure as:
+    </para>
+    <programlisting>
+      ./configure --prefix=/opt/gtk
+    </programlisting>
+    <para>
+      A full list of options can be found by running
+      <filename>configure</filename> with the
+      <systemitem>--help</systemitem> argument. In general, the defaults are
+      right and should be trusted. After you've run
+      <filename>configure</filename>, you then run the
+      <command>make</command> command to build the package and install
+      it.
+    </para>
+    <programlisting>
+      make
+      make install
+    </programlisting>
+    <para>
+      If you don't have permission to write to the directory you are
+      installing in, you may have to change to root temporarily before
+      running <literal>make install</literal>.
+    </para>
+    <para>
+      Several environment variables are useful to pass to set before
+      running configure. <envar>CPPFLAGS</envar> contains options to
+      pass to the C compiler, and is used to tell the compiler where
+      to look for include files. The <envar>LDFLAGS</envar> variable
+      is used in a similar fashion for the linker. Finally the
+      <envar>PKG_CONFIG_PATH</envar> environment variable contains
+      a search path that <command>pkg-config</command> (see below)
+      uses when looking for for file describing how to compile
+      programs using different libraries. If you were installing GTK+
+      and it's dependencies into /opt/gtk, you might want to set
+      these variables as:
+    </para>
+    <programlisting>
+      CPPFLAGS="-I /opt/gtk/include"
+      LDFLAGS="-L/opt/gtk/lib"
+      PKG_CONFIG_PATH="/opt/gtk/lib/pkgconfig"
+      export CPPFLAGS LDFLAGS PKG_CONFIG_PATH
+    </programlisting>
+    <para>
+      You may also need to set the <envar>LD_LIBRARY_PATH</envar>
+      environment variable so the systems dynamic linker can find
+      the newly installed libraries, and the <envar>PATH</envar>
+      environment program so that utility binaries installed by
+      the various libraries will be found.
+    </para>
+    <programlisting>
+      LD_LIBRARY_PATH="/opt/gtk/lib"
+      PATH="/opt/gtk/bin:$PATH"
+      export LD_LIBRARY_PATH PATH
+    </programlisting>
+  </refsect1>
+  <refsect1 id="dependencies">
+    <title>Dependencies</title>
+    <para>
+      Before you can compile the GTK+ widget toolkit, you need to have
+      various other tools and libraries installed on your
+      system. The two tools needed during the build process (as
+      differentiated from the tools used in when creating GTK+
+      mentioned above such as <application>autoconf</application>)
+      are <command>pkg-config</command> and GNU make.
+    </para>
+    <itemizedlist>
+      <listitem>
+       <para>
+         <ulink
+         url="http://www.freedesktop.org/software/pkgconfig/">pkg-config</ulink>
+         is a tool for tracking the compilation flags needed for
+         libraries that is used by the GTK+ libraries. (For each
+         library, a small ".pc" text file is installed in a standard
+         location that contains the compilation flags needed for that
+         library along with version number information.)  The version
+         of <command>pkg-config</command> needed to build GTK+ is
+         mirrored in the <filename>dependencies</filename> directory
+         on the <ulink url="ftp://ftp.gtk.org/pub/gtk/v2.0/">GTK+ FTP
+         site.</ulink>
+       </para>
+      </listitem>
+      <listitem>
+       <para>
+         The GTK+ makefiles will mostly work with different versions
+         of <command>make</command>, however, there tends to be
+         a few incompatibilities, so the GTK+ team recommends
+         installing <ulink url="http://www.gnu.org/software/make">GNU
+           make</ulink> if you don't already have it on your system
+         and using it. (It may be called <command>gmake</command>
+         rather than <command>make</command>)
+       </para>
+      </listitem>
+    </itemizedlist>
+    <para>
+      Three of the libraries that GTK+ depends on are maintained by
+      by the GTK+ team: GLib, Pango, and ATK. Other libraries are
+      maintained separately.
+    </para>
+    <itemizedlist>
+      <listitem>
+       <para>
+         The GLib library provides core non-graphical functionality
+         such as high level data types, unicode manipulation, and
+         a object and type system to C programs. It is available
+         from the <ulink url="ftp://ftp.gtk.org/pub/gtk/v2.0/">GTK+
+         FTP site.</ulink>
+       </para>
+      </listitem>
+      <listitem>
+       <para>
+         Pango is a library for internationalized text handling. It
+         is available from the <ulink
+         url="ftp://ftp.gtk.org/pub/gtk/v2.0/">GTK+ FTP site.</ulink>
+       </para>
+      </listitem>
+      <listitem>
+       <para>
+         ATK is the Accessibility Toolkit. It provides a set of generic
+         interfaces allowing accessibility technologies such as
+         screen readers to interact with a graphical user interface.
+         It is available from the <ulink
+         url="ftp://ftp.gtk.org/pub/gtk/v2.0/">GTK+ FTP site.</ulink>
+       </para>
+      </listitem>
+      <listitem>
+       <para>
+         The <ulink url="http://www.gnu.org/software/libiconv/">GNU
+         libiconv library</ulink> is needed to build GLib if your
+         system doesn't have the <function>iconv()</function>
+         function for doing conversion between character
+         encodings. Most modern systems should have
+         <function>iconv()</function>.
+       </para>
+      </listitem>
+      <listitem>
+       <para>
+         The libintl library from the <ulink
+         url="http://www.gtk.org/software/gettext">GNU gettext
+         package</ulink> is needed if your system doesn't have the
+         <function>gettext()</function> functionality for handling
+         message translation databases.
+       </para>
+      </listitem>
+      <listitem>
+       <para>
+         The <ulink
+           url="ftp://ftp.uu.net/graphics/jpeg/">JPEG</ulink>,
+         <ulink url="http://www.libpng.org">PNG</ulink>, and
+         <ulink url="http://www.libtiff.org">TIFF</ulink> image loading libraries are needed to
+         compile GTK+. You probably already have these libraries
+         installed, but if not, the versions you need are available in
+         the <filename>dependencies</filename> directory on the the
+         <ulink url="ftp://ftp.gtk.org/pub/gtk/v2.0/dependencies/">GTK+
+           FTP site.</ulink>. (Before installing these libraries
+         from source, you should check if your operating system
+         vendor has prebuilt packages of these libraries that you
+         don't have installed.)
+       </para>
+      </listitem>
+      <listitem>
+       <para>
+         While not required for running GTK+ on X, you may want install the
+         <ulink url="http://www.freetype.org">FreeType
+         library</ulink> so that the PangoFT2 backend for Pango will
+         be built. This backend is used by the linux-fb backend for
+         GTK+ and applications that want to render independently
+         of the X display. You'll need at least version 2.0.1.
+       </para>
+      </listitem>
+      <listitem>
+       <para>
+         The libraries from the X window system are needed to build
+         Pango and GTK+. You should already have these installed on
+         your system, but it's possible that you'll need to install
+         the development environment for these libraries that your
+         operating system vendor provides. If you have a recent
+         version of the XFree86 system, such as 4.2.0, then Pango
+         and GTK+ will take advantage of the Xft and Xrender
+         libraries to provide anti-aliased and scaleable fonts in
+         a much more sophisticated fashion then the support for
+         core X fonts.
+       </para>
+      </listitem>
+    </itemizedlist>
+  </refsect1>
+  <refsect1 id="building">
+    <title>Building and testing GTK+</title>
+    <para>
+      First make sure that you have the necessary external
+      dependencies installed: <command>pkg-config</command>, GNU make,
+      the JPEG, PNG, and TIFF libraries, FreeType, and, if necessary,
+      libiconv and libintl. To get detailed information about building 
+      ithese packages, see the documentation provided with the
+      individual packages.
+      On a Linux system, it's quite likely you'll have all of these
+      installed already except for <command>pkg-config</command>.
+    </para>
+    <para>
+      Then build and install the GTK+ libraries in the order:
+      GLib, Pango, ATK, then GTK+. For each library, follow the
+      steps of <literal>configure</literal>, <literal>make</literal>,
+      <literal>make install</literal> mentioned above. If you're
+      lucky, this will all go smoothly, and you'll be ready to
+      <link linkend="gtk-compiling">start compiling your own GTK+
+       applications</link>. You can test your GTK+ installation
+      by running the <command>gtk-demo</command> program that
+      GTK+ installs. If you have the Xft library, you can turn on
+      anti-aliased fonts by setting the <envar>GDK_USE_XFT</envar>
+      environment variable. 
+    </para>
+    <programlisting>
+      GDK_USE_XFT=1 gtk-demo
+    </programlisting>
+    <para>
+      If one of the <filename>configure</filename> scripts fails or running
+      <command>make</command> fails, look closely at the at the error
+      messages printed; these will often provide useful information
+      as to what went wrong. When <filename>configure</filename>
+      fails, extra information, such as errors that a test compilation
+      ran into, is found in the file <filename>config.log</filename>.
+      Looking at the last couple of hundred lines in this file will
+      frequently make clear what went wrong. If all else fails, you
+      can ask for help on the gtk-list mailing list.
+      See <xref linkend="gtk-resources"> for more information.
+    </para>
+  </refsect1>
+      <refsect1 id="extra-configuration-options">
       <title>Extra Configuration Options</title>
 
       <para>
        In addition to the normal options, the
-       <command>configure</command> script in the GTK+
-       library supports these additional arguments:
+       <command>configure</command> script for the GTK+ library
+       supports a number of additional arguments. (Command line
+       arguments for the other GTK+ libraries are described in
+       the documentation distributed with the those libraries.)
 
        <cmdsynopsis>
          <command>configure</command>
@@ -141,6 +389,31 @@ How to compile GTK+ itself
         </para>
       </formalpara>
 
+      <formalpara>
+        <title><systemitem>--enable-explicit-deps</systemitem> and
+          <systemitem>--disable-explicit-deps</systemitem></title>
+        <para>
+         If <systemitem>--enable-explicit-deps</systemitem> is
+         specified then GTK+ will write the full set of libraries
+         that GTK+ depends upon into its .pc files to be used when
+         programs depending on GTK+ are linked. Otherwise, GTK+
+         only will include the GTK+ libraries themselves, and
+         will depend on system library dependency facilities to
+         bring in the other libraries.
+         By default GTK+ will disable explicit dependencies unless
+         it detects that they are needed on the system. (If you
+         specify <systemitem>--enable-static</systemitem> to force
+         building of static libraries, then explicit dependencies
+         will be written since library dependencies don't work
+         for static libraries.) Specifying
+         <systemitem>--enable-explicit-deps</systemitem> or
+         <systemitem>--enable-static</systemitem> can cause
+         compatibility
+         problems when libraries that GTK+ depends upon change
+         their versions, and should be avoided if possible.
+        </para>
+      </formalpara>
+
       <formalpara>
         <title><systemitem>--disable-shm</systemitem> and
           <systemitem>--enable-shm</systemitem></title>
@@ -194,27 +467,37 @@ How to compile GTK+ itself
          <systemitem>--enable-gtk-doc</systemitem></title>
 
        <para>
-         By default the <command>configure</command> script will try
-         to auto-detect whether the
-         <application>gtk-doc</application> package is installed.  If
-         it is, then it will use it to extract and build the
-         documentation for the GTK+ library.  These options
-         can be used to explicitly control whether 
-          <application>gtk-doc</application> should be
-         used or not.  If it is not used, the distributed,
-         pre-generated HTML files will be installed instead of
-         building them on your machine.
+         The <application>gtk-doc</application> package is
+         used to generate the reference documented included
+         with GTK+. By default support for gtk-doc is disabled
+         because it requires various extra dependencies
+         to be installed. If you have
+         <application>gtk-doc</application> installed and
+         are modifying GTK+, you may want to enable
+         <application>gtk-doc</application> support by passing
+         in <systemitem>--enable-gtk-doc</systemitem>. If not
+         enabled pre-generated HTML files distributed with GTK+
+         will be installed.
        </para>
       </formalpara>
 
       <formalpara>
         <title><systemitem>--with-xinput</systemitem></title>
-
         <para>
-          
+         Controls whether GTK+ is built with support for the XInput
+         extension. The XInput extension provides an interface
+         to extended input devices such as graphics tablets.
+         When this support is compiled in, specially written
+         GTK+ programs can get access to subpixel positions,
+         multiple simultaneous input devices, and extra "axes"
+         provided by the device such as pressure and tilt
+         information. This is only known to work well on XFree86
+         systems, though other systems do have this extension.
+         (If <systemitem>--with-xinput=gxi</systemitem>
+         is supplied, support for an obsolete and unsupported
+         way of interacting with XInput is compiled.)
         </para>
       </formalpara>
-
       <formalpara>
        <title><systemitem>--with-gdktarget</systemitem></title>
 
@@ -238,3 +521,7 @@ How to compile GTK+ itself
     </refsect1>
 
 </refentry>
+
+<!-- Local Variables: -->
+<!-- sgml-parent-document: ("gtk-docs.sgml" "chapter" "refentry")  -->
+<!-- End: -->
index 6982c0ee380f80a3fe96334ba48c2efaab896fe1..1ad55d0c025fa41bebc66361ec66386c856eb643 100644 (file)
@@ -69,6 +69,9 @@ libraries. Discussion of GLib, Pango, and ATK in addition to GTK+
 proper is welcome on these lists. You can subscribe or view the
 archives of these lists on 
 <ulink url="http://mail.gnome.org">http://mail.gnome.org</ulink>.
+If you aren't subscribed to the list, any message you post to
+the list will be held for manual moderation, which might take
+some days to happen.      
 </para>
 
 <para>