Difference between revisions of "Xorg7/Libraries"

From CBLFS
Jump to navigationJump to search
(Versioning template.)
(Edited to conform to template. Tabulated dependency information.)
Line 17: Line 17:
 
Back to [[Xorg7/Protocol_Headers|Protocol Headers]]
 
Back to [[Xorg7/Protocol_Headers|Protocol Headers]]
  
=Libraries=
+
= Introduction to Xorg Libraries =
  
 
There are forty-four libraries.  Similar to the protocols, using wget and appending a *.bz2 or *.gz to the base URL above is probably the most efficient way to get the tarballs on your system.
 
There are forty-four libraries.  Similar to the protocols, using wget and appending a *.bz2 or *.gz to the base URL above is probably the most efficient way to get the tarballs on your system.
Line 30: Line 30:
 
  wget http://svn.cross-lfs.org/svn/repos/patches/libXfont/libXfont-{{LibXfont-Version}}-cidfonts-1.patch
 
  wget http://svn.cross-lfs.org/svn/repos/patches/libXfont/libXfont-{{LibXfont-Version}}-cidfonts-1.patch
  
==Dependencies==
+
= Dependencies =
  
 +
== Required ==
 
The X.org libraries require their respective protocols to be installed first.  Although not necessary, it is recommended that all of the protocol headers are installed before the libraries.
 
The X.org libraries require their respective protocols to be installed first.  Although not necessary, it is recommended that all of the protocol headers are installed before the libraries.
  
 
There are some dependency orders in the libraries.  xtrans, Xau, Xdmcp must be installed before anything else.  libXext must be installed before any other extension library.  The list following is a successful build order for the Xorg libraries.  Assuming all of the protocol headers were previously installed, additional required dependencies, if they exist, are listed.
 
There are some dependency orders in the libraries.  xtrans, Xau, Xdmcp must be installed before anything else.  libXext must be installed before any other extension library.  The list following is a successful build order for the Xorg libraries.  Assuming all of the protocol headers were previously installed, additional required dependencies, if they exist, are listed.
  
* xtrans
+
{|style="text-align: left;"
* libXau
+
|-valign="top"
* libXdmcp
+
!Xorg Library
* libX11 - xtrans, libXdmcp, libXau
+
|
* libXext
+
!Depends On
* libWindowsWM - libX11
+
|-valign="top"
* libdmx - libX11
+
|xtrans
* libfontenc
+
|-valign="top"
* libFS - xtrans
+
|libXau
* libICE - xtrans
+
|-valign="top"
* liblbxutil
+
|libXdmcp
* liboldX - libX11
+
|-valign="top"
* libSM - libICE
+
|libX11
* libXt - libX11, libSM
+
|
* libXmu - libX11, libXt
+
|xtrans, libXdmcp, libXau
* libXpm - libXt
+
|-valign="top"
* libXp - libX11
+
|libXext
* libXaw - libXp
+
|-valign="top"
* libXfixes - libX11
+
|libWindowsWM
* libXcomposite - libXfixes
+
|
* libXrender - libX11
+
|libX11
* libXdamage - libX11
+
|-valign="top"
* libXcursor - libXrender
+
|libdmx
* libXevie
+
|
* libXfont - [[FreeType]]
+
|libX11
* libXfontcache - libX11, libXext
+
|-valign="top"
* libXft - [[FreeType]], [[FontConfig]], libXrender
+
|libfontenc
* libXi
+
|
* libXinerama - libX11
+
|libFS, xtrans
* libxkbfile - libX11
+
|-valign="top"
* libxkbui - libX11
+
|libICE
* libXprintUtil - libX11, libXp
+
|
* libXprintAppUtil - libX11, libXprintUtil
+
|xtrans
* libXrandr - libX11
+
|-valign="top"
* libXres - libX11
+
|liblbxutil
* libXTrap - libX11
+
|-valign="top"
* libXtst - libX11
+
|liboldX
* libXv - libX11
+
|
* libXvMC - libX11
+
|libX11
* libXxf86dga
+
|-valign="top"
* libXxf86misc
+
|libSM
* libXxf86vm - libX11, libXext
+
|
 +
|libICE
 +
|-valign="top"
 +
|libXt
 +
|
 +
|libX11, libSM
 +
|-valign="top"
 +
|libXmu
 +
|
 +
|libX11, libXt
 +
|-valign="top"
 +
|libXpm
 +
|
 +
|libXt
 +
|-valign="top"
 +
|libXp
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libXaw
 +
|
 +
|libXp
 +
|-valign="top"
 +
|libXfixes
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libXcomposite
 +
|
 +
|libXfixes
 +
|-valign="top"
 +
|libXrender
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libXdamage
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libXcursor
 +
|
 +
|libXrender
 +
|-valign="top"
 +
|libXevie
 +
|-valign="top"
 +
|libXfont
 +
|
 +
|[[FreeType]]
 +
|-valign="top"
 +
|libXfontcache
 +
|
 +
|libX11, libXext
 +
|-valign="top"
 +
|libXft
 +
|
 +
|[[FreeType]], [[FontConfig]], libXrender
 +
|-valign="top"
 +
|libXi
 +
|-valign="top"
 +
|libXinerama
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libxkbfile
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libxkbui
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libXprintUtil
 +
|
 +
|libX11, libXp
 +
|-valign="top"
 +
|libXprintAppUtil
 +
|
 +
|libX11, libXprintUtil
 +
|-valign="top"
 +
|libXrandr
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libXres
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libXTrap
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libXtst
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libXv
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libXvMC
 +
|
 +
|libX11
 +
|-valign="top"
 +
|libXxf86dga
 +
|-valign="top"
 +
|libXxf86misc
 +
|-valign="top"
 +
|libXxf86vm
 +
|
 +
|libX11, libXext
 +
|}
  
==Non-Multilib==
+
= Non-Multilib =
  
 
Three libraries require patching.  All three patches originate from upstream. Patch xtrans before building.
 
Three libraries require patching.  All three patches originate from upstream. Patch xtrans before building.
  
patch -Np1 -i ../xtrans-{{Xtrans-Version}}-setuid-1.patch
+
  patch -Np1 -i ../xtrans-{{Xtrans-Version}}-setuid-1.patch
  
 
Patch libX11 before building.
 
Patch libX11 before building.
  
patch -Np1 -i ../libX11-{{LibX11-Version}}-setuid-1.patch
+
  patch -Np1 -i ../libX11-{{LibX11-Version}}-setuid-1.patch
  
 
Patch libXfont before building.   
 
Patch libXfont before building.   
  
patch -Np1 -i ../libXfont-{{LibXfont-Version}}-cidfonts-1.patch
+
  patch -Np1 -i ../libXfont-{{LibXfont-Version}}-cidfonts-1.patch
  
 
Compile each library as follows:
 
Compile each library as follows:
  
./configure $XORG_CONFIG &&
+
  ./configure $XORG_CONFIG &&
make
+
  make
  
 
Install each library as follows:
 
Install each library as follows:
  
make install
+
  make install
  
==Multilib==
+
= Multilib =
  
===32-Bit===
+
== 32Bit ==
  
 
Three libraries require patching.  All three patches originate from upstream. Patch xtrans before building.
 
Three libraries require patching.  All three patches originate from upstream. Patch xtrans before building.
  
patch -Np1 -i ../xtrans-{{Xtrans-Version}}-setuid-1.patch
+
  patch -Np1 -i ../xtrans-{{Xtrans-Version}}-setuid-1.patch
  
 
Patch libX11 before building.
 
Patch libX11 before building.
  
patch -Np1 -i ../libX11-{{LibX11-Version}}-setuid-1.patch
+
  patch -Np1 -i ../libX11-{{LibX11-Version}}-setuid-1.patch
  
 
Patch libXfont before building.   
 
Patch libXfont before building.   
Line 126: Line 237:
 
Install the library.
 
Install the library.
  
make install
+
  make install
  
===N32===
+
== N32 ==
  
 
Three libraries require patching.  All three patches originate from upstream. Patch xtrans before building.
 
Three libraries require patching.  All three patches originate from upstream. Patch xtrans before building.
  
patch -Np1 -i ../xtrans-{{Xtrans-Version}}-setuid-1.patch
+
  patch -Np1 -i ../xtrans-{{Xtrans-Version}}-setuid-1.patch
  
 
Patch libX11 before building.
 
Patch libX11 before building.
  
patch -Np1 -i ../libX11-{{LibX11-Version}}-setuid-1.patch
+
  patch -Np1 -i ../libX11-{{LibX11-Version}}-setuid-1.patch
  
 
Patch libXfont before building.   
 
Patch libXfont before building.   
  
patch -Np1 -i ../libXfont-{{LibXfont-Version}}-cidfonts-1.patch
+
  patch -Np1 -i ../libXfont-{{LibXfont-Version}}-cidfonts-1.patch
  
 
Compile the library.
 
Compile the library.
  
PKG_CONFIG_PATH="${PKG_CONFIG_PATHN32}" CC="gcc ${BUILDN32}" CXX="g++ ${BUILDN32}" \
+
  PKG_CONFIG_PATH="${PKG_CONFIG_PATHN32}" CC="gcc ${BUILDN32}" CXX="g++ ${BUILDN32}" \
./configure $XORG_CONFIGN32 &&
+
  ./configure $XORG_CONFIGN32 &&
make
+
  make
  
 
Install the library.
 
Install the library.
  
make install
+
  make install
  
===64-Bit===
+
== 64Bit ==
  
 
Three libraries require patching.  All three patches originate from upstream. Patch xtrans before building.
 
Three libraries require patching.  All three patches originate from upstream. Patch xtrans before building.
  
patch -Np1 -i ../xtrans-{{Xtrans-Version}}-setuid-1.patch
+
  patch -Np1 -i ../xtrans-{{Xtrans-Version}}-setuid-1.patch
  
 
Patch libX11 before building.
 
Patch libX11 before building.
  
patch -Np1 -i ../libX11-{{LibX11-Version}}-setuid-1.patch
+
  patch -Np1 -i ../libX11-{{LibX11-Version}}-setuid-1.patch
  
 
Patch libXfont before building.   
 
Patch libXfont before building.   
  
patch -Np1 -i ../libXfont-{{LibXfont-Version}}-cidfonts-1.patch
+
  patch -Np1 -i ../libXfont-{{LibXfont-Version}}-cidfonts-1.patch
  
 
Compile the library.
 
Compile the library.
Line 176: Line 287:
 
  make install
 
  make install
  
== Automated Build ==
+
= Semi-Automated Build =
  
These (semi) automated build instructions assume that you are using the lib-7.1.wget file.
+
These automated build instructions assume that you are using subdirectories as discussed in the introduction.  You must also have an unaltered copy of lib-{{Xorg-Version}}.wget in the main working directory (xc). This file lists each library in an order that ensures dependencies are satisfied.
  
=== Unpack the Packages and Patch ===
+
After entering the lib subdirectory and downloading the tarballs, unpack the packages:
  
for i in *.tar.bz2; do
+
  for i in *.tar.bz2; do
tar xvf $i;
+
    tar xvf $i;
done
+
  done
  
cd libX11* &&
+
Patch three libraries:
patch -Np1 -i ../libX11-{{LibX11-Version}}-setuid-1.patch &&
+
 
cd ../xtrans* &&
+
  cd libX11* &&
patch -Np1 -i ../xtrans-{{Xtrans-Version}}-setuid-1.patch &&
+
  patch -Np1 -i ../libX11-{{LibX11-Version}}-setuid-1.patch &&
cd ../libXfont* &&
+
  cd ../xtrans* &&
patch -Np1 -i ../libXfont-{{LibXfont-Version}}-cidfonts-1.patch &&
+
  patch -Np1 -i ../xtrans-{{Xtrans-Version}}-setuid-1.patch &&
cd ..
+
  cd ../libXfont* &&
 +
  patch -Np1 -i ../libXfont-{{LibXfont-Version}}-cidfonts-1.patch &&
 +
  cd ..
 
   
 
   
=== Make and Install the Packages ===
+
== Non-Multilib ==
  
==== Non-Multilib ====
+
Build and install each library:
  
 
   for dir in `sed "s/.tar.bz2//g" ../lib-{{Xorg-Version}}.wget`; do
 
   for dir in `sed "s/.tar.bz2//g" ../lib-{{Xorg-Version}}.wget`; do
Line 206: Line 319:
 
   done
 
   done
  
==== Multilib ====
+
== Multilib ==
 +
 
 +
Build and install each library:
  
for dir in `sed "s/.tar.bz2//g" ../lib-{{Xorg-Version}}.wget`; do
+
  for dir in `sed "s/.tar.bz2//g" ../lib-{{Xorg-Version}}.wget`; do
cd ${dir} &&
+
    cd ${dir} &&
PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" CC="gcc ${BUILD32}" CXX="g++ ${BUILD32}" \
+
    PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" CC="gcc ${BUILD32}" CXX="g++ ${BUILD32}" \  
./configure $XORG_CONFIG32 &&
+
    ./configure $XORG_CONFIG32 &&
make &&
+
    make &&
make install &&
+
    make install &&
make distclean &&
+
    make distclean &&
PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" CC="gcc ${BUILD64}" CXX="g++ ${BUILD64}" \
+
    PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" CC="gcc ${BUILD64}" CXX="g++ ${BUILD64}" \
./configure $XORG_CONFIG64 &&
+
    ./configure $XORG_CONFIG64 &&
make &&
+
    make &&
make install &&
+
    make install &&
cd ..;
+
    cd ..;
done
+
  done
  
 
Next install [[Xorg7/libdrm|libdrm]]
 
Next install [[Xorg7/libdrm|libdrm]]
  
== Contents ==
+
= Contents =
  
 
Each Xorg library installs one or more set of libraries (*.so,la,a) files.  Rather than listing all of the files installed, a listing of the 44 library packages follows.
 
Each Xorg library installs one or more set of libraries (*.so,la,a) files.  Rather than listing all of the files installed, a listing of the 44 library packages follows.
Line 230: Line 345:
 
The interested party can issue the following 'make install' command to create a complete list of files installed and their installed location in the main working directory (xc):
 
The interested party can issue the following 'make install' command to create a complete list of files installed and their installed location in the main working directory (xc):
  
    make install 2>&1 | tee ../../<name_of_lib>.files
+
  make install 2>&1 | tee ../../<name_of_lib>.files
  
 
The 44 library packages, listed in build order, with a short description are:  
 
The 44 library packages, listed in build order, with a short description are:  
  
* xtrans - transport (protocol) table.  Contains a definition for every transport (protocol) family. All operations that can be made on the transport go through this table.
+
{| style="text-align: left;"
* libXau - main interface to the X11 authorization handling, which controls authorization for X connections, both client-side and server-side.
+
|-valign="top"
* libXdmcp - main interface to the X11 display manager control protocol library, which allows for remote logins to display managers
+
!xtrans:
* libX11 - main client interface to the X Window System, and is otherwise known as 'Xlib'. It provides a complete API for the basic functions of the window system.
+
|transport (protocol) table.  Contains a definition for every transport (protocol) family. All operations that can be made on the transport go through this table.
* libXext - provides an X Window System client interface to several extensions to the X protocol.  libXext also provides a small set of utility functions to aid authors of client APIs for X protocol extensions.
+
|-valign="top"
* libAppleWM
+
!libXau:
* libWindowsWM
+
|main interface to the X11 authorization handling, which controls authorization for X connections, both client-side and server-side.
* libdmx - interface to the DMX extension for X, which allows a single server to be set up as a proxy spanning multiple servers -- not unlike Xinerama across discrete physical machines. It can be reconfigured on the fly to change the layout, and it is presented as a single logical display to clients.  libdmx allows clients to configure the layout of DMX servers by adding and removing screens, input devices, et al.
+
|-valign="top"
* libfontenc - font encodings library.
+
!libXdmcp:
* libFS - provides various functions useful to X11 font servers, and clients connecting to font servers. It is not used outside of these implementations.
+
|main interface to the X11 display manager control protocol library, which allows for remote logins to display managers.
* libICE - the inter-client exchange library.
+
|-valign="top"
* liblbxutil - contains header files and documentation for the XFIXES extension.
+
!libX11:
* liboldX - association table libraries.
+
|main client interface to the X Window System, and is otherwise known as 'Xlib'. It provides a complete API for the basic functions of the window system.
* libSM - provides the main interface to the X11 Session Management library, which allows for applications to both manage sessions, and make use of session managers to save and restore their state for later use.
+
|-valign="top"
* libXt - provides the X Toolkit Intrinsics, an abstract widget library upon which other toolkits are based. Xt is the basis for many toolkits, including the Athena widgets (Xaw), and LessTif (a Motif implementation)
+
!libXext:
* libXmu - provides a set of miscellaneous utility convenience functions for X libraries to use.
+
|provides an X Window System client interface to several extensions to the X protocol.  libXext also provides a small set of utility functions to aid authors of client APIs for X protocol extensions.
* libXpm - provides support and common operation for the XPM pixmap format, which is commonly used in legacy X applications. XPM is an extension of the monochrome XBM bitmap specified in the X protocol.
+
|-valign="top"
* libXp - provides public APIs to allow client applications to render to non-display devices, making use of the X Print Service.
+
!libAppleWM:
* libXaw - provides the original version of Xaw, the Athena Widgets tookit, which is largely used by legacy X applications. Within the Xaw series, version 6 is itself considered deprecated; version 7 is in most common usage.  In general, use of a more modern toolkit such as GTK+ is recommended.
+
|
* libXfixes - provides an X Window System client interface to the 'XFIXES' extension to the X protocol.  It provides support for Region types, and some cursor functions.
+
|-valign="top"
* libXcomposite - provides an X Window System client interface to the Composite extension to the X protocol.  The Composite extension allows clients called compositing managers to control the final drawing of the screen. Rendering is done into an off-screen buffer.
+
!libWindowsWM:
* libXrender - X Rendering Extension (Render) introduces digital image composition as the foundation of a new rendering model within the X Window System. Rendering geometric figures is accomplished by client-side tesselation into either triangles or trapezoids. Text is drawn by loading glyphs into the server and rendering sets of them. The Xrender library exposes this extension to X clients.  This package provides a static library and C header files.
+
|
* libXdamage - provides an X Window System client interface to the DAMAGE extension to the X protocol.  The Damage extension provides for notification of when on-screen regions have been 'damaged' (altered).
+
|-valign="top"
* libXcursor - header files and a static version of the X cursor management library are provided by this package.
+
!libdmx:
* libXevie - provides an X Window System client interface to the EvIE extension to the X protocol.  The EvIE (Event Interception Extension) allows for clients to be able to intercept all events coming through the server and then decide what to do with them, including being able to modify or discard events.
+
|interface to the DMX extension for X, which allows a single server to be set up as a proxy spanning multiple servers -- not unlike Xinerama across discrete physical machines. It can be reconfigured on the fly to change the layout, and it is presented as a single logical display to clients.  libdmx allows clients to configure the layout of DMX servers by adding and removing screens, input devices, et al.
* libXfont - libraries for different font types.
+
|-valign="top"
* libXfontcache
+
!libfontenc:
* libXft - provides a client-side font API for X applications, making the FreeType font rasterizer available to X clients. Fontconfig is used for font specification resolution. Where available, the RENDER extension handles glyph drawing; otherwise, the core X protocol is used.
+
|font encodings library.
* libXi - provides an X Window System client interface to the XINPUT extension to the X protocol.  The Input extension allows setup and configuration of multiple input devices, and will soon allow hotplugging of input devices; to be added and removed on the fly.
+
|-valign="top"
* libXinerama - provides an X Window System client interface to the XINERAMA extension to the X protocol.  The Xinerama (also known as panoramiX) extension allows for multiple screens attached to a single display to be treated as belonging together, and to give desktop applications a better idea of the monitor layout.  Required for dual monitor support.
+
!libFS
* libxkbfile - provides an interface to read and manipulate description files for XKB, the X11 keyboard configuration extension.
+
|provides various functions useful to X11 font servers, and clients connecting to font servers. It is not used outside of these implementations.
* libxkbui - provides an interface to easily present XKB layouts as graphical widgets.
+
|-valign="top"
* libXprintUtil - provides utility Xpu APIs allowing client applications to access and manipulate information about printer capabilities from an Xprint server.
+
!libICE:
* libXprintAppUtil - provides utility Xpau APIs allowing client applications to access information about and control Xprint jobs from an Xprint server.
+
|the inter-client exchange library.
* libXrandr - provides an X Window System client interface to the RandR extension to the X protocol.  The RandR extension allows for run-time configuration of display attributes such as resolution, rotation, and reflection.
+
|-valign="top"
* libXres - provides an X Window System client interface to the Resource extension to the X protocol.  The Resource extension allows for X clients to see and monitor the X resource usage of various clients (pixmaps, et al).
+
!liblbxutil:
* libXScrnSaver
+
|contains header files and documentation for the XFIXES extension.
* libXTrap - provides an interface to the DEC-XTRAP extension, which allows for capture and synthesis of core input events.
+
|-valign="top"
* libXtst - provides an X Window System client interface to the Record extension to the X protocol.  The Record extension allows X clients to synthesise input events, which is useful for automated testing.
+
!liboldX:
* libXv - provides an X Window System client interface to the XVideo extension to the X protocol.  The XVideo extension allows for accelerated drawing of videos. Hardware adaptors are exposed to clients, which may draw in a number of colourspaces, including YUV.
+
|association table libraries.
* libXvMC - provides an X Window System client interface to the XVideo-MotionCompensation extension to the X protocol.  The XVideo-MotionCompensation extension allows for further accelerated drawing of videos. Video data may be sent at earlier stages of the decoding pipeline than raw YUV data.
+
|-valign="top"
* libXxf86dga - provides the XFree86-DGA extension, which allows direct graphics access to a framebuffer-like region, and also allows relative mouse reporting, et al. It is mainly used by games and emulators for games.
+
!libSM:
* libXxf86misc - provides an interface to the XFree86-Misc extension, which allows client applications to query the current keyboard and mouse settings of the running XFree86-based (XFree86, Xorg) server.
+
|provides the main interface to the X11 Session Management library, which allows for applications to both manage sessions, and make use of session managers to save and restore their state for later use.
* libXxf86vm - provides an interface to the XFree86-VidModeExtension extension, which allows client applications to get and set video mode timings in extensive detail. It is used by the xvidtune program in particular.
+
|-valign="top"
 +
!libXt:
 +
|provides the X Toolkit Intrinsics, an abstract widget library upon which other toolkits are based. Xt is the basis for many toolkits, including the Athena widgets (Xaw), and LessTif (a Motif implementation).
 +
|-valign="top"
 +
!libXmu:
 +
|provides a set of miscellaneous utility convenience functions for X libraries to use.
 +
|-valign="top"
 +
!libXpm:
 +
|provides support and common operation for the XPM pixmap format, which is commonly used in legacy X applications. XPM is an extension of the monochrome XBM bitmap specified in the X protocol.
 +
|-valign="top"
 +
!libXp:
 +
|provides public APIs to allow client applications to render to non-display devices, making use of the X Print Service.
 +
|-valign="top"
 +
!libXaw:
 +
|provides the original version of Xaw, the Athena Widgets tookit, which is largely used by legacy X applications. Within the Xaw series, version 6 is itself considered deprecated; version 7 is in most common usage.  In general, use of a more modern toolkit such as GTK+ is recommended.
 +
|-valign="top"
 +
!libXfixes:
 +
|provides an X Window System client interface to the 'XFIXES' extension to the X protocol.  It provides support for Region types, and some cursor functions.
 +
|-valign="top"
 +
!libXcomposite:
 +
|provides an X Window System client interface to the Composite extension to the X protocol.  The Composite extension allows clients called compositing managers to control the final drawing of the screen. Rendering is done into an off-screen buffer.
 +
|-valign="top"
 +
!libXrender:
 +
|X Rendering Extension (Render) introduces digital image composition as the foundation of a new rendering model within the X Window System. Rendering geometric figures is accomplished by client-side tesselation into either triangles or trapezoids. Text is drawn by loading glyphs into the server and rendering sets of them. The Xrender library exposes this extension to X clients.  This package provides a static library and C header files.
 +
|-valign="top"
 +
!libXdamage:
 +
|provides an X Window System client interface to the DAMAGE extension to the X protocol.  The Damage extension provides for notification of when on-screen regions have been 'damaged' (altered).
 +
|-valign="top"
 +
!libXcursor:
 +
|header files and a static version of the X cursor management library are provided by this package.
 +
|-valign="top"
 +
!libXevie:
 +
|provides an X Window System client interface to the EvIE extension to the X protocol.  The EvIE (Event Interception Extension) allows for clients to be able to intercept all events coming through the server and then decide what to do with them, including being able to modify or discard events.
 +
|-valign="top"
 +
!libXfont:
 +
|libraries for different font types.
 +
|-valign="top"
 +
!libXfontcache:
 +
|
 +
|-valign="top"
 +
!libXft:
 +
|provides a client-side font API for X applications, making the FreeType font rasterizer available to X clients. Fontconfig is used for font specification resolution. Where available, the RENDER extension handles glyph drawing; otherwise, the core X protocol is used.
 +
|-valign="top"
 +
!libXi:
 +
|provides an X Window System client interface to the XINPUT extension to the X protocol.  The Input extension allows setup and configuration of multiple input devices, and will soon allow hotplugging of input devices; to be added and removed on the fly.
 +
|-valign="top"
 +
!libXinerama:
 +
|provides an X Window System client interface to the XINERAMA extension to the X protocol.  The Xinerama (also known as panoramiX) extension allows for multiple screens attached to a single display to be treated as belonging together, and to give desktop applications a better idea of the monitor layout.  Required for dual monitor support.
 +
|-valign="top"
 +
!libxkbfile:
 +
|provides an interface to read and manipulate description files for XKB, the X11 keyboard configuration extension.
 +
|-valign="top"
 +
!libxkbui:
 +
|provides an interface to easily present XKB layouts as graphical widgets.
 +
|-valign="top"
 +
!libXprintUtil:
 +
|provides utility Xpu APIs allowing client applications to access and manipulate information about printer capabilities from an Xprint server.
 +
|-valign="top"
 +
!libXprintAppUtil:
 +
|provides utility Xpau APIs allowing client applications to access information about and control Xprint jobs from an Xprint server.
 +
|-valign="top"
 +
!libXrandr:
 +
|provides an X Window System client interface to the RandR extension to the X protocol.  The RandR extension allows for run-time configuration of display attributes such as resolution, rotation, and reflection.
 +
|-valign="top"
 +
!libXres:
 +
|provides an X Window System client interface to the Resource extension to the X protocol.  The Resource extension allows for X clients to see and monitor the X resource usage of various clients (pixmaps, et al).
 +
|-valign="top"
 +
!libXScrnSaver:
 +
|
 +
|-valign="top"
 +
!libXTrap:
 +
|provides an interface to the DEC-XTRAP extension, which allows for capture and synthesis of core input events.
 +
|-valign="top"
 +
!libXtst:
 +
|provides an X Window System client interface to the Record extension to the X protocol.  The Record extension allows X clients to synthesise input events, which is useful for automated testing.
 +
|-valign="top"
 +
!libXv:
 +
|provides an X Window System client interface to the XVideo extension to the X protocol.  The XVideo extension allows for accelerated drawing of videos. Hardware adaptors are exposed to clients, which may draw in a number of colourspaces, including YUV.
 +
|-valign="top"
 +
!libXvMC:
 +
|provides an X Window System client interface to the XVideo-MotionCompensation extension to the X protocol.  The XVideo-MotionCompensation extension allows for further accelerated drawing of videos. Video data may be sent at earlier stages of the decoding pipeline than raw YUV data.
 +
|-valign="top"
 +
!libXxf86dga:
 +
|provides the XFree86-DGA extension, which allows direct graphics access to a framebuffer-like region, and also allows relative mouse reporting, et al. It is mainly used by games and emulators for games.
 +
|-valign="top"
 +
!libXxf86misc:
 +
|provides an interface to the XFree86-Misc extension, which allows client applications to query the current keyboard and mouse settings of the running XFree86-based (XFree86, Xorg) server.
 +
|-valign="top"
 +
!libXxf86vm:
 +
|provides an interface to the XFree86-VidModeExtension extension, which allows client applications to get and set video mode timings in extensive detail. It is used by the xvidtune program in particular.
 +
|}

Revision as of 09:22, 20 December 2006

Download Source:
http://xorg.freedesktop.org/releases/individual/lib/
Required Patches:
http://svn.cross-lfs.org/svn/repos/patches/libX11/libX11-Template:LibX11-Version-setuid-1.patch
http://svn.cross-lfs.org/svn/repos/patches/xtrans/xtrans-Template:Xtrans-Version-setuid-1.patch
http://svn.cross-lfs.org/svn/repos/patches/libXfont/libXfont-Template:LibXfont-Version-cidfonts-1.patch

Back to Protocol Headers

Introduction to Xorg Libraries

There are forty-four libraries. Similar to the protocols, using wget and appending a *.bz2 or *.gz to the base URL above is probably the most efficient way to get the tarballs on your system.

Alternately, if you chose to use subdirectories, the tarballs can be retrieved as follows. This will prevent multiple versions from being downloaded when multiple versions exist. The patches are required when crosscompiling.

wget http://anduin.linuxfromscratch.org/sources/BLFS/svn/x/wget/lib-7.1.wget &&
cd lib &&
wget -B http://xorg.freedesktop.org/releases/individual/lib/ -i ../lib-7.1.wget &&
wget http://svn.cross-lfs.org/svn/repos/patches/libX11/libX11-Template:LibX11-Version-setuid-1.patch &&
wget http://svn.cross-lfs.org/svn/repos/patches/xtrans/xtrans-Template:Xtrans-Version-setuid-1.patch &&
wget http://svn.cross-lfs.org/svn/repos/patches/libXfont/libXfont-Template:LibXfont-Version-cidfonts-1.patch

Dependencies

Required

The X.org libraries require their respective protocols to be installed first. Although not necessary, it is recommended that all of the protocol headers are installed before the libraries.

There are some dependency orders in the libraries. xtrans, Xau, Xdmcp must be installed before anything else. libXext must be installed before any other extension library. The list following is a successful build order for the Xorg libraries. Assuming all of the protocol headers were previously installed, additional required dependencies, if they exist, are listed.

Xorg Library Depends On
xtrans
libXau
libXdmcp
libX11 xtrans, libXdmcp, libXau
libXext
libWindowsWM libX11
libdmx libX11
libfontenc libFS, xtrans
libICE xtrans
liblbxutil
liboldX libX11
libSM libICE
libXt libX11, libSM
libXmu libX11, libXt
libXpm libXt
libXp libX11
libXaw libXp
libXfixes libX11
libXcomposite libXfixes
libXrender libX11
libXdamage libX11
libXcursor libXrender
libXevie
libXfont FreeType
libXfontcache libX11, libXext
libXft FreeType, FontConfig, libXrender
libXi
libXinerama libX11
libxkbfile libX11
libxkbui libX11
libXprintUtil libX11, libXp
libXprintAppUtil libX11, libXprintUtil
libXrandr libX11
libXres libX11
libXTrap libX11
libXtst libX11
libXv libX11
libXvMC libX11
libXxf86dga
libXxf86misc
libXxf86vm libX11, libXext

Non-Multilib

Three libraries require patching. All three patches originate from upstream. Patch xtrans before building.

 patch -Np1 -i ../xtrans-Template:Xtrans-Version-setuid-1.patch

Patch libX11 before building.

 patch -Np1 -i ../libX11-Template:LibX11-Version-setuid-1.patch

Patch libXfont before building.

 patch -Np1 -i ../libXfont-Template:LibXfont-Version-cidfonts-1.patch

Compile each library as follows:

 ./configure $XORG_CONFIG &&
 make

Install each library as follows:

 make install

Multilib

32Bit

Three libraries require patching. All three patches originate from upstream. Patch xtrans before building.

 patch -Np1 -i ../xtrans-Template:Xtrans-Version-setuid-1.patch

Patch libX11 before building.

 patch -Np1 -i ../libX11-Template:LibX11-Version-setuid-1.patch

Patch libXfont before building.

patch -Np1 -i ../libXfont-Template:LibXfont-Version-cidfonts-1.patch

Compile the library.

PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" CC="gcc ${BUILD32}" CXX="g++ ${BUILD32}" \
./configure $XORG_CONFIG32 &&
make

Install the library.

 make install

N32

Three libraries require patching. All three patches originate from upstream. Patch xtrans before building.

 patch -Np1 -i ../xtrans-Template:Xtrans-Version-setuid-1.patch

Patch libX11 before building.

 patch -Np1 -i ../libX11-Template:LibX11-Version-setuid-1.patch

Patch libXfont before building.

 patch -Np1 -i ../libXfont-Template:LibXfont-Version-cidfonts-1.patch

Compile the library.

 PKG_CONFIG_PATH="${PKG_CONFIG_PATHN32}" CC="gcc ${BUILDN32}" CXX="g++ ${BUILDN32}" \
 ./configure $XORG_CONFIGN32 &&
 make

Install the library.

 make install

64Bit

Three libraries require patching. All three patches originate from upstream. Patch xtrans before building.

 patch -Np1 -i ../xtrans-Template:Xtrans-Version-setuid-1.patch

Patch libX11 before building.

 patch -Np1 -i ../libX11-Template:LibX11-Version-setuid-1.patch

Patch libXfont before building.

 patch -Np1 -i ../libXfont-Template:LibXfont-Version-cidfonts-1.patch

Compile the library.

PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" CC="gcc ${BUILD64}" CXX="g++ ${BUILD64}" \
./configure $XORG_CONFIG64 &&
make

Install the library.

make install

Semi-Automated Build

These automated build instructions assume that you are using subdirectories as discussed in the introduction. You must also have an unaltered copy of lib-7.1.wget in the main working directory (xc). This file lists each library in an order that ensures dependencies are satisfied.

After entering the lib subdirectory and downloading the tarballs, unpack the packages:

 for i in *.tar.bz2; do
   tar xvf $i;
 done

Patch three libraries:

 cd libX11* &&
 patch -Np1 -i ../libX11-Template:LibX11-Version-setuid-1.patch &&
 cd ../xtrans* &&
 patch -Np1 -i ../xtrans-Template:Xtrans-Version-setuid-1.patch &&
 cd ../libXfont* &&
 patch -Np1 -i ../libXfont-Template:LibXfont-Version-cidfonts-1.patch &&
 cd ..

Non-Multilib

Build and install each library:

 for dir in `sed "s/.tar.bz2//g" ../lib-7.1.wget`; do
   cd ${dir} &&
   ./configure $XORG_CONFIG &&
   make &&
   make install &&
   cd ..;
 done

Multilib

Build and install each library:

 for dir in `sed "s/.tar.bz2//g" ../lib-7.1.wget`; do
    cd ${dir} &&
    PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" CC="gcc ${BUILD32}" CXX="g++ ${BUILD32}" \ 
   ./configure $XORG_CONFIG32 &&
   make &&
   make install &&
   make distclean &&
   PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" CC="gcc ${BUILD64}" CXX="g++ ${BUILD64}" \
   ./configure $XORG_CONFIG64 &&
   make &&
   make install &&
   cd ..;
 done

Next install libdrm

Contents

Each Xorg library installs one or more set of libraries (*.so,la,a) files. Rather than listing all of the files installed, a listing of the 44 library packages follows.

The interested party can issue the following 'make install' command to create a complete list of files installed and their installed location in the main working directory (xc):

 make install 2>&1 | tee ../../<name_of_lib>.files

The 44 library packages, listed in build order, with a short description are:

xtrans: transport (protocol) table. Contains a definition for every transport (protocol) family. All operations that can be made on the transport go through this table.
libXau: main interface to the X11 authorization handling, which controls authorization for X connections, both client-side and server-side.
libXdmcp: main interface to the X11 display manager control protocol library, which allows for remote logins to display managers.
libX11: main client interface to the X Window System, and is otherwise known as 'Xlib'. It provides a complete API for the basic functions of the window system.
libXext: provides an X Window System client interface to several extensions to the X protocol. libXext also provides a small set of utility functions to aid authors of client APIs for X protocol extensions.
libAppleWM:
libWindowsWM:
libdmx: interface to the DMX extension for X, which allows a single server to be set up as a proxy spanning multiple servers -- not unlike Xinerama across discrete physical machines. It can be reconfigured on the fly to change the layout, and it is presented as a single logical display to clients. libdmx allows clients to configure the layout of DMX servers by adding and removing screens, input devices, et al.
libfontenc: font encodings library.
libFS provides various functions useful to X11 font servers, and clients connecting to font servers. It is not used outside of these implementations.
libICE: the inter-client exchange library.
liblbxutil: contains header files and documentation for the XFIXES extension.
liboldX: association table libraries.
libSM: provides the main interface to the X11 Session Management library, which allows for applications to both manage sessions, and make use of session managers to save and restore their state for later use.
libXt: provides the X Toolkit Intrinsics, an abstract widget library upon which other toolkits are based. Xt is the basis for many toolkits, including the Athena widgets (Xaw), and LessTif (a Motif implementation).
libXmu: provides a set of miscellaneous utility convenience functions for X libraries to use.
libXpm: provides support and common operation for the XPM pixmap format, which is commonly used in legacy X applications. XPM is an extension of the monochrome XBM bitmap specified in the X protocol.
libXp: provides public APIs to allow client applications to render to non-display devices, making use of the X Print Service.
libXaw: provides the original version of Xaw, the Athena Widgets tookit, which is largely used by legacy X applications. Within the Xaw series, version 6 is itself considered deprecated; version 7 is in most common usage. In general, use of a more modern toolkit such as GTK+ is recommended.
libXfixes: provides an X Window System client interface to the 'XFIXES' extension to the X protocol. It provides support for Region types, and some cursor functions.
libXcomposite: provides an X Window System client interface to the Composite extension to the X protocol. The Composite extension allows clients called compositing managers to control the final drawing of the screen. Rendering is done into an off-screen buffer.
libXrender: X Rendering Extension (Render) introduces digital image composition as the foundation of a new rendering model within the X Window System. Rendering geometric figures is accomplished by client-side tesselation into either triangles or trapezoids. Text is drawn by loading glyphs into the server and rendering sets of them. The Xrender library exposes this extension to X clients. This package provides a static library and C header files.
libXdamage: provides an X Window System client interface to the DAMAGE extension to the X protocol. The Damage extension provides for notification of when on-screen regions have been 'damaged' (altered).
libXcursor: header files and a static version of the X cursor management library are provided by this package.
libXevie: provides an X Window System client interface to the EvIE extension to the X protocol. The EvIE (Event Interception Extension) allows for clients to be able to intercept all events coming through the server and then decide what to do with them, including being able to modify or discard events.
libXfont: libraries for different font types.
libXfontcache:
libXft: provides a client-side font API for X applications, making the FreeType font rasterizer available to X clients. Fontconfig is used for font specification resolution. Where available, the RENDER extension handles glyph drawing; otherwise, the core X protocol is used.
libXi: provides an X Window System client interface to the XINPUT extension to the X protocol. The Input extension allows setup and configuration of multiple input devices, and will soon allow hotplugging of input devices; to be added and removed on the fly.
libXinerama: provides an X Window System client interface to the XINERAMA extension to the X protocol. The Xinerama (also known as panoramiX) extension allows for multiple screens attached to a single display to be treated as belonging together, and to give desktop applications a better idea of the monitor layout. Required for dual monitor support.
libxkbfile: provides an interface to read and manipulate description files for XKB, the X11 keyboard configuration extension.
libxkbui: provides an interface to easily present XKB layouts as graphical widgets.
libXprintUtil: provides utility Xpu APIs allowing client applications to access and manipulate information about printer capabilities from an Xprint server.
libXprintAppUtil: provides utility Xpau APIs allowing client applications to access information about and control Xprint jobs from an Xprint server.
libXrandr: provides an X Window System client interface to the RandR extension to the X protocol. The RandR extension allows for run-time configuration of display attributes such as resolution, rotation, and reflection.
libXres: provides an X Window System client interface to the Resource extension to the X protocol. The Resource extension allows for X clients to see and monitor the X resource usage of various clients (pixmaps, et al).
libXScrnSaver:
libXTrap: provides an interface to the DEC-XTRAP extension, which allows for capture and synthesis of core input events.
libXtst: provides an X Window System client interface to the Record extension to the X protocol. The Record extension allows X clients to synthesise input events, which is useful for automated testing.
libXv: provides an X Window System client interface to the XVideo extension to the X protocol. The XVideo extension allows for accelerated drawing of videos. Hardware adaptors are exposed to clients, which may draw in a number of colourspaces, including YUV.
libXvMC: provides an X Window System client interface to the XVideo-MotionCompensation extension to the X protocol. The XVideo-MotionCompensation extension allows for further accelerated drawing of videos. Video data may be sent at earlier stages of the decoding pipeline than raw YUV data.
libXxf86dga: provides the XFree86-DGA extension, which allows direct graphics access to a framebuffer-like region, and also allows relative mouse reporting, et al. It is mainly used by games and emulators for games.
libXxf86misc: provides an interface to the XFree86-Misc extension, which allows client applications to query the current keyboard and mouse settings of the running XFree86-based (XFree86, Xorg) server.
libXxf86vm: provides an interface to the XFree86-VidModeExtension extension, which allows client applications to get and set video mode timings in extensive detail. It is used by the xvidtune program in particular.